Teie mudeli väljund on ebausaldusväärne sisend. Leidke kohad, kus teie kood selle unustab.
Teie LLM-i ümbritseva koodi staatiline analüüs — koodi, mis koostab viiba, kutsub mudelit ja teeb vastusega midagi. Mitte mudeli. Mitte viiba vastupidavuse jailbreak'ile. Koodi.
Tasuta pakett hõlmab 3 projekti ja 30 analüüsi kuus, ilma kasutajate arvu piiranguta ja ilma pangakaardita. See analüüs mahub sinna.
Probleem
Mudel ei ole teek. See on ebausaldusväärne tõlk: annate talle sõne ja tema annab ühe tagasi. Kõik, mis seda sõne mõjutas — kasutaja enda viip, leht, mida talle näidati, dokument, mille ta sai, mõne teise tööriista tulemus — mõjutas ka vastust.
Vastus on kahjutu seni, kuni kood annab talle võime tegutseda. Oht ei ole selles, et mudel midagi ütles, vaid selles, et programm seda uskus. Iga koht, kus programm käsitleb loodud teksti koodina, käsuna, päringuna, teena või URL-ina, on süst ühe hüppe kaugusel — ja erinevalt küsimusest, kas viipa saab jailbreak'iga mööda minna, on see hüpe lähtekoodis näha.
Mida Cybseco otsib
Seal, kus mudeli väljund jõuab millenigi, mis tegutseb. Need on mootori enda kategooriad, raskusastmed ja CWE-tunnused.
eval, exec, compile, new Function, pickle.loads, yaml.load — vastusest saab programm.os.system, subprocess, child_process.exec, execSync — vastusest saab käsk.execute, raw, createQuery — text-to-SQL on täpselt see muster ja DROP TABLE on usutav jätk.open, readFile, shutil.rmtree, unlink — ../../etc/passwd on sama usutav jätk.requests, httpx, fetch, axios, urlopen — serveripoolne päringuvõltsing, mille valib mudel.Konkreetne näide
Üheksa rida ja kogu riski kuju.
from openai import OpenAI
client = OpenAI()
def run_plan(task: str):
answer = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": task}],
)
exec(answer.choices[0].message.content)client.chat.completions.create(…) — kutse, mis tagastab mudeli väljundi. Analüsaator seob muutuja, millele see omistati, ja just see võimaldab tal väärtust funktsioonis jälgida ilma protseduuridevahelise analüüsita.answer sisaldab teksti, mida ründaja on saanud mõjutada. Kutse ja suubla vahel ei kontrolli seda miski, ei piira seda miski ega teisenda seda kindlaks hulgaks operatsioonideks.exec(…) — tekstist saab programm rakenduse enda protsessis, koos selle mandaatide, võrgu ja failisüsteemiga.task — otse või mudelile näidatud dokumendi kaudu — valib, mis käivitub. See on koodi kaugkäivitus ühe hüppe kaugusel.Praeguse mootoriga käivitatuna annab see katke ühe leiu: llm-output-to-code-execution, CWE-94, raskusaste kriitiline, kindlus kõrge, real exec. Kindlus on kõrge, sest muutuja on seotud tegeliku completion-kutsega. Nimi, mis üksnes näeb välja nagu mudeli vastus — llm_response, reply — raporteeritakse hoopis keskmise kindlusega, sest see on oletus ja muud väita tähendaks tõendite kohta valetada.
Mis see ei ole
Muud LLM-ile omased riskid koodis
Igaüks neist vallandati näidisel praeguse mootori vastu, enne kui see siia kirja pandi.
api_key, parool, IBAN või terviseandmed teie saadetavas tekstis. Raporteeritakse seal, kus tõepoolest ehitatakse viiba konteksti, mitte igal f-sõnel, mis juhtumisi sisaldab võtit.PythonREPLTool, ShellTool, koodi tõlk, terminal. Ühe neist andmine muudab iga viibasüsti küsimuse koodi kaugkäivituse küsimuseks.allow_dangerous_deserialization=True, trust_remote_code=True, dangerouslyAllow… — raamistik lülitas selle välja, sest see oli ohtlik.BLOCK_NONE, safety_settings=None, moderation=false.hub.pull(…), HTTP kaudu laaditud viibamall. Kes seda lõpp-punkti kontrollib, kontrollib juhiseid.sk-…, sk-ant-…, AIza…, hf_… hoidlasse sisse kantud.text-davinci-*, gpt-4-0314, claude-instant — nõrgem juhiste hierarhia, süsteemiviiba eraldamiseta.Miks sellest midagi uskuda
Teenusepakkujast sõltumatu juba ülesehituselt. Analüsaator tunneb ära kuju — miski toodab teksti, miski tarbib selle — mitte ühe konkreetse SDK kirjaviisi. Ta nimetab raamistiku, mida nägi, kui suudab (OpenAI, Anthropic, Google, Azure OpenAI, Mistral, Bedrock, Ollama, LiteLLM, LangChain, LangGraph, LlamaIndex, Semantic Kernel, AutoGen, CrewAI, Hugging Face), et leid saaks öelda, kust see tuli. See on silt leiul, mitte SDK-põhine lõimimine, ja raamistikku, mida selles loendis ei ole, analüüsitakse täpselt samamoodi.
Vaata, kuidas Cybseco reaalse süsteemi üle arutleb
Vaata interaktiivset demo ja seejärel taotle oma meeskonnale juhendatud prooviperioodi.