Символическая ссылка (симлинк) — объект файловой системы, который указывает на другой файл или каталог по его пути, так что программы, открывающие ссылку, незаметно перенаправляются к цели.
Как работают символические ссылки
Символическая ссылка хранит только путь к целевому объекту. В Linux и macOS её создают командой ln -s; Windows поддерживает символические ссылки через mklink, а также точки соединения NTFS (junctions) и другие точки повторного анализа (reparse points). В отличие от жёсткой ссылки, симлинк может указывать на другую файловую систему или на ещё не существующий объект. Симлинки широко используются для управления версиями ПО, общими конфигурационными файлами и структурой каталогов.
Почему символические ссылки важны для безопасности
Проблема возникает, когда привилегированная программа переходит по ссылке, созданной атакующим. Эта слабость описана как CWE-59 (Improper Link Resolution Before File Access, «следование по ссылке»). Типичные сценарии:
- Атаки на временные файлы — процесс с правами root пишет в файл с предсказуемым именем в
/tmp; атакующий заранее создаёт там симлинк на/etc/passwdили другой важный файл, и тот перезаписывается. - Time-of-check to time-of-use — файл подменяется ссылкой между проверкой безопасности и его использованием; это состояние гонки (CWE-367).
- Злоупотребление службами Windows — точки соединения и ссылки диспетчера объектов заставляют установщики, службы обновления и даже антивирусы удалять или записывать произвольные файлы с правами SYSTEM — частый путь к локальному повышению привилегий.
- Вредоносные архивы — ZIP- или tar-файлы с симлинками заставляют распаковщики записывать данные за пределы целевой папки, подобно обходу каталогов.
Как предотвратить атаки через симлинки
- В Linux не отключать параметр ядра
fs.protected_symlinks. - Создавать временные файлы безопасно (например, через
mkstemp) и открывать файлы с флагами вродеO_NOFOLLOW. - Избегать файловых операций привилегированных служб в каталогах, доступных пользователям на запись.
- Проверять цели ссылок при распаковке архивов.





