De padvalidatie van `@tinacms/graphql`'s `FilesystemBridge` kan worden omzeild via symlinks of junctions
Platform
nodejs
Component
@tinacms/graphql
## Samenvatting `@tinacms/graphql` gebruikt string-gebaseerde padcontainmentcontroles in `FilesystemBridge`: - `path.resolve(path.join(baseDir, filepath))` - `startsWith(resolvedBase + path.sep)` Dat blokkeert simpele `../` traversal, maar het lost geen symlink- of junction-targets op. Als een symlink/junction al bestaat onder de toegestane content root, wordt een pad zoals `content/posts/pivot/owned.md` nog steeds beschouwd als "binnen" de basis, zelfs als het echte bestandssysteemtarget er buiten kan liggen. Als gevolg hiervan kunnen `FilesystemBridge.get()`, `put()`, `delete()` en `glob()` werken op bestanden buiten de bedoelde root. ## Details De huidige bridge-validatie is: ```ts function assertWithinBase(filepath: string, baseDir: string): string { const resolvedBase = path.resolve(baseDir); const resolved = path.resolve(path.join(baseDir, filepath)); if ( resolved !== resolvedBase && !resolved.startsWith(resolvedBase + path.sep) ) { throw new Error( `Path traversal detected: "${filepath}" escapes the base directory` ); } return resolved; } ``` Maar de bridge voert vervolgens echte bestandssysteem I/O uit op het resulterende pad: ```ts public async get(filepath: string) { const resolved =
Hoe te verhelpen
Geen officiële patch beschikbaar. Zoek naar tijdelijke oplossingen of monitor updates.
Bewaak uw afhankelijkheden automatisch
Ontvang meldingen wanneer nieuwe kwetsbaarheden uw projecten beïnvloeden.
Gratis beginnen