Обхід каталогу (path traversal, directory traversal) — вразливість, яка дає змогу читати або записувати файли поза дозволеною текою за допомогою послідовностей на кшталт ../ у шляху.
Як працює обхід каталогу
Застосунки часто будують шляхи до файлів із введення користувача: запит download?file=report.pdf перетворюється на /var/www/files/report.pdf. Якщо введення не перевіряється, зловмисник може запросити ../../../../etc/passwd або ..\..\windows\win.ini і вибратися за межі каталогу. Закодовані варіанти (%2e%2e%2f), абсолютні шляхи й архіви зі спеціально сформованими іменами файлів (Zip Slip) обходять наївні фільтри. Слабкість описано як CWE-22.
Чому це важливо
Читання довільних файлів розкриває конфігурації, вихідний код, закриті ключі, хеші паролів і дані сесій. Запис іще небезпечніший: зловмисник може підкласти веб-шелл чи перезаписати налаштування й домогтися віддаленого виконання коду. Відомі приклади:
- Fortinet FortiOS SSL VPN (CVE-2018-13379) — вразливість обходу шляху розкривала файли сесій VPN з паролями у відкритому вигляді; згодом на хакерських форумах опублікували списки десятків тисяч уражених пристроїв.
- Citrix ADC/NetScaler (CVE-2019-19781) — обхід каталогу призвів до виконання коду й масової експлуатації на початку 2020 року.
Такі помилки регулярно потрапляють до каталогу CISA Known Exploited Vulnerabilities, особливо у VPN-шлюзах, серверах передавання файлів і вебінтерфейсах керування, де публічні експлойти з’являються невдовзі після розкриття.
Як запобігти
- Не використовувати введення користувача безпосередньо у шляхах: зіставляти запити з ідентифікаторами чи білим списком імен.
- Канонізувати шлях і перевіряти, що він лишається всередині дозволеного базового каталогу.
- Запускати сервіси з мінімальними правами на файлову систему та ізолювати їх (контейнери, chroot).
- Перевіряти імена файлів в архівах перед розпакуванням.
Обхід каталогу тісно пов’язаний з іншими вразливостями обробки введення, наприклад із впровадженням коду.