CVE-2026-2256: luka w MS-Agent (ModelScope) pozwala na wykonanie poleceń systemowych i potencjalne pełne przejęcie hosta

securitybeztabu.pl 2 dni temu

Wprowadzenie do problemu / definicja luki

MS-Agent to otwartoźródłowy framework ModelScope do budowy agentów AI, które nie tylko generują tekst/kod, ale też wykonują akcje przez narzędzia (tools) – m.in. integracje, wyszukiwanie czy operacje na systemie.

Właśnie ta „sprawczość” (agency) jest sednem problemu: podatność CVE-2026-2256 dotyczy mechanizmu wykonywania poleceń przez tzw. Shell tool. Błąd w sanitizacji i walidacji wejścia może doprowadzić do command injection, czyli wymuszenia wykonania niezamierzonych poleceń systemowych w kontekście procesu agenta.

W skrócie

  • Identyfikator: CVE-2026-2256
  • Klasa błędu: command injection (w praktyce: prompt-derived input → polecenie shell)
  • Dotknięte wersje: wg rekordu CVE – ms-agent v1.6.0rc1 i wcześniejsze
  • Scenariusz ataku: złośliwa treść w danych, które agent konsumuje (prompt/dokument/log/research input), może skłonić agenta do użycia Shell tool i „przemycić” payload omijający filtr bezpieczeństwa
  • Status koordynacji/patcha: CERT/CC wskazuje, iż nie uzyskano patcha ani stanowiska vendora w trakcie koordynacji (stan na publikację noty)
  • CVSS (wg wzbogacenia w rekordzie CVE): 6.5 (Medium)
    • Uwaga praktyczna: realny wpływ bywa większy, jeżeli agent działa z szerokimi uprawnieniami lub ma dostęp do sekretów/sieci wewnętrznej (typowe w środowiskach dev/ops).

Kontekst / historia / powiązania

W ostatnich 12–18 miesiącach rośnie liczba incydentów i badań pokazujących, iż prompt injection w agentach to nie „zabawny jailbreak”, tylko wektor na system. Różnica jest fundamentalna:

  • Chatbot bez narzędzi co najwyżej „powie coś złego”.
  • Agent z narzędziami może coś zrobić: wykonać polecenie, pobrać plik, wysłać dane, zmienić konfigurację.

Dobrym punktem odniesienia jest klasa ataków indirect prompt injection (pośrednie wstrzyknięcie instrukcji do treści typu PDF/HTML), gdzie model nie odróżnia poleceń użytkownika od „instrukcji” zaszytych w oglądanych materiałach. HiddenLayer pokazał to na przykładzie frameworka „Computer Use” (agent sterujący środowiskiem i shellem), gdzie odpowiednio spreparowana treść potrafi doprowadzić do destrukcyjnych akcji w systemie.

CVE-2026-2256 wpisuje się w ten sam nurt: atakujący kontroluje treść → agent interpretuje ją jako część planu działania → narzędzie wykonuje komendy.

Analiza techniczna / szczegóły luki

Gdzie jest błąd?

Z noty CERT/CC wynika, iż Shell tool w MS-Agent opiera się na metodzie check_safe() z regexową denylistą (blacklistą) mającą blokować „niebezpieczne” komendy. Taki wzorzec obrony jest kruchy: da się go obchodzić przez warianty składni powłoki, łączenie poleceń, encodowanie/obfuskację czy inne semantyki parsowania przez shell.

SecurityWeek podkreśla, iż mimo wielu warstw walidacji, sposób w jaki powłoka interpretuje końcowy łańcuch poleceń może spowodować ominięcie filtrów i wykonanie logiki sterowanej przez atakującego.

Jak wygląda typowy łańcuch ataku (high-level)?

  1. Agent pobiera/analizuje treść z zewnątrz (np. dokument, logi, wyniki researchu).
  2. W treści zaszyte są instrukcje lub fragmenty tekstu, które model „wplata” w generowane polecenie.
  3. Model decyduje się użyć Shell tool (bo „to najszybszy sposób”).
  4. check_safe() przepuszcza payload (obejście denylisty/regex).
  5. Shell wykonuje polecenie na hoście z uprawnieniami procesu agenta.

Dlaczego to jest szczególnie groźne w praktyce?

Bo agenty często działają:

  • w środowiskach developerskich/CI z dostępem do repozytoriów i tokenów,
  • na maszynach analitycznych z danymi,
  • z możliwością wykonywania narzędzi sieciowych (curl/wget/git),
  • czasem w kontekście kont uprzywilejowanych „bo wygodniej”.

W takim układzie command injection z poziomu narzędzia jest blisko klasycznego RCE „z premią”: agent sam pomaga atakującemu dobrać kroki i narzędzia.

Praktyczne konsekwencje / ryzyko

