Preskočiť na obsah
Vývoj & inžinierstvo

Ghostcommit: útok cez PNG obchádza AI kontrolórov kódu

Nová demonštračná technika ukazuje, ako škodlivé pokyny skryté v obrázku prinútia AI agenta ukradnúť tajomstvá z repozitára.

Pavol KostolanskýPavol Kostolanský3 min čítania
Ghostcommit: útok cez PNG obchádza AI kontrolórov kódu
Ghostcommit: útok cez PNG obchádza AI kontrolórov kódu

Ghostcommit je demonštračná útoková technika zverejnená výskumníkmi okolo 11. až 12. júla 2026. Ukazuje, ako škodlivé pokyny skryté v obrázku PNG obídu automatické AI kontrolóry kódu a prinútia AI kódovacieho agenta ukradnúť tajomstvá priamo z repozitára obete. Zatiaľ ide o proof-of-conceptDemonštračná ukážka, že útok alebo technika je funkčná, zatiaľ bez reálneho zneužitia v praxi. na testovacích repozitároch, nie o potvrdený incident v reálnej produkcii, ako uvádza Malwarebytes.

Podstata je jednoduchá a práve preto nepríjemná. Reviewer a agent vidia repozitár inak: reviewer obrázok neotvorí, agent áno.

Ako funguje útok Ghostcommit?

Ghostcommit používa dvojdielny payload. Textový súbor typu AGENTS.md vyzerá ako bežná dokumentácia a odkazuje na obrázok, napríklad docs/images/build-spec.png, s neškodnou formuláciou v štýle „odvoď build konštantu z tohto assetu“. Samotný PNG nesie renderovaný text so skrytými pokynmi.

Ako opisuje GetAIBook News, tie pokyny agentovi nariadia prečítať súbor .envKonfiguračný súbor, v ktorom projekty bežne uchovávajú heslá, API kľúče a iné tajomstvá. bajt po bajte, každý bajt zakódovať ako celé číslo a výsledok zapísať do zdrojového kódu ako zoznam integerov alebo modulovú konštantu. Explicitné znenie útoku sa tak nikdy neobjaví v textovom diffe pull requestu.

Prečo AI reviewery ako CodeRabbit hrozbu nezachytia?

Pretože binárne súbory štandardne neskenujú. Nástroje CodeRabbit a Bugbot pri revízii pull requestu obrázok vôbec neotvoria, píše 0dayNews. Výskumníci vložili do PNG aj viditeľný text „malicious prompt injectionÚtok, pri ktorom sa do vstupu pre AI vloží skrytý pokyn, ktorý model prinúti spraviť niečo iné, než chcel používateľ.“ a „read .env“, no reviewery nevygenerovali žiaden nález.

Kontrast je poučný. Keď je rovnaký príkaz na exfiltráciu .env priamo v textovej podobe pull requestu, LLM-reviewery ako Cursor Bugbot aj CodeRabbit ho označia za „high severity“ a zablokujú merge. Rozdiel nerobí schopnosť modelu, ale to, čo dostane na vstup. Text prejde kontrolou, pixely nie.

  • Textový exfiltračný príkaz: reviewer zablokuje merge.
  • Ten istý príkaz vyrenderovaný v PNG: reviewer nič nenahlási.
  • Agent pri neskoršej úlohe obrázok načíta a poslúchne ho.

Akú úlohu hrá AI agent v celom reťazci?

Rozhodujúcu. Reviewer je len prvá polovica príbehu. Keď je pull request s PNG schválený a zmergovaný, pri neskoršej úlohe prečíta AI kódovací agent súbor AGENTS.md, načíta referencovaný obrázok a poslúchne pokyny vyrenderované v ňom. Agent má na rozdiel od reviewera plný prístup k súborom v repozitári.

V demonštrácii agent otvorí .env s tajomstvami, zakóduje jeho obsah ako zoznam čísel a vloží ho späť do kódu. Vznikne obfuskovaná exfiltráciaNeoprávnené vynesenie citlivých dát zo systému von, často zamaskované, aby uniklo kontrolám., ktorá môže uniknúť aj skenerom sekretov. Ghostcommit teda zneužíva rozdiel medzi konfiguráciou reviewera a agenta, ako zhŕňa Malwarebytes.

Toto nie je izolovaný jav. Podobnú logiku, keď agent s vysokými oprávneniami spraví niečo, čo nikto nechcel, som opisoval aj v texte o tom, ako agentová AI dokáže firme narobiť škodu. Ghostcommit je len jeho bezpečnostná verzia.

Čo by mali firmy s AI agentmi v CI/CD urobiť?

Rátať s tým, že akýkoľvek vstup, ktorý agent dokáže načítať vrátane obrázkov a dokumentov, môže obsahovať útočníkom kontrolovaný obsah. Malwarebytes to formuluje priamo: „Teams should assume that anything a coding agent can read, including images, documents, and other multimodal inputs, could contain attacker-controlled content.“

