Изследователи от Wiz установиха, че дефект в шест популярни ИИ асистенти за програмиране позволява на компрометиран кодов проект тихо да поеме контрола над компютъра на разработчика. Асистентът иска разрешение за редактиране на един на пръв поглед безопасен файл, но записът се насочва към критичен за сигурността файл.

Засегнатите инструменти са Amazon Q Developer, Claude Code на Anthropic, Augment, Cursor, Google Antigravity и Windsurf. Wiz нарича този модел GhostApproval и го публикува на 8 юли.

Три от шестте компании вече са пуснали корекции, две работят по тях, а Anthropic оспорва, че това е грешка. Най-уязвими са инструментите, които променят файловете, преди разработчикът да може да се намеси.

Атаката злоупотребява със стара функция в Unix, наречена символна връзка (symlink), която асистентите не проверяват. Символната връзка тихо пренасочва към друг файл на диска, така че записването в нея всъщност записва в целевия файл.

Wiz изгради злонамерено хранилище със символна връзка с име project_settings.json, която всъщност сочи към файла за SSH вписване на жертвата: ~/.ssh/authorized_keys. В README файла на хранилището се указва на асистента да добави "ред" към project_settings.json, като този ред представлява собствения SSH ключ на атакуващия, маскиран като безопасна настройка.

Ако поискате от агента да „настрои работното пространство“ или да „следва README“, той записва ключа директно през символната връзка във файла за вписване. Оттам, ако на машината работи SSH услуга, достъпна за атакуващия, той може да се впише без парола.

Втора версия на трика записва в стартовия файл на обвивката ~/.zshrc, който се изпълнява следващия път, когато отворите терминал, така че не е необходим SSH. Няма признаци тази уязвимост да е била използвана в реални атаки; Wiz я представя като проучване.

Прозорецът за одобрение показва грешна информация

Триковете със символни връзки са от десетилетия. Символната връзка е само начинът на доставка; истинският проблем е прозорецът за одобрение. При GhostApproval този прозорец подвежда.

Тествайки Claude Code, Wiz открива, че агентът вече е забелязал реалната цел в своите разсъждения, отбелязвайки, че project_settings.json е, по негови думи, „всъщност конфигурационен файл за zsh“. Въпреки това, показаният на разработчика прозорец назовава само безопасния файл.

Кликването върху Accept (Приемам) се прави с убеждението, че се редактира локален конфигурационен файл, но записът засяга стартовия файл на терминала или SSH ключовете. Wiz нарича това заобикаляне на информираното съгласие: човекът все още е в процеса на вземане на решение, но му се показва грешна информация.

Някои инструменти са още по-лоши: те изобщо прескачат тази стъпка. Windsurf записва файла на диска преди да се появят бутоните Accept и Reject, така че подканата е просто бутон за отмяна, а ключът вече е на мястото си.

Augment изобщо не показва диалогов прозорец, а Wiz демонстрира как той чете файл с идентификационни данни за AWS, намиращ се извън проекта. Инструментите, които все още показват подкана, не са по-безопасни, тъй като подканата просто назовава грешния файл.

Wiz съобщи за проблема на всички шест разработчици. Ето какво е състоянието им към момента на публикацията:

Anthropic оспори класификацията, заявявайки, че сценарият е „извън техния модел на заплахи“: разработчикът е избрал да се довери на папката при стартиране на сесията и след това е одобрил редакцията, така че решението е негово.

От шестте компании Anthropic е единствената, която твърди, че това не е грешка; три са пуснали корекции, а две работят по тях. Въпросът, който тяхната позиция повдига, е реален: докъде трябва да стигне един кодиращ агент, за да защити разработчик, който вече се е доверил на злонамерено хранилище?

Освен инсталирането на пачове, няколко навика намаляват риска. Стартирайте агента с ограничен достъп до файлове или в пясъчник/контейнер. Преглеждайте README и скритите конфигурационни файлове на хранилището, преди да позволите на агента да го настройва.

След работа в непознато хранилище проверявайте файловете, които атаката таргетира – те са извън проекта и няма да се появят в git status: вашия стартов файл на shell-а, SSH ключовете и конфигурацията на самия ИИ инструмент.

Споделен дефект, а не грешка на един доставчик

През май Adversa AI публикува SymJack, същия модел със символни връзки срещу шест кодиращи агента, включително Claude Code, Cursor, GitHub Copilot и Grok Build. Разкриването му от два независими екипа сочи към споделена слабост в дизайна, а не просто пропускане от страна на един производител.