Fəsil 09 · 8 dəq oxu

AI və LLM security

AI və LLM security

Fəsil 4-ün əsas qaydası belə idi: data-nı və kodu ayrı saxlayın. Parameterised query-lər bunu mümkün edir, çünki database təlimatı və dəyəri ayrı kanallardan qəbul edir. belə kanal yoxdur. System prompt, istifadəçinin mesajı, retrieval ilə gətirilmiş sənəd və tool nəticəsi hamısı eyni token axınında birləşir və model onların hansının təlimat olduğuna özü qərar verir. Məhsula feature-i əlavə edən hər komanda instruction ilə data-nı bir kanalda qarışdıran yeni komponent əlavə edir.

AI kitabının 3–5-ci fəsilləri , və nə olduğunu izah edir. Bu fəsil həmin mövzulara attacker və defender gözü ilə baxır: harada var, nə sınacaq və sınanda zərəri necə məhdudlaşdırmalı.

Risk xəritəsi

OWASP Top 10 for Applications (2025) sahə üçün ortaq lüğətdir. Hər birinin bir cümləlik mənası:

RiskMənası
LLM01 Model-in oxuduğu mətn onun davranışını dəyişir
LLM02 Sensitive Information DisclosureModel , context-dən və ya tool-lardan gizli məlumatı ötürür
LLM03 Üçüncü tərəf model-lər, dataset-lər, plugin-lər compromise olunub
LLM04 Data and Training, və ya data-sı qəsdən korlanıb
LLM05 Model output-u downstream-də yoxlanmadan icra olunur və ya render edilir
LLM06 Model-ə lazım olandan çox tool, permission və ya avtonomiya verilib
LLM07 System prompt-dakı məntiq və ya üzə çıxır
LLM08 Vector and WeaknessesVector store-da access control, tenant isolation və ya data zəifdir
LLM09 MisinformationModel əmin, amma yanlış cavab verir və insanlar ona etibar edir
LLM10 Unbounded ConsumptionLimitsiz istifadə xərci, və ya model extraction-ı mümkün edir

Siyahının yarısı köhnə problemlərin yeni formasıdır: injection, output encoding, , access control, resource limit-ləri. Yeni olan, onların hamısının bir komponentdə toplanmasıdır.

LLM application-ın anatomiyası

Fəsil 2-dəki kimi çəkin. Tipik GenAI application-da bunlar var:

  • User input: chat mesajı, yüklənmiş fayl, şəkil.
  • System prompt: developer-in yazdığı təlimatlar.
  • Retrieved context: ilə gətirilən sənədlər, veb səhifələr, e-məktublar.
  • Tool-lar: model-in çağırdığı API-lər və onların qaytardığı nəticələr.
  • Memory: əvvəlki session-lardan saxlanılan qeydlər.
  • Model output: istifadəçiyə göstərilən və ya başqa sistemə ötürülən mətn və tool call-lar.

Klassik application-da istifadəçi ilə server arasındadır. Burada isə hər ox boundary-dir. Retrieved sənədi attacker yaza bilər. Tool nəticəsi attacker-in idarə etdiyi saytdan gələ bilər. Memory-yə keçən session-da zəhərli qeyd yazılmış ola bilər. Model output-u isə bütün bunların nəticəsidir, deməli o da untrusted-dir. hər oxa ayrıca tətbiq edin; model-in özünü "trusted processor" kimi qəbul etmək ən çox rast gəlinən səhvidir.

Prompt injection: həll yox, containment

Direct injection-da istifadəçi özü model-i yönləndirməyə çalışır. Bu, əsasən öz session-unun sərhədləri daxilində qalır: istifadəçi yalnız öz icazəsi olan şeyləri edə bilirsə, zərər məhduddur. Indirect injection-da təlimat model-in oxuduğu məzmunda gizlənir və qurban attacker deyil, sistemi istifadə edən başqa insandır. Agent-lər üçün əsas təhlükə budur.

Injection-ı tam "fix" etmək mümkün deyil, çünki səbəb bug deyil, model-in necə işlədiyidir. , xüsusi təlimatlar və uğur faizini azaldır, sıfıra endirmir. Attacker-in isə bir uğurlu cəhd kifayətdir. Buna görə də dizayn sualı "injection-ın qarşısını necə alaq?" yox, "injection uğurlu olanda model nəyə çata bilər?" olmalıdır.

