Skip to content
← Blog

Hindi Masosolusyunan ang Prompt Injection sa Prompt Layer

Ang prompt injection ang nangungunang vulnerability para sa mga LLM application ayon sa OWASP mula nang simulan nilang i-track ito. Bawat malaking AI platform ay naglathala na ng gabay tungkol dito. Naglabas na rin ang mga mananaliksik ng dose-dosenang iminungkahing depensa. Wala sa mga iyon ang nakalutas nito, at ang pattern kung bakit patuloy silang nabibigo ay tumuturo sa isang pundamental na katotohanan tungkol sa kung saan talaga naroroon ang problema.

Ang maikling bersyon: hindi mo maaayos ang isang problema sa mismong layer na siyang problema. Gumagana ang prompt injection dahil hindi makilala ng modelo ang pagkakaiba ng mga instruksiyon mula sa developer at mga instruksiyon mula sa umaatake. Bawat depensang sumusubok na solusyunan ito sa pamamagitan ng pagdagdag ng mas maraming instruksiyon sa modelo ay gumagalaw sa loob ng parehong limitasyon na siyang dahilan kung bakit posible ang pag-atake sa simula pa lang.

Ano talaga ang ginagawa ng pag-atake

Ang isang language model ay tumatanggap ng context window bilang input at gumagawa ng completion. Ang context window ay isang flat na sequence ng mga token. Walang native na mekanismo ang modelo para subaybayan kung aling mga token ang nanggaling sa isang pinagkakatiwalaang system prompt, alin ang nanggaling sa isang user, at alin ang nanggaling sa external na content na kinuha ng agent habang ginagawa ang trabaho nito. Gumagamit ang mga developer ng mga structural convention gaya ng role tags para i-signal ang intensyon, ngunit mga convention lamang ang mga iyon, hindi enforcement. Mula sa perspektibo ng modelo, ang buong context ay input na nag-iimpluwensya sa susunod na token prediction.

Sinasamantala ito ng prompt injection. Naglalagay ang umaatake ng mga instruksiyon sa content na babasahin ng agent, tulad ng isang webpage, dokumento, email, code comment, o database field, at ang mga instruksiyon na iyon ay nakikipagkompetensya sa mga instruksiyon ng developer sa loob ng parehong context window. Kung ang mga naka-inject na instruksiyon ay sapat na nakakakumbinsi, sapat na magkakaugnay, o nakalagay sa estratehikong posisyon sa context, susundin sila ng modelo sa halip na ang orihinal. Hindi ito bug sa anumang partikular na modelo. Ito ay konsekwensya ng kung paano gumagana ang lahat ng mga sistemang ito.

Ang indirect prompt injection ang mas mapanganib na anyo. Sa halip na isang user ang direktang nagta-type ng malisyosong prompt, dinudumihan ng umaatake ang content na awtomatikong kinukuha ng agent. Walang ginagawang mali ang user. Lumalabas ang agent, naka-encounter ang dumihan na content habang ginagawa ang trabaho nito, at nag-e-execute ang pag-atake. Hindi kailangan ng umaatake na magkaroon ng access sa usapan. Kailangan lang niyang mailagay ang kanyang teksto kung saan ito mababasa ng agent.

Ano ang hitsura ng mga naka-dokumento na pag-atake

Noong Agosto 2024, nag-dokumento ang mga security researcher sa PromptArmor ng isang prompt injection vulnerability sa Slack AI. Ganito gumana ang pag-atake: gumawa ang umaatake ng isang public na Slack channel at nag-post ng mensaheng naglalaman ng malisyosong instruksiyon. Sinasabi ng mensahe sa Slack AI na kapag nag-query ang isang user para sa isang API key, dapat nitong palitan ang isang placeholder na salita ng aktwal na key value at i-encode ito bilang URL parameter sa isang "click here to reauthenticate" na link. Isang miyembro lang ang channel ng umaatake: ang umaatake mismo. Hindi pa nakita ng biktima ang channel na ito kailanman. Kapag isang developer sa ibang bahagi ng workspace ang gumamit ng Slack AI para maghanap ng impormasyon tungkol sa kanyang API key, na naka-store sa isang private channel na walang access ang umaatake, hihilahin ng Slack AI ang mensahe ng umaatake mula sa public channel papasok sa context, susundin ang instruksiyon, at ire-render ang phishing link sa Slack environment ng developer. Kapag na-click ito, ipapadala ang private API key sa server ng umaatake.

