Атака GhostTree показывает неприятную вещь про Windows: чтобы спрятать вредоносный файл, злоумышленнику не нужен ни эксплойт ядра, ни права администратора. Достаточно обычных NTFS junctions и пары команд, после которых Microsoft Defender может зависнуть на сканировании папки и так и не добраться до malware. Для русскоязычных команд это не академический трюк, а прямой повод пересмотреть, как EDR, Defender и внутренние средства контроля обходят файловую систему.
О технике сообщает BleepingComputer со ссылкой на исследование Varonis, опубликованное 16 июня 2026 года. Суть в злоупотреблении junctions, то есть NTFS reparse points, которые позволяют одной директории указывать на другую. Обычно это легитимный механизм для совместимости со старым софтом, миграции данных и прочих скучных задач администраторов. Но у него есть важная для атакующего особенность: создать junction может любой пользователь, если у него есть право записи в целевую папку. Администратор для этого не нужен.
Дальше начинается самое интересное. Если вложенную папку направить junction-ссылкой обратно на родительскую директорию, получится логическая петля. Varonis называет базовую версию этого приема GhostBranch. Допустим, в каталоге лежит файл program.exe, а рядом создается junction Child, указывающий обратно на Parent. Тогда один и тот же исполняемый файл становится доступен по бесконечному числу корректных путей: с одним Child, с двумя, с десятью и так далее, пока не упрешься в лимит длины пути Windows. Формально это разные пути, фактически один и тот же объект. Если защитный продукт рекурсивно обходит дерево каталогов, он рискует ходить по кругу, пока проверка не зависнет или не упрется в внутренние ограничения.
GhostTree делает эту схему заметно злее. Вместо одной дочерней junction создаются две или больше, и каждая ведет обратно в родительскую директорию. В примере Varonis используются короткие имена вроде P и B. На каждом уровне обхода сканер может пойти либо в P, либо в B, а обе ветки снова возвращают его в ту же исходную папку. Получается не просто цикл, а разрастающееся дерево путей. При традиционном ограничении Windows в 260 символов глубина остается конечной, но разнообразие путей становится астрономическим. Для двух вариантов на каждом уровне при глубине около 126 каталогов число комбинаций оценивается как 2^126, то есть примерно 8,5 x 10^37. Это не количество реальных файлов на диске, а количество валидных путей к одному и тому же содержимому. Этого достаточно, чтобы любой наивный рекурсивный обход выглядел как плохая шутка над движком сканирования.
Важная деталь: речь не о чистой теории. Исследователи пишут, что протестировали технику против Windows Defender и подтвердили возможность обхода папочного сканирования. Сценарий выглядит просто: злоумышленник кладет вредоносный файл в родительскую директорию, рядом строит GhostTree-структуру, а затем защитный инструмент пытается рекурсивно проверить каталог и не завершает обход. В результате сам malware остается непроверенным. Varonis также утверждает, что тот же класс проблемы потенциально касается и других продуктов, если они рекурсивно сканируют файловую систему без жесткой защиты от циклов и аномальной ветвистости. Но подтвержденный кейс в публикации один: Microsoft Defender.
Отдельный сюжет здесь связан с реакцией Microsoft. По словам Varonis, после сообщения об уязвимом поведении компания сначала закрыла тикет с формулировкой, что обход Defender сам по себе не пересекает границу безопасности. Логика знакомая: не каждое нежелательное поведение классифицируется как security boundary bypass. Но на практике история для защитников звучит менее утешительно: технику все же исправили. Это косвенно показывает, что проблема была не только в терминологии, но и в эксплуатационной реальности. Когда пользователь без повышенных прав способен превратить папку в ловушку для сканера, спор о классификации интересует в основном тех, кто пишет формальные ответы в баг-трекере.
Для разработчиков и ИБ-команд здесь несколько неприятных выводов. Во-первых, доверять одному лишь on-demand или scheduled scanning уже давно наивно, а GhostTree лишь добавляет еще один способ сломать эту модель без сложной разработки malware. Во-вторых, файловая система Windows до сих пор хранит много исторических компромиссов, и junctions с reparse points регулярно всплывают не только в админских сценариях, но и в техниках обхода защиты. В-третьих, защитные продукты должны не просто рекурсивно читать директории, а осмысленно работать с графом путей: отслеживать циклы, ограничивать глубину, нормализовать канонический путь к объекту, считать количество повторных переходов через reparse points и прерывать аномальные обходы раньше, чем они съедят все время сканера.
Для бизнеса практический смысл еще проще. Если у сотрудников или подрядчиков есть возможность писать в рабочие каталоги, а мониторинг ограничен классическим сканированием на endpoint, появляется слепая зона, созданная штатными средствами Windows. Это касается не только заражения workstation, но и любых процессов, где каталоги автоматически проверяются перед доставкой артефактов, резервным копированием, DLP-анализом или внутренними compliance-процедурами. Там, где софт считает дерево директорий добросовестным, атака GhostTree напоминает: перед вами не дерево, а граф с петлями, и относиться к нему нужно соответственно.
Главный вопрос после этой истории не в том, можно ли закрыть конкретный прием патчем Defender. Гораздо важнее, сколько корпоративных инструментов вокруг Windows все еще обходят файловую систему так, будто на дворе середина нулевых и junctions существуют только для совместимости со старым приложением. Атака GhostTree неприятна именно потому, что использует не экзотику, а давно штатный механизм ОС, который слишком многие продукты до сих пор считают безобидной деталью.