drošība · 5 min · 12.07.2026

PraisonAI CVE-2026-61447: uzvednes injekcija palaiž patvaļīgu Python kodu, CVSS 10.0

PraisonAI, populārā atvērtā koda ietvara AI aģentu būvēšanai, ir caurums ar maksimālo bīstamības vērtējumu 10.0. CVE-2026-61447, publicēts 11. jūlijā, ļauj uzbrucējam ar uzvednes injekciju panākt, ka aģents palaiž patvaļīgu Python kodu uz saimniekdatora. No turienes ceļš uz vides mainīgajiem, API atslēgām un pilnu servera pārņemšanu ir īss.

Problēma nav eksotiska. Tā izriet no tā, kā ietvars apstrādā koda ģenerēšanas uzdevumus: valodas modelis uzraksta Python fragmentu, un aģents to izpilda. Pārbaudes pa vidu nav.

Kur tieši ir caurums

Kļūda ir metodē CodeAgent._execute_python(). Tā paņem modeļa ģenerēto Python kodu un palaiž to bez trim aizsargbarjerām: nav AST validācijas, kas pārbaudītu koda struktūru, nav importu ierobežojumu, kas neļautu ievilkt bīstamus moduļus, un nav sandbox izolācijas, kas nošķirtu izpildi no saimniekdatora. Modelis pateica — aģents izdarīja.

Tā ir arhitektūras problēma, nevis viena aizmirsta pārbaude. AI aģentu ietvari mēdz uzskatīt modeļa izvadi par uzticamu, jo to taču ir uzrakstījis “savs” modelis. Bet modeļa izvadi kontrolē tas, kas kontrolē ievadi. Ja uzbrucējs var iespraust tekstu, ko modelis apstrādā — dokumentā, ko aģents lasa, tīmekļa lapā, ko tas apmeklē, vai lietotāja ziņā — viņš var pateikt modelim, kādu Python uzrakstīt.

Kā uzbrukums notiek

Uzvednes injekcija te ir tikai piegādes veids. Uzbrucējs neuzbrūk pašam modelim, viņš izmanto to kā starpnieku. Modelim tiek pasniegts teksts, kas satur instrukciju uzrakstīt kodu, kas nolasa os.environ un aizsūta saturu uz ārēju adresi. Modelis paklausīgi ģenerē šo Python, _execute_python() to palaiž, un vides noslēpumi aizplūst. Detalizētu aprakstu ar CVSS vektoru CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H uztur NVD ieraksts un GitHub drošības brīdinājums GHSA-2xv2-w8cq-5gxw.

Skarts ir praisonaiagents pakotnes versijas pirms 1.6.78. Labojums ir 1.6.78. Radniecīgā CVE-2026-61445 apraksta patvaļīgu failu rakstīšanu un komandu izpildi praisonai pakotnē pirms 4.6.78, ar bīstamības vērtējumu 9.9.

Uzvednes injekciju nevar salabot pašā modelī. Modelis pēc konstrukcijas neatšķir “īstu” uzdevumu no instrukcijas, kas ieslēpta datos, kurus tam liek apstrādāt. Bīstams kļūst konkrēts trīs faktoru salikums: aģentam ir piekļuve noslēpumiem vai privātiem datiem, tas apstrādā tekstu no neuzticama avota, un tam ir kanāls, pa kuru datus izsūtīt. PraisonAI gadījumā šis kanāls ir tieša Python izpilde. Kad visi trīs faktori sanāk kopā, injekcija pārvēršas par datu noplūdi.

Šī nav pirmā reize

PraisonAI šogad ir kļuvis par regulāru mērķi, un tas pastāsta vairāk nekā jebkurš atsevišķs CVE. Aprīlī drošības firma RAXE Labs izpauda deviņu ievainojamību kopu visā ekosistēmā — sešas praisonai pakotnē un trīs praisonaiagents. To vidū sandbox apiešana, komandu un čaulas injekcijas, SQL injekcija, autentifikācijas apiešana un SSRF. Augstākais vērtējums atkal bija 10.0. Vienam no tiem — MCP komandrindas injekcijai ar vērtējumu 9.8 — jau bija publisks izmantošanas pierādījums.

Viena atjaunināšana neatrisina visas deviņas ievainojamības. praisonai jāceļ uz 4.5.97+, bet praisonaiagents — uz 1.5.95+ atsevišķi.

Vēl agrāk, maijā, autentifikācijas apiešanu CVE-2026-44338 sāka izmantot dažu stundu laikā pēc publiskošanas. Cēlonis bija iestatījumi ar AUTH_ENABLED = False un AUTH_TOKEN = None pēc noklusējuma, bet vecais Flask serveris klausījās uz 0.0.0.0:8080. Uzbrucēji varēja bez autentifikācijas izsaukt /agents un /chat, palaist iepriekš sagatavotus darbplūsmas un iztukšot dārgās modeļu kvotas. Sysdig šo gadījumu aprakstīja kā piemēru tam, cik ātri publiskotu caurumu tagad izmanto — mazāk nekā četrās stundās.

Ko darīt tagad

Ja tavā stekā ir PraisonAI, cel abas pakotnes uz jaunākajām versijām un dari to atsevišķi — versiju numuri atšķiras. Pēc CVE-2026-61447 praisonaiagents minimums ir 1.6.78, bet praisonai pēc CVE-2026-61445 — 4.6.78. Vecākiem caurumiem no aprīļa kopas robežas ir 4.5.97 un 1.5.95.

Bet versiju atjaunināšana neatrisina pamatproblēmu. Ja tavs aģents izpilda modeļa ģenerētu kodu, tam jāstrādā sandbox vidē ar liegtu tīkla piekļuvi un bez piekļuves noslēpumiem. Ierobežo izejošos savienojumus — bloķē mākoņa metadatu servisus un RFC 1918 adrešu diapazonus. Un izturies pret jebkuru tekstu, ko modelis lasa no ārpuses, kā pret potenciālu ievadi no uzbrucēja, ne kā pret uzticamu instrukciju.

Uzraudzībai reģistrē pašu koda izpildi. Ar modeļa atbilžu žurnālu vien nepietiek. Ja aģents pēkšņi ģenerē Python, kas importē socket vai subprocess, lasa os.environ vai zvana uz nepazīstamu domēnu, tā ir zīme, ka injekcija ir nostrādājusi. Bez izpildes žurnāla šo uzbrukumu pamana tikai pēc tam, kad noslēpumi jau ir aizplūduši.

AI aģentu ietvari šobrīd aug ātrāk, nekā tiek pārbaudīti. PraisonAI ekosistēmā šogad ir vismaz vienpadsmit CVE, no kuriem trīs ar vērtējumu 10.0. Tas pats raksts atkārtojas citos ietvaros: modeļa izvade tiek uzskatīta par uzticamu, un koda izpilde notiek bez izolācijas. Kamēr šī pieņēmuma nav, katrs jauns aģents ir jauna izpildes virsma.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no drošībasaistītie