SecurityWeek opisuje możliwe skutki jako pełne przejęcie hosta w zależności od uprawnień procesu: odczyt sekretów (API keys/tokens/configi), modyfikacja plików roboczych, zrzut danych, drop payloadu, persystencja i pivot do usług wewnętrznych lub systemów sąsiednich.

CERT/CC dodaje, iż podatność może ujawnić się także w „niewinnych” workflowach (np. podsumowanie dokumentu), jeżeli agent wchodzi w interakcję z atakującym kontrolowaną treścią.

Rekomendacje operacyjne / co zrobić teraz

Jeśli używasz MS-Agent lub podobnych frameworków agentowych z narzędziami wykonawczymi, potraktuj to jako checklistę „hardeningu”:

  1. Wyłącz Shell tool tam, gdzie nie jest absolutnie konieczny.
    Najskuteczniejsza kontrola to redukcja powierzchni ataku.
  2. Izoluj wykonanie narzędzi (sandbox/containery/VM):
    Uruchamiaj agenta i szczególnie narzędzia OS w odseparowanym środowisku (oddzielny kontener/VM, ograniczone mounty, brak dostępu do hosta).
  3. Least privilege + osobne tożsamości:
    • osobny użytkownik systemowy bez uprawnień admin,
    • brak dostępu do katalogów domyślnie wrażliwych,
    • minimalne uprawnienia do sieci (egress filtering).
  4. Zastąp denylisty allowlistą (jeśli shell musi zostać):
    Zamiast „blokować złe”, dopuszczaj tylko konkretne, parametryzowane komendy (np. wywołania jednego wrappera z bezpiecznymi argumentami). CERT/CC wprost wskazuje, iż denylist/regex jest niewystarczający.
  5. Twarde granice danych wejściowych:
    • traktuj dokumenty/logi/research input jako niezaufane,
    • sanitizuj/normalizuj treść zanim trafi do kontekstu modelu,
    • rozważ „content firewall”/detektory prompt injection.
  6. Human-in-the-loop dla akcji wysokiego ryzyka:
    • wymagaj jawnej akceptacji operatora przed wykonaniem komend,
    • loguj i podpisuj (tamper-evident) plan i wykonane kroki.
  7. Sekrety poza zasięgiem procesu:
    • krótkotrwałe tokeny,
    • brak plików z kluczami w workspace,
    • ograniczenia IAM (scoping), rotacja.

W notach o CVE podkreśla się też prostą zasadę: uruchamiaj MS-Agent tylko tam, gdzie treści, które agent „połyka”, są zaufane/zweryfikowane – dopóki nie ma jednoznacznego patcha lub twardych mechanizmów izolacji.

Różnice / porównania z innymi przypadkami

CVE-2026-2256 vs „indirect prompt injection”

  • Indirect prompt injection: złośliwa instrukcja ukryta w dokumencie/stronie wpływa na zachowanie agenta.
  • CVE-2026-2256: dodatkowo dochodzi warstwa techniczna – filtr/denylista w Shell tool jest obchodzona, więc agent może wykonać polecenie choćby wtedy, gdy teoretycznie miał je odrzucić.

„Confused deputy” w praktyce

HiddenLayer opisuje ryzyko „confused deputy”: model działa z uprawnieniami użytkownika/systemu, ale daje się sterować obcą treścią.
W MS-Agent ten wzorzec jest szczególnie niebezpieczny, bo narzędzie shell jest z definicji „mostem” do systemu operacyjnego.

Podsumowanie / najważniejsze wnioski

  • CVE-2026-2256 to prompt-derived command injection w ekosystemie agentów: złośliwa treść może doprowadzić do wykonania komend systemowych przez Shell tool.
  • Problem pogłębia fakt, iż kontrola bezpieczeństwa bazuje na regexowej denyliście, którą da się obejść.
  • Nawet jeżeli formalny scoring w rekordzie CVE wygląda „umiarkowanie”, realny wpływ zależy od tego, jak szerokie uprawnienia i jakie sekrety ma proces agenta.
  • Najrozsądniejsze działania „na dziś”: izolacja, least privilege, wyłączenie shell gdzie się da, allowlisty, kontrola egress i HITL.

Źródła / bibliografia

  • SecurityWeek – opis podatności, scenariusze wpływu i rekomendacje ogólne (SecurityWeek)
  • CERT/CC VU#431821 – nota koordynacyjna, mechanika obejścia denylisty/regex, status patcha (kb.cert.org)
  • OpenCVE (rekord CVE-2026-2256) – zakres wersji, metryki, referencje (app.opencve.io)
  • GitHub Advisory Database (GHSA-4gc2-344q-r2rw) – agregacja informacji o CVE w ekosystemie OSS (GitHub)
  • HiddenLayer – indirect prompt injection i „confused deputy” w agentach sterujących środowiskiem (hiddenlayer.com)
Idź do oryginalnego materiału