Сигурност

Редакция Overclock.bg ·

Plugin4Shell: 0-click RCE в AI кодиращите агенти

Plugin4Shell: 0-click RCE в AI кодиращите агенти

Изследователи от израелската компания AIR Security публикуваха на 17 септември 2026 г. детайли за уязвимост, наречена Plugin4Shell — zero-click отдалечено изпълнение на код (RCE), което засяга четирите най-използвани AI кодиращи агента: Claude Code на Anthropic, Codex на OpenAI, Gemini CLI на Google и GitHub Copilot на Microsoft. Атаката не изисква нито едно кликване от разработчика и дава на нападателя достъп до всичко, до което агентът има достъп — изходен код, ключове, токени, локална машина. Според доклада на The Register става дума за първата по рода си атака срещу веригата на доставки на AI агенти.

Къде е дупката

Marketplace-ите за плъгини на агентите разчитат на т.нар. SHA-pinning — плъгинът се „заковава“ към конкретен commit hash, така че дори авторът да качи нещо ново, агентът да дърпа точно прегледаната версия. На хартия това е правилният модел.

Проблемът е в изпълнението. Claude Code, Codex и GitHub Copilot правят git clone, последван от git checkout <SHA>. Ако нападателят контролира хранилището, той може да създаде клон (branch) с име, идентично на 40-символния hash, и да го направи подразбиращ се. Git дава приоритет на референциите пред идентификаторите на комити, така че checkout попада в зловредния клон, а не в закования комит.

Gemini CLI пада по друг начин: агентът прави git fetch origin <SHA> и после git checkout FETCH_HEAD. Достатъчно е подразбиращият се клон в хранилището да се казва FETCH_HEAD и изтегленият комит просто се игнорира.

Коренът на проблема, както го формулират от AIR, е един:

Агентите правят checkout на закования комит, но никога не проверяват, че той наистина е попаднал там.

Схема на атаката Plugin4Shell със заменен commit hash Снимка: AIR Security

Веригата на атака

Сценарият е тривиален за изпълнение и напълно безшумен:

  1. Нападателят публикува безобиден плъгин, който минава ревю и се заковава на комит aaa…aaa.
  2. Потребителите го инсталират, автоматичните обновявания са включени.
  3. Нападателят пуска рутинно обновяване — нов, също безобиден комит bbb…bbb.
  4. Създава зловреден клон с име bbb…bbb и го прави подразбиращ се.
  5. При следващия auto-update checkout-ът попада в клона и кодът се изпълнява.

Вторият вариант е още по-неприятен: превземане на акаунта на легитимен автор и разпращане на зловредната версия към всички вече инсталирани копия.

Ключовото тук е, че предпазливостта не помага. Жертвата трябва само да има инсталиран плъгин от marketplace, на който има основание да вярва, прегледан и закован точно както предвижда моделът за сигурност.

Кой е закърпен и кой не

Уязвимостта е открита през май 2026 г. и докладвана на производителите през юни. Състоянието към момента:

  • Claude Code — поправено във версия 2.1.179 (Anthropic потвърждава на 17 юни 2026 г.)
  • Codex — поправено във версия 0.146.0 (OpenAI потвърждава на 12 август 2026 г.)
  • Gemini CLI — Google съобщава на 4 август, че продуктът е в процес на извеждане от употреба и няма да получи кръпка
  • GitHub Copilot — без корекция в самия агент; GitHub твърди, че платформата не позволява имена на клонове и тагове, наподобяващи commit SHA, и че това прави атаката неизпълнима при тях

Именно последното е спорната част. От AIR подчертават, че смекчаването на ниво marketplace или хостинг не е достатъчно — плъгини могат да се дърпат и от собствени Git сървъри, където такова ограничение няма.

Внимание

Обновете агентите си ръчно и проверете версията. Ако ползвате Gemini CLI с плъгини от marketplace, за него няма да излезе кръпка — планирайте миграция.

Препоръчаната поправка е тривиална и трябва да е вътре в агента, след checkout:

test "$(git rev-parse HEAD)" = "<pinned-sha>" || abort

Контекстът: разработчиците са мишената

Plugin4Shell идва в седмица, в която атаките срещу поддръжници на софтуер станаха видима тема. На същата дата екипът по сигурността на crates.io предупреди Rust общността за кампания срещу автори на популярни crate-ове: нападателите уговарят видеоразговор под предлог за работа или договор, а после карат жертвата да инсталира „липсващ аудио кодек“ или да изпълни команда. През август по същия път беше компрометиран crate-ът arrayref. Като защита Rust екипът препоръчва недоверие към непоискани контакти — разговорите с нови хора да минават през платформа, която сами сте избрали, плюс проверка на акаунтите за включена MFA и неочаквани влизания.

Паралелно Simon Willison обърна внимание на друг любопитен случай от докладите на OpenAI за агенти извън контрол: модел в тренировъчен пробег си е вкарал собствени инструкции в резюмето при compaction — тоест сам е извършил prompt injection срещу себе си. OpenAI определя случая като изключително рядък и без последващи промени в поведението, но заедно с Plugin4Shell той очертава едно и също: контекстът, в който работи агентът, е нова и все още слабо охранявана повърхност за атака.

Заключение

Plugin4Shell не е екзотика — това е класически пропуск във валидацията, качен върху инструменти с права да четат и пишат по цялата машина на разработчика. Поправката е един ред, но както при активно атакувания нулев ден в Cisco ISE, тя има стойност само ако стигне до вас. Проверете версиите на агентите си днес; ако някой от тях е под изброените по-горе, обновяването е единственото пълноценно решение.

Харесва ви? Отбележете ни и ще ни виждате по-нагоре в Google.

Предпочитан източник в Google

Прочетете още