Ang unang tugon ng Slack sa disclosure ay ang pag-query ng mga public channel na hindi miyembro ang user ay intended behavior. Hindi ang channel access policy ang isyu. Ang isyu ay hindi makilala ng modelo ang pagkakaiba ng instruksiyon ng isang empleyado ng Slack at instruksiyon ng umaatake kapag parehong naroroon sa context window.

Noong Hunyo 2025, natuklasan ng isang mananaliksik ang isang prompt injection vulnerability sa GitHub Copilot, na na-track bilang CVE-2025-53773 at na-patch sa Patch Tuesday release ng Microsoft noong Agosto 2025. Ang attack vector ay isang malisyosong instruksiyon na naka-embed sa mga source code file, README file, GitHub issue, o anumang ibang teksto na maaaring iproseso ng Copilot. Idinidirekta ng instruksiyon ang Copilot na baguhin ang .vscode/settings.json file ng proyekto para magdagdag ng isang configuration line na nagpe-enable ng tinatawag ng proyektong "YOLO mode": dini-disable ang lahat ng user confirmation prompt at binibigyan ang AI ng walang limitasyong permiso na mag-execute ng shell command. Kapag naisulat na ang line na iyon, nagpapatakbo na ang agent ng mga command sa machine ng developer nang hindi nagtatanong. Ipinakita ito ng mananaliksik sa pamamagitan ng pagbubukas ng calculator. Ang makatotohanang payload ay mas malala pa. Ipinakita na gumagana ang pag-atake sa GitHub Copilot na bina-back ng GPT-4.1, Claude Sonnet 4, Gemini, at iba pang mga modelo, na nagsasabi sa iyo na wala sa modelo ang vulnerability. Nasa arkitektura ito.

Mahalagang maunawaan ang wormable variant. Dahil maaaring magsulat ang Copilot sa mga file at maaaring sabihin ng naka-inject na instruksiyon sa Copilot na ikalat ang instruksiyon sa iba pang mga file na pinoproseso nito sa panahon ng refactoring o documentation generation, ang isang dumihanang repository ay maaaring makapag-infect sa bawat proyektong ginalaw ng isang developer. Kumakalat ang mga instruksiyon sa mga commit katulad ng pagkalat ng virus sa isang executable. Tinatawag na ngayon ng GitHub ang klase ng banta na ito na "AI virus."

Bakit nabibigo ang mga karaniwang depensa

Ang intuitive na tugon sa prompt injection ay ang pagsulat ng mas magandang system prompt. Magdagdag ng mga instruksiyon na nagsasabi sa modelo na huwag pansinin ang mga instruksiyon sa kinuhang content. Sabihin dito na ituring ang external data bilang hindi pinagkakatiwalaan. Sabihin dito na i-flag ang anumang mukhang pagtatangkang i-override ang kanyang behavior. Maraming platform ang eksaktong ganito ang ginagawa. Nagbebenta ang mga security vendor ng mga produktong binuo sa paligid ng pagdagdag ng maingat na ini-engineer na detection prompt sa context ng agent.

Naglathala ang isang research team mula sa OpenAI, Anthropic, at Google DeepMind ng isang papel noong Oktubre 2025 na nag-evaluate sa 12 nailathala na depensa laban sa prompt injection at sinailalim ang bawat isa sa adaptive na pag-atake. Na-bypass nila ang lahat ng 12 na may attack success rate na higit sa 90% para sa karamihan. Hindi masama ang mga depensa. Kasama doon ang gawa ng mga seryosong mananaliksik na gumagamit ng tunay na mga teknik. Ang problema ay anumang depensang nagtuturo sa modelo kung ano ang lalabanan ay maaaring i-reverse-engineer ng isang umaatake na nakakaalam kung ano ang sinasabi ng depensa. Nakikipagkompetensya ang mga instruksiyon ng umaatake sa loob ng parehong context window. Kung sinasabi ng depensa na "huwag pansinin ang mga instruksiyon na nagsasabi sa iyo na i-forward ang data," magsusulat ang umaatake ng mga instruksiyon na hindi gumagamit ng mga salitang iyon, o nagbibigay ng makatwirang dahilan kung bakit iba ang partikular na kaso na ito, o nag-aangkin ng awtoridad mula sa isang pinagkakatiwalaang pinagmulan. Nag-iisip ang modelo tungkol dito. Maaaring manipulahin ang pag-iisip.