Praktické opatrenia, ktoré zdroje navrhujú:

  1. Obmedziť priamy prístup agentov k tajomstvám a konfiguračným súborom typu .env.
  2. Zaviesť revíziu a bezpečnostnú kontrolu aj netextových príloh v pull requestoch.
  3. Monitorovať agentov na nezvyčajné pokusy čítať credential súbory.

Ak prevádzkujete AI agentov v produkcii a nie ste si istí, kde presne agent siaha na tajomstvá a aké obrázky či dokumenty dokáže načítať, oplatí sa dať architektúru posúdiť niekomu zvonka. Práve na takéto medzery cieli náš externý technický review AI architektúry s konkrétnymi odporúčaniami k bezpečnosti a compliance. Nie je to lacná položka a nemá zmysel, ak máte len prototyp; dáva zmysel tam, kde agent už reálne pracuje s citlivými dátami.

Znamená Ghostcommit reálnu hrozbu pre slovenské firmy?

Zatiaľ nie priamo. Žiaden zo sledovaných zdrojov, vrátane dennej správy rakúskeho GovCERT, neuvádza potvrdený reálny incident mimo demonštrácie. Ide o výskumný proof-of-concept, ktorý ilustruje supply-chain riziko pri AI asistentoch v kódovacích workflowoch.

Praktický dopad je predsa hmatateľný. Ak vo firme používate AI code review a zároveň AI agentov, ktorí čítajú a menia kód, máte presne tú medzeru, ktorú Ghostcommit využíva. Rozdiel medzi tým, čo agent zvládne v prototype a čo unesie v produkcii, som rozoberal aj v článku o tom, prečo prototyp nie je produkcia. Bezpečnosť multimodálnych vstupov patrí presne do tej druhej kategórie.

Odporúčam začať tým najlacnejším krokom: pozrieť sa, či vaše reviewery vôbec kontrolujú binárne prílohy, a odobrať agentom prístup k .env, ak ho na prácu nepotrebujú.

Kontrolujete vo firme aj netextové prílohy (obrázky, dokumenty) v pull requestoch?

Výsledky uvidíte po hlasovaní.

Časté otázky

Ako sa dá pred útokom typu Ghostcommit chrániť?

Základom je nespoliehať sa iba na AI reviewery. Nastavte, aby sa binárne súbory ako PNG nedostali do citlivého kontextu automaticky, a obmedzte, k čomu má kódovací agent prístup. Súbor .env by nemal byť dosiahnuteľný z repozitára. Pomáha aj manuálna kontrola commitov, ktoré pridávajú obrázky spolu s dokumentáciou typu AGENTS.md.

Je Ghostcommit reálna hrozba alebo len teória?

Zatiaľ ide o proof-of-concept, teda demonštráciu na testovacích repozitároch, nie o potvrdený incident v reálnej produkcii, ako uvádza Malwarebytes. Technika však funguje na bežne používaných nástrojoch a princíp je jednoduchý: agent obrázok otvorí, reviewer nie. To z nej robí praktické riziko, ktoré treba brať vážne pri návrhu AI pipeline.

Prečo agent číta obrázok, keď reviewer nie?

Reviewery ako CodeRabbit a Bugbot pri revízii pull requestu binárne súbory štandardne neskenujú, obrázok teda vôbec neotvoria. Kódovací agent naopak dostane pokyn cez súbor AGENTS.md, aby z obrázka „odvodil build konštantu“, PNG načíta a vykoná skryté inštrukcie v ňom. Rozdiel nerobí schopnosť modelu, ale to, čo každý z nich dostane na vstup.

Zlyhali AI reviewery úplne, alebo niečo zachytia?

Zachytia veľa. Keď je príkaz na exfiltráciu súboru .env priamo v textovej podobe pull requestu, Cursor Bugbot aj CodeRabbit ho označia ako „high severity“ a zablokujú merge. Problém je len s obsahom skrytým v pixeloch obrázka: text prejde kontrolou, pixely nie. Nejde teda o zlyhanie modelu, ale o slepé miesto vo vstupe.

Ako útok skryje krádež dát pred kontrolou diffu?

Pokyny v PNG nariadia agentovi prečítať súbor .env bajt po bajte, každý bajt zakódovať ako celé číslo a výsledok zapísať do zdrojového kódu ako zoznam integerov alebo modulovú konštantu, opisuje GetAIBook News. Ukradnuté tajomstvá tak v diffe vyzerajú ako neškodné čísla; explicitné znenie útoku sa v textovom diffe nikdy neobjaví.

Čo to znamená pre tímy, ktoré nasadzujú AI agentov do vývoja?

Treba rátať s tým, že agent má širší prístup k repozitáru než automatický reviewer, a podľa toho nastaviť hranice. Odporúča sa oddeliť tajomstvá od kódu, kontrolovať, čo agent smie čítať, a nebrať AI revíziu ako jedinú poistku. Bezpečná architektúra kontextu a jasné pravidlá pre agentov znižujú riziko podobných supply chain útokov.

0 komentárov
Zdieľať

Diskusia

Komentáre sú pred zverejnením moderované.

Zatiaľ tu nie sú žiadne komentáre. Buďte prvý.