Prechádzanie adresárov (path traversal)

Aktualizované Sep 22, 2026

Prechádzanie adresárov je bezpečnostná zraniteľnosť, ktorá umožňuje nedôveryhodnému vstupu vybrať súbor alebo adresár nachádzajúci sa mimo zamýšľanej hranice aplikácie. Manipuláciou so segmentmi ciest, oddeľovačmi, kódovaním či absolútnymi cestami môže útočník čítať alebo upravovať citlivé súbory, ktoré nemal mať možnosť vôbec dosiahnuť.

K prechádzaniu adresárov dochádza vtedy, keď vstup do aplikácie ovplyvňuje cestu v súborovom systéme a výsledná cesta unikne z adresára alebo sady objektov, ktoré mala funkcia používať. Vstup môže obsahovať segmenty nadradeného adresára, absolútne cesty, alternatívne oddeľovače alebo kódované tvary. Hlavným problémom je, že aplikácia považuje používateľom riadený názov za dôveryhodné umiestnenie.

Cesty k súborom vstupujú cez bežné funkcie

Routy na sťahovanie, nahrávanie súborov, rozbaľovanie archívov, náhľady dokumentov, výber šablón, prehliadače logov, importovacie nástroje a funkcie zálohovania, tie všetky pracujú s názvami, ktoré sa môžu stať cestami. Kľúče cloudových objektov a virtuálne súborové systémy môžu mať podobné problémy s hranicami, aj keď nie je vystavený žiadny lokálny disk.

Pri audite vibe-coded softvéru sa vyhľadáva každá operácia vytvárania ciest naprieč celou útočnou plochou. Vygenerovaný kód môže v jednom spracovaní normalizovať názov nahrávaného súboru, no v náhľade alebo pri úlohe čistenia (cleanup job) môže priamo spojiť nedôveryhodný názov.

FunkciaNedôveryhodná hodnotaHranica na overenie
SťahovanieNázov súboru alebo kľúč záznamuSchválený koreň úložiska
NahrávaniePôvodný názov a cieľVygenerované umiestnenie na strane servera
Rozbalenie archívuNázvy položiek v archíveAdresár na rozbalenie
Šablóna alebo reportVybraný názov šablónyPevný zoznam povolených hodnôt (allow-list)
Úloha čisteniaUložená cesta alebo kľúč objektuRozsah tenanta a úložiska

Samotná normalizácia nepredstavuje autorizáciu

Normalizácia ciest prevádza oddeľovače a relatívne segmenty do jednotnej podoby. Aplikácia potom musí overiť, či výsledok po vyriešení cesty zostáva vo vnútri schváleného koreňového adresára. Kontrola surového reťazca pred dekódovaním alebo normalizáciou môže prehliadnuť ekvivalentnú reprezentáciu cesty.

Validácia vstupov by mala obmedziť identifikátory súborov na formát, ktorý daná funkcia potrebuje. Bezpečnejší návrh oddeľuje používateľské identifikátory od reálnych úložných ciest a rieši ich prostredníctvom metadát vlastnených aplikáciou. Autorizácia zostáva taktiež nevyhnutná: cesta môže zostať v koreni úložiska, no napriek tomu môže ukazovať na súbor iného zákazníka.

Čo audit kontroluje

Preskúmanie sleduje odkazy na súbory a objekty od vstupu až po samotnú operáciu:

  1. Lokalizácia vytvárania ciest: Vyhľadajte spájanie (joins), vyriešenie ciest (resolves), archivačné knižnice, klientov úložísk a súborové API.
  2. Identifikácia riadených segmentov: Zaznamenajte každý názov, kľúč, prefix a cieľ ovplyvnený externými dátami.
  3. Jednorazová normalizácia: Určite, kedy dochádza k dekódovaniu a vyriešeniu kanonickej cesty.
  4. Vynútenie obmedzenia: Overte výslednú cestu voči zamýšľanému koreňu alebo schválenej sade objektov.
  5. Kontrola operácie: Posudzujte oddelene čítanie, zápis, presuny, mazanie, rozbaľovanie a spúšťanie.

Dôkazy zahŕňajú vedľajšie účinky

Testy by mali pokrývať alternatívne oddeľovače, kódované segmenty, absolútne cesty, vnorené archívy a platné názvy v blízkosti hranice. Očakávaným výsledkom je kontrolované odmietnutie bez akéhokoľvek čiastočného vytvorenia súboru, prepísania, odhalenia alebo čistenia mimo povoleného rozsahu.

Dôležitá je aj identita za behu (runtime identity). Reštriktívne oprávnenia v súborovom systéme a úložisku obmedzujú dôsledky chýbajúcej kontroly v aplikácii. Nenahrádzajú obmedzenie prístupu (containment), ale zmenšujú množinu súborov, ktoré môže proces dosiahnuť. Audit zaznamenáva obe tieto vrstvy, aby sa produkčný softvér vygenerovaný rýchlo nespoliehal na jedinú kontrolu reťazca pri ochrane hraníc úložiska.