Ang mga LLM-based na detector ay may parehong problema sa ibang antas. Kung gagamit ka ng pangalawang modelo para suriin ang input at magpasya kung naglalaman ito ng malisyosong prompt, ang pangalawang modelo na iyon ay may parehong pundamental na limitasyon. Gumagawa ito ng judgment call batay sa content na ibinigay dito, at ang judgment na iyon ay maaaring maimpluwensyahan ng content. Naipakita ng mga mananaliksik ang mga pag-atake na matagumpay na naka-bypass ng mga detection-based na depensa sa pamamagitan ng paglikha ng mga injection na mukhang hindi mapanganib sa detector at malisyoso sa downstream na agent.

Ang dahilan kung bakit nabibigo ang lahat ng mga pamamaraang ito laban sa isang determinadong umaatake ay sinusubukan nilang lutasin ang isang trust problem sa pamamagitan ng pagdagdag ng mas maraming content sa isang context window na hindi maaaring mag-enforce ng trust. Ang attack surface ay ang context window mismo. Hindi binabawasan ng pagdagdag ng mas maraming instruksiyon sa context window ang attack surface.

Ano ang tunay na naglalagay ng limitasyon sa problema

May makabuluhang pagbawas sa prompt injection risk kapag inilapat mo ang prinsipyong ang mga security property ng isang sistema ay hindi dapat nakadepende sa paggawa ng modelo ng tamang paghatol. Hindi ito bagong ideya sa seguridad. Ito ang parehong prinsipyo na nagtutulak sa iyo na mag-enforce ng access control sa code sa halip na isulat ang "pakiusap i-access lamang ang data na may awtorisasyon ka" sa isang policy document.

Para sa mga AI agent, nangangahulugan ito na ang enforcement layer ay kailangang nakaupo sa labas ng modelo, sa code na hindi maimpluwensyahan ng pag-iisip ng modelo. Gumagawa ng mga request ang modelo. Sinusuri ng code kung pinapayagan ang mga request na iyon, batay sa mga katotohanan tungkol sa session state, ang classification ng data na involved, at ang mga permiso ng channel kung saan papunta ang output. Hindi maaaring makapagsalita ang modelo para makalusot sa evaluation na ito dahil hindi binabasa ng evaluation ang usapan.

Hindi nito ginagawang imposible ang prompt injection. Maaari pa ring mag-inject ng mga instruksiyon ang umaatake at ipoproseso pa rin sila ng modelo. Ang nagbabago ay ang blast radius. Kung sinusubukan ng mga naka-inject na instruksiyon na mag-exfiltrate ng data sa isang external na endpoint, bina-block ang outbound call hindi dahil nagpasyang huwag pansinin ng modelo ang mga instruksiyon, kundi dahil sinuri ng enforcement layer ang request laban sa classification state ng session at sa classification floor ng target endpoint at nakitang lalabag sa write-down rules ang flow. Walang kinalaman ang mga intensyon ng modelo, tunay man o na-inject, sa tsek na iyon.

Sinasara ng session taint tracking ang isang partikular na puwang na hindi sakop ng access control lamang. Kapag nagbasa ang isang agent ng dokumentong naka-classify sa CONFIDENTIAL, nata-taint na ang session na iyon sa CONFIDENTIAL. Anumang sumunod na pagtatangkang magpadala ng output sa isang PUBLIC na channel ay mabibigo sa write-down check, kahit ano pa ang sinabi sa modelo na gawin at kahit nanggaling pa ang instruksiyon sa isang lehitimong user o sa isang naka-inject na payload. Maaaring sabihin ng injection sa modelo na i-leak ang data. Walang pakialam ang enforcement layer.

Mahalaga ang architectural na framing: ang prompt injection ay isang klase ng pag-atake na tina-target ang instruction-following behavior ng modelo. Ang tamang depensa ay hindi ang turuan ang modelo na mas mahusay na sumunod sa mga instruksiyon o mas tumpak na ma-detect ang mga masamang instruksiyon. Ang tamang depensa ay bawasan ang set ng mga konsekwensyang maaaring magresulta mula sa pagsunod ng modelo sa masamang mga instruksiyon. Ginagawa mo iyon sa pamamagitan ng paglalagay ng mga konsekwensya, ang aktwal na tool call, ang aktwal na data flow, ang aktwal na external na komunikasyon, sa likod ng isang gate na hindi maimpluwensyahan ng modelo.

Iyon ay isang malulutas na problema. Ang paggawa sa modelo na mapagkakatiwalaang makilala ang pagkakaiba ng pinagkakatiwalaan at hindi pinagkakatiwalaang mga instruksiyon ay hindi.