Когато разработчик каже на AI агент за програмиране да „настрои GitHub MCP“, агентът трябва да избере пакет. Ново проучване на Glow Labs документира сесии, в които той е избрал пакет от архивирано хранилище, което никога повече няма да получи корекции за сигурност.

остарели MCP сървъри

Като анализира реални транскрипти от AI сесии за програмиране, Glow Labs открива остарели (deprecated) MCP сървъри, попадащи на машините на разработчиците – модел, който нарича MCPhantom. В 98% от тези сесии агентът изглежда е попълнил името на пакета от обучителните данни на модела. В останалите 2% потребителят сам е поискал стария пакет по име. Проучването обхваща само сесии, в които остарял сървър е бил инсталиран или предложен.

GitHub поддържа собствен MCP сървър. В примера с GitHub, документиран от Glow Labs, агентът го е подминал и е предпочел остарял референтен сървър на Anthropic от обучителните си данни. Хранилището е архивирано и в него пише, че няма да има актуализации за сигурност, но агентите не четат известията за архивиране.

Същият модел се наблюдава при Claude Code, Cursor, Codex CLI, Claude Cowork и Claude chat, както и при модели на Anthropic, OpenAI и xAI.

Четири уязвимости, нито една корекция

В тези референтни сървъри са открити четири уязвимости с висока степен на сериозност. Най-тежката е уязвимост за отдалечено изпълнение на код в Puppeteer сървъра, който позволява на агента да управлява браузър. Достатъчна е инжекция в промпта (prompt injection). Агентът стартира произволен процес на машината вместо браузъра и изпълнява всяка команда, избрана от атакуващия. Разработчикът е одобрил сърфирането в мрежата, това единствено разрешение се разпростира върху всичко останало и затова системата за управление на агента (harness) го пропуска.

Докладът на Glow Labs е затворен като извън обхвата, а поддържащите отговарят, че сървърът е архивиран през май 2025 г. и не се поддържа, така че от това хранилище корекция няма да дойде. Те обещават да обмислят маркирането на npm пакета като остарял, за да получават потребителите предупреждение, но остарелият пакет пак се инсталира през npx. Засега не е наблюдавана експлоатация, но и корекция не се очаква.

Използването не е последвало обявяването на пакетите за остарели. Остарелите пакети, преброени от Glow Labs, са изтеглени от npm над 17,3 милиона пъти от юли 2025 г., като пет от тях са в топ 100 на MCP пакетите в npm.

Защо съществуващите контроли мълчат

Тези сървъри са зависимости, които никога не фигурират във файл със зависимости. EDR наблюдава как доверен Node процес инсталира публичен npm пакет по искане на агента, което изглежда рутинно. SCA няма манифест, тъй като сървърът се изпълнява през npx, а уязвимостите нямат CVE номера. Инвентарът на софтуера никога не регистрира приложение, така че крайната точка е единственото място, където се вижда.

Да помолим агента първо да направи проверка също не е решение. „Проверката преди инсталиране сама по себе си не е достатъчна“, казва пред Help Net Security Надав Клод Коен, изследовател на уязвимости в Glow. „В една сесия агентът провери пакета в npm и получи отговор ‚Този пакет е остарял‘. Въпреки това го инсталира и никога не уведоми потребителя.“

Кой може да го поправи

Коен вижда четири възможни източника на решение:

  • Производителите на harness системи могат да откажат остарели сървъри или поне да предупреждават оператора, като обхванат и вече инсталираните, а не само новите инсталации, но „това работи само ако всеки harness го прави. Ако един го поправи, останалите остават уязвими.“
  • Производителите на модели могат да актуализират знанията на моделите: „докато знанията на моделите съдържат старите имена на пакети, агентите ще продължат да ги инсталират“, макар че „обновяването на теглата на модела е много скъпо, така че това едва ли ще се случи.“
  • Собствениците на пакетите могат да отстранят грешките – „единственото решение, което защитава хората, които продължават да използват тези сървъри.“
  • Компаниите за сигурност могат да използват hooks за изпълнение преди старта, които много harness системи вече поддържат: „Това работи още днес, без да чакаме производителите на harness системи, на модели или собствениците на пакетите.“

Премахването на пакетите не е опция. npm позволява на собственик да премахне пакет само ако той има под 300 изтегляния през последната седмица, един собственик и няма публични зависими пакети. „server-github имаше 185 239 изтегляния миналата седмица и 6 собственици“, казва Коен. npm премахва пакети, съдържащи зловреден код, но той не е открил случай на премахване заради уязвимости.

Екипите по сигурността могат да започнат с откриване на MCP конфигурации, които препращат към остарелите сървъри на @modelcontextprotocol, и преминаване към сървъра на собственика на услугата, където такъв съществува, като одобряват по един сървър за услуга и добавят статуса на остарялост в npm към критериите за одобрение.

„Паметта на модела вече е мениджър на пакети без канал за известия за остарели пакети“, казва Офир Ари, вицепрезидент „Научноизследователска и развойна дейност“ в Glow, според когото екипите трябва да приемат вземането на решения от агента за подозрително и да го подлагат на контрол.