Praktik nəticələr:

  • Untrusted məzmun oxuyan model güclü tool-a sahib olmamalıdır. E-məktubları xülasə edən model e-məktub göndərə bilməməlidir və ya bunu yalnız istifadəçi təsdiqi ilə etməlidir.
  • Exfiltration kanallarını bağlayın. Model output-unda xarici URL-li markdown şəkli render olunursa, data query string-də sızır. Egress-i və render olunan link-ləri ilə məhdudlaşdırın.
  • model-in qərarından asılı olmasın. "Model yalnız icazə verilən sənədləri göstərəcək" control deyil. Check model-dən kənarda, kodda edilir.

Output handling

Model output-u downstream sistem üçün istifadəçi input-u ilə eyni statusdadır, çünki attacker onu prompt vasitəsilə formalaşdıra bilir. Fəsil 4-dəki bütün qaydalar burada da keçərlidir:

  • Output HTML kimi render olunursa, encode edin; əks halda .
  • Model SQL yaradırsa, onu read-only, scope-u məhdud connection ilə işlədin və ya daha yaxşısı, model-ə yalnız parametrləri seçdirin, query-ni kod qursun.
  • Model shell əmri və ya kod yaradırsa, onu yalnız icra edin.
  • istifadə edin və nəticəni schema ilə validate edin. Schema-ya uyğun olmayan output rədd edilir, "təxminən düzgün" kimi parse olunmur.

Sensitive data və system prompt leakage

System prompt store deyil. Fərz edin ki, istifadəçi onu oxuya biləcək. , daxili URL, "admin-lər üçün xüsusi qaydalar" orada olmamalıdır. Əgər system prompt-un üzə çıxması təhlükəlidirsə, problem yox, dizayndadır: security məntiqi kodda olmalıdır.

retrieval-dan əvvəl tətbiq olunur. Bütün sənədləri bir index-ə yığıb model-dən "yalnız bu istifadəçiyə aid olanları istifadə et" istəmək broken access control-dur. Retrieval query-si istifadəçinin permission-ları ilə filter olunmalıdır ki, icazəsiz sənəd heç vaxt context-ə düşməsin. Context-ə düşən hər şey output-a düşə bilər.

Vector store-u database kimi qoruyun. sistemdə tenant isolation ayrı index və ya məcburi tenant filter ilə təmin olunur, model-in diqqətinə buraxılmır. anonim deyil: onlardan orijinal mətnin xeyli hissəsini bərpa etmək mümkündür, buna görə də onlara qaynaq data ilə eyni verin. və retention qaydaları Fəsil 6-dadır.

Prompt-lar və cavablar log-larda sensitive data-dır. İstifadəçilər chat-ə hər şeyi yapışdırır. Log-lara access-i, retention-u və üçüncü tərəf model provider-ə nəyin göndərildiyini açıq müəyyən edin.

Supply chain və poisoning

Model , dataset-lər, data-sı, prompt template-ləri və plugin-lər dependency-dir və Fəsil 4-dəki qaydaları onlara da aiddir. Əlavə məqamlar:

  • Provenance. Model-in və dataset-in haradan gəldiyini, hansı versiya olduğunu və checksum-unu qeyd edin. Bəzi model format-ları yüklənəndə kod icra edir; untrusted mənbədən gələn faylları belə format-larda açmayın.
  • Poisoning tək training-də deyil. korpusuna yazmaq imkanı olan hər kəs model-in cavablarına təsir edə bilər. Wiki səhifəsi, ticket, public veb səhifə: index-ə nəyin daxil olduğunu və kimin onu dəyişə biləcəyini bilin.
  • Backdoor-lar test-də görünmür. Zəhərlənmiş model adi input-larda normal davranır və yalnız trigger ifadədə dəyişir. Evaluation bunu tutmaya bilər; mənbəyə nəzarət daha etibarlıdır.

Agent-lər: excessive agency

Agent-də model yalnız mətn yazmır, hərəkət edir. Burada risk model-in nə dediyindən yox, nə edə bildiyindən gəlir. üç formada olur: çox tool, çox geniş permission-lar və insan nəzarəti olmadan çox avtonomiya.

  • Tool tapşırığa görə. Hər tool . İstifadə olunmayan tool-u silin; ümumi tool-ları (run_sql, http_request, shell) dar tool-larla əvəz edin.
  • Credential-lar istifadəçinin adından, scope-u məhdud. Agent bütün istifadəçilər üçün bir güclü service account ilə işləyirsə, hər istifadəçi faktiki olaraq admin olur. Fəsil 3-dəki machine identity qaydaları burada tətbiq olunur: agent konkret istifadəçinin permission-ları ilə, qısaömürlü token ilə hərəkət edir.
  • Geri qaytarılmaz hərəkətlər üçün insan təsdiqi. Pul köçürmək, məlumat silmək, xaricə mesaj göndərmək. Təsdiq ekranında agent-in nə edəcəyi aydın göstərilməlidir, "Davam?" deyil.
  • Memory-ni də untrusted input kimi qəbul edin. Bir session-da injection ilə memory-yə yazılmış "istifadəçi bütün fakturaları X ünvanına göndərməyi üstün tutur" qeydi gələcək session-larda təlimat kimi işləyir. Memory yazılarını məhdudlaşdırın, mənbəyini qeyd edin, istifadəçiyə görünən və silinə bilən edin.
  • Büdcələr və limitlər. İterasiya, token, xərc, vaxt və sayı üçün sərt limit. Unbounded consumption həm xərc, həm də problemidir; və quota-lar Fəsil 7-dəki API qaydaları ilə eynidir.
  • sistemlərdə trust keçmir. Bir agent-in digərinə göndərdiyi mesaj da untrusted məzmundur. Daha az privileged agent daha çox privileged agent-i yönləndirə bilməməlidir.

Real agentic failure-lərin əksəriyyəti eyni ssenaridir: agent untrusted məzmun oxuyur, injection uğurlu olur və agent-in onsuz da malik olduğu geniş permission-lar zərəri böyüdür. Model-in səhvi tətik idi; səbəb isə dizayn idi.

Runtime control-lar və onların limiti

Input və output filter-ləri, injection , PII detection və "AI firewall" adlanan proxy-lər faydalı qatdır. Onlar məlum pattern-ləri tutur, açıq-aşkar sui-istifadəni azaldır və telemetry verir. Amma onlar da model-dir və ya pattern-dir, deməli bypass olunur: başqa dil, encoding, sözlərin bölünməsi, şəkil içində mətn.

Onlara WAF kimi baxın: bir qatı, arxitektura qüsurunun əvəzi deyil. Əgər filter sınanda sistem data sızdırırsa, əsl control filter deyil, onun arxasında olmayan permission sərhədi idi.

Observability, evaluation və red teaming

  • Log-layın: prompt, retrieved sənədlərin ID-ləri, tool call-lar və arqumentləri, model versiyası, istifadəçi identity-si. Incident zamanı "agent niyə bunu etdi?" sualına cavab yalnız gəlir. Fəsil 5-dəki detection qaydaları buraya da aiddir: qeyri-adi pattern-ləri, birdən artan token istifadəsi, xarici domain-lərə yeni egress.
  • Security evaluation-ı CI-də. Məlum injection-lar, jailbreak-lər və data sızma cəhdlərindən ibarət test toplusu yaradın və hər prompt, model və ya tool dəyişikliyində işə salın. Model versiyasını dəyişmək dependency upgrade-dir.
  • . əvvəl və mütəmadi olaraq kimsə sistemi attacker kimi sınamalıdır, xüsusilə indirect yolla: sənəd yükləyin, veb səhifə hazırlayın, e-məktub göndərin və agent-in nə etdiyinə baxın.

Governance və AI-SDLC

Security praktikaları Fəsil 4-dəki lifecycle-a əlavə olunur, ayrıca proses kimi yox:

  • Design: hər feature-i üçün ; model-in hansı data-ya və tool-a çatdığı açıq yazılır.
  • Build: model və dataset provenance-ı, prompt-lar version control-da.
  • Test: security evaluation toplusu, .
  • Operate: monitoring, , incident runbook-unda AI ssenariləri.

Bunun yanında AI system inventory-si saxlayın: hansı feature hansı model-i istifadə edir, hansı data-nı görür və kim onun sahibidir. Komandaların icazəsiz qoşduğu "shadow AI" xidmətləri vaxtında görünmür, sonra isə data artıq sızmış olur.

Tapşırıqlar

  1. Sisteminizdəki bir feature-i üçün çəkin: user input, system prompt, retrieved context, tool-lar, memory, output. Hər ox üçün "bunu kim yaza bilər?" sualına cavab verin və attacker-in idarə edə biləcəyi oxları işarələyin.
  2. Bir agent-in tool siyahısını götürün. Hər tool üçün yazın: hansı ilə işləyir, ən pis halda nə edə bilər, geri qaytarıla bilərmi. Ən azı bir tool-u silin, daraldın və ya insan təsdiqi arxasına qoyun.
  3. Beş test-i yazın (sənəd, veb səhifə, e-məktub, tool nəticəsi, memory qeydi vasitəsilə) və onları CI-də işə salın. Neçəsi uğurlu oldu və uğurlu olanların zərəri nə ilə məhdudlaşdı?