top of page

MCP сървър може да отклони OAuth данните на клиента

30.09
време за четене: 3 мин.
Официалният Python SDK за протокола MCP е изпращал данните за достъп на клиента към адрес, който отсрещната страна сама е посочвала. Съобщението за уязвимостта излезе на 28 септември, а поправените версии са 1.30.0 и 2.2.0. При два от доставчиците на автентикация обновяването само по себе си не променя нищо.

В нощен сървърен коридор мъж подава запечатан плик на робот, който е излязъл пред него, а зад гърба му втори съвсем еднакъв робот протяга ръка твърде късно и гледа изненадано, защото пликът е бил за него

Какво е позволявала уязвимостта


Засегнати са версии от 1.9.1 до 1.29.1 и от 2.0.0 до 2.1.1 на пакета mcp. Поправените версии са 1.30.0 за старата линия и 2.2.0 за новата.


Изтичали са три неща наведнъж: тайният ключ на клиента, кодът за оторизация и проверочният ключ на PKCE - тоест целият набор, с който се получава и подновява достъп. Тайният ключ е дълготраен, което прави последствието трайно, а не еднократно.


Оценката по CVSS зависи от начина на работа. Откривателят дава 7,5 за машинните доставчици, които работят без човек в процеса, и 6,5 за интерактивния. Официалното съобщение за сигурност на проекта публикува 7,5. Към 29 септември не е присвоен CVE номер, което двата източника потвърждават поотделно.


Защо един MCP сървър може да пренареди потока


Механизмът стъпва на отстъпката, която протоколът прави заради съвместимост. Клиентът първо пита по съвременния път кой сървър отговаря за автентикацията. Злонамерен MCP сървър връща 404 на този въпрос и клиентът минава по резервния път, където иска настройката директно от него.


Двете липсващи проверки правят останалото. SDK-то не е проверявало името на издателя по всеки от пътищата, а вече запазените или предварително подадени данни за достъп не са били обвързани със сървъра, на който принадлежат. Проверката не се е провалила, а е била прескочена, защото стойността, срещу която трябва да сравни, е била празна. Оттам нататък адресите избира нападателят.


За човека отсреща нищо не изглежда нередно: страницата за вход е тази на истинския доставчик. Данните обаче пътуват на друго място.


Нашият анализ


Тук има подробност, която ще подведе повече екипи от самата уязвимост. При двата машинни доставчика, които работят с клиентски ключ или с подписан ключ, обновяването до поправената версия не променя поведението, докато в настройката не се подаде и името на сървъра, на който данните принадлежат. Пропуснато, то засега само предупреждава, а от следващата голяма версия става задължително.


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


Втората подробност е за доверието. Уязвимостта е докладвана от фирмата за сигурност Cycode, а съобщението за сигурност на проекта кредитира осем докладващи. За по-старите версии производителят не предлага заобикаляне освен едно: да се свързвате само със сървъри, на които имате основание да се доверите. Практически това е признание, че на ниво код въпросът не е бил решим.


Какво може да се направи


Проверката е кратка и си струва да се направи днес. Установете коя версия на пакета mcp върви в средите ви и я вдигнете до 1.30.0 или 2.2.0. Ако ползвате машинен доставчик, добавете и името на сървъра в настройката - без него обновяването не носи защита.


След това изчистете запазените регистрации на клиента, за да се регистрира наново. Ако някой от тези клиенти се е свързвал със сървър, който не контролирате, сменете тайния ключ и отменете издадените токени при доставчика на автентикация. Едно свързване стига, за да е изтекъл ключът.


По-широкият извод е за реда на работа. Списъкът от външни MCP сървъри в един екип расте по-бързо от прегледа им, а протоколът не различава любезен сървър от злонамерен. Същата логика важи и за правата, които се дават на автоматизациите: за това писахме в по-ранна наша новина.


Заключение


Уязвимостта е поправена, но поправката не се прилага сама при всички. Екипите, които работят машина към машина, трябва да добавят и една стойност в настройката, иначе новата версия им дава само усещане за сигурност. А списъкът с външни сървъри, към които се свързва един клиент, отсега е част от повърхността за атака.


Помагаме на български фирми и екипи да преглеждат кои външни услуги получават достъп до данните им и с какви права. Услугите ни покриват одит, оценка на готовност, обучение на екипи и имплементация на специализирани AI автоматизации за всяка организация. Препоръчваме консултация при въвеждане на външни MCP сървъри в работен процес, който вече обработва реални данни. [Свържете се с нас за консултация: academy@razvivai.se]


Източници



Този текст е създаден в съавторство с AI и е редактиран от екипа на РазвивAI се. Илюстрацията към публикацията е генерирана с AI.

Коментари


bottom of page