Egység 11 / 12

Kódellenőrzés, sérülékenységek és a mesterséges intelligencia kimenetének kockázatai

Nyereség:

  • Az AI kimenet három szinten történő ellenőrzésének lehetősége: pontosság, biztonság és forrás/licenc
  • Képes biztonságos formákkal és eszközökkel fedezni az olyan kockázatokat, mint az injekció, a hallucinációs csomagok és az eltemetett titkok
  • Képes a biztonsági szempontból kritikus kód bemutatására egy hozzáértő mérnök jóváhagyása előtt, és megérti a felelősség át nem ruházhatóságát

Az AI-kód előállítása egyszerű; Bízni benne drága. Ennek az egységnek az egyetlen célja, hogy az „ellenőrzés” elvet, amelyet minden korábbi egységben megismételtünk, szisztematikus mérnöki tudományággá alakítsa. Mert a mesterséges intelligencia által készített kód, még ha első pillantásra helyesnek tűnik is, három különálló veszélyt rejt magában: nem működik/helytelen (hallucináció), bizonytalan (sebezhetőség) és jogi/engedélyezési kockázatokat hordoz. Ha ismeri ezt a hármat, és mindegyikhez létrehoz egy ajtót, akkor Ön profivá tesz.

Itt három szinten vesszük figyelembe az „érvényesítést”: helyesség (a kód valóban elvégzi a feladatot?), biztonság (ellenáll-e a rosszindulatú bemeneteknek?) és származás/licenc (van-e jogom használni ezt a kódot?). Minden rétegnek megvannak a saját vezérlési eszközei, és egyiket sem lehet megkerülni azzal, hogy "ezt mondta az AI".

Három kockázati réteg

1. A pontosság kockázata (hallucináció). A modell meghívhat egy nem létező függvényt, visszaélhet egy API-val, csendben megkerülhet egy éles esetet. A kód "ésszerűnek" tűnik, de hibás. Ellenszer: összeállítás, tesztelés, statikus elemzés és szemrevételezés.

2. Biztonsági kockázat. A mesterséges intelligencia meg tudja ismételni a nem biztonságos mintákat a betanítási adatokban: SQL-befecskendezéssel szembeni sebezhető lekérdezés, nem hitelesített felhasználói bevitel, gyenge titkosítás, nem biztonságos deszerializáció, nyílt átirányítás. A kód működik, de sebezhető a támadásokkal szemben. Ellenszer: biztonság-központú felülvizsgálat, automatizált szkennerek (SAST) és ismert biztonsági minták bevezetése.

3. Forrás/licenc kockázata. A mesterséges intelligencia előállíthat olyan kimenetet, amely nagyon hasonlít a szerzői jog által védett vagy korlátozó licencelt kódra, vagy nem megfelelő licencelt függőséget sugallhat. Ellenszer: függőség- és engedélyellenőrzés, eredetiség-ellenőrzés, vállalati szabályzat.

Vigyázat: A három kockázat közül a legravatalosabb a biztonság; mert a kód átmegy a tesztelésen, zökkenőmentesen fut az éles üzemben, és csak akkor derül ki a sebezhetőség, ha a támadó megtalálja. A „munka” nem ugyanaz, mint a „biztonság”.

Lépésről lépésre: Réteges hitelesítési kapu

  1. Olvass megértéssel. Valóban megértse a kódot, mielőtt elfogadná; Ne vonjon össze olyan kódot, amelyet nem ért. Ha nem tudja megmagyarázni, hogy "miért működik", akkor még nincs érvényesítve.
  2. Ellenőrizze, hogy létezik. Győződjön meg arról, hogy minden használt funkció, API és csomag valóban létezik, és megfelelően van használatban (hallucinációs kapu).
  3. Futtasson automatizált eszközöket. Fordítóprogram, linter (stílus-/hibaszkenner), típusellenőrző, egységtesztek és lehetőség szerint egy SAST (Static Application Security Testing – Static Application Security Testing – eszköz, amely a forráskódban ellenőrzi a sebezhetőségeket).
  4. Nézze meg biztonsági szempontból. A bevitel érvényes? Paraméterezett a lekérdezés? A titok el van temetve? Van-e engedélyezési ellenőrzés?
  5. Ellenőrizze a forrást és a licencet. Az új függőségek engedélyezve vannak? A kimenet túlságosan hasonlít egy ismert kódbázishoz?
  6. Ha biztonsági szempontból kritikus, kérjen szakértői jóváhagyást. A hitelesítés, fizetés, kriptográfia, hozzáférés-ellenőrzés területén jártas mérnök független felülvizsgálata kötelező.

Három mini tok

1. eset – SQL-befecskendezés az ellenőrző kapunál. Az AI által generált kód, amely a felhasználói bevitelt közvetlenül a keresési végpont SQL-lekérdezésébe kapcsolja ("... WHERE név = '" + q + "'"). A kód működött és átment a teszten. A biztonságra fókuszált ellenőrzés és a SAST szkennelés észlelte ezt; Paraméterezett lekérdezéssé (előkészített utasítás) alakították át. Ha nem kapták volna el, az egy klasszikus adatszivárgási sebezhetőség lett volna.

2. eset – Hallucinációs csomag. Az AI egy nem létező npm-csomagot (fast-safe-parse) javasolt egy feladathoz. Amikor a fejlesztő megpróbálta telepíteni, a csomag nem található. Még rosszabb: bizonyos esetekben a támadók az ilyen "szellem" csomagneveket valódi, rosszindulatú csomagokkal tölthetik fel (függőségi zavar). Tanulság: ellenőrizze az egyes ajánlott csomagokat a hivatalos regisztrációs adatbázisban és a letöltési/karbantartási előzményekben.

3. eset – Licenc-kompatibilitás. Az AI által javasolt remek társkönyvtárnak erős copyleft licence volt, amely nem kompatibilis az intézmény terméklicencével. A függőségi licenc vizsgálat ezt jelentette; A csapat a licencet megfelelő alternatívára cserélte. Ellenőrzés nélkül jogi teher keletkezne a termékforgalmazásban.

Négy másolható sablon

Belépés előtti önellenőrzés:

Mielőtt elfogadná a következő mesterséges intelligencia által generált kódot, ellenőrizze: 1) Valóban létezik minden általa használt funkció/API/csomag? Jelölje meg a gyanúsítottakat.2) Vannak-e nem érvényesített beviteli adatok, SQL/parancs-összefűzés, eltemetett titok, gyenge titkosítás?3) Melyek a címzetlen hibák/élesetek? Jelölje meg az egyes megállapításokat "bizonyos/valószínű"-ként, és javasoljon javításokat.{{code}}

Biztonságra összpontosító felülvizsgálat:

Vizsgálja meg ezt a kódot biztonsági szemmel. Keresse a gyakori OWASP-stílusú sebezhetőségeket: injekció, hibás hitelesítés/engedélyezés, érzékeny adatok közzététele, nem biztonságos deszerializáció, hitelesítés nélküli átirányítás. Minden egyes megállapításnál: kockázat, hasznosítási forgatókönyv, kármentesítés. Ez egy előzetes átvilágítás; a kritikus megállapításokat a humánbiztonsági felülvizsgálatra utalja.{{code}}

Függőség és engedély ellenőrzése:

Sorolja fel a kód által hozzáadott/javasolt függőségeket. Mindegyiknél: valóban létezik-e a csomag, karbantartják-e, mi lenne a tipikus licence (ELLENŐRZNI KELL), és valóban szükséges-e a projekthez, vagy meg lehet csinálni egy meglévő eszközzel?{{kód vagy függőségi lista}}

Biztonságos zsaluzás (gyártásban):

Írjon kódot a következőhöz: {{task}}. KÖTELEZŐ biztonsági szabályok:- Minden külső bemenet érvényesítése/megtisztítása.- Csak paraméterezett lekérdezést használjon az adatbázis-elérésben.- Ne ágyazzon be titkokat a kódba; tételezzük fel a környezeti változót/titkos kezelőt – Ne nyelje le a hibákat; Tekintsd értelmesen. Magyarázza el, hogy a kód hogyan felel meg ezeknek a szabályoknak 3 tételben.

Gyenge felszólítás / Erős felszólítás

Gyenge: "Írjon olyan lekérdezést, amely felhasználónév alapján keres." (Előfordulhat, hogy a kód befecskendezhető.)
Erős: "Írjon olyan függvényt, amely felhasználónév alapján keres. Soha ne kapcsolja be a felhasználói bevitelt a lekérdezésbe karakterláncként; használjon paraméterezett lekérdezést (előkészített utasítás). Érvényesítse a bevitelt a hosszúság és a karakter tekintetében. Magyarázza el 2 mondatban, hogy a kód miért zárva a beillesztésre."

Az erős változat kezdettől fogva a biztonságos mintát kényszeríti ki; Így biztosítja, hogy a sérülékenység egyáltalán ne forduljon elő, ahelyett, hogy később elkapná. Mindazonáltal elengedhetetlen, hogy a generált kódot át kell adni az ellenőrző kapukon.

Hitelesítési réteg

Eszköz/módszer

Elég az "AI mondtam"?

pontosság

Összeállítás, tesztelés, szemrevételezés

nem

API/csomag valóság

Hivatalos dokumentum/rekord ellenőrzés

nem

Biztonság

SAST, biztonsági felülvizsgálat

nem

Licenc/forrás

Függőség és engedély ellenőrzése

nem

Biztonságkritikus logika

Szakértői jóváhagyás

Egyáltalán nem

A felelősség nem ruházható át

Az AI-eszköz által előállított kódból eredő hibákért, sebezhetőségekért vagy jogsértésekért a kódot összeállító és terjesztő csapatot terheli a felelősség, nem pedig az eszköz szolgáltatóját. Ez szakmai és jogi tény is: aláírod. Tehát az „AI előállította” nem kifogás, hanem igazolás a fokozott óvatosságra. Különösen a biztonság szempontjából kritikus rendszerekben az AI-kimenet semmilyen körülmények között nem helyettesíti a képzett mérnök általi felülvizsgálatot és jóváhagyást; A mesterséges intelligencia legfeljebb egy tervrajzot ad, amely felgyorsítja a mérnököt.

Tipp: Hozzon létre egy rövid ellenőrzőlistát a csapatában, amelyet „AI által generált kód érvényesítési kapujának” nevez (építés + teszt + biztonsági szkennelés + vizuális ellenőrzés). Ha ez a kapu szokássá válik, a sebességvesztés minimális, a kockázatcsökkentés pedig maximális.

Gyakori hibák

  • A „működik” és a „széf” összekeverése. A teszten átmenő kód sebezhető lehet a támadásokkal szemben.
  • A csomag/API használata ellenőrzés nélkül. A hallucinációs csomagok korruptak és biztonsági kockázatot is jelentenek.
  • Az automatizált eszközök megkerülése. Linter, típusellenőrző és SAST olcsón elkapja, ami az embernek hiányzik.
  • Az engedély figyelmen kívül hagyása. A nem megfelelő licencfüggőség jogi terheket ró a terjesztésre.
  • A felelősséget a járműre hárítani. A csapat felelős az éles kódért; Az „AI megcsináltam” nem mentség.

Összefoglalva

A mesterséges intelligencia kimenetének elfogadása három szintű ellenőrzést igényel: helyesség (fordítás, tesztelés, vizuális ellenőrzés), biztonság (SAST és biztonságközpontú felülvizsgálat) és forrás/licenc (függőségi ellenőrzés). Győződjön meg arról, hogy minden egyes használt csomag és API valóban létezik, kényszerítse ki a biztonságos mintákat a kezdetektől fogva, és küldje be a biztonsági szempontból kritikus kódot jóváhagyásra egy képzett mérnöknek. A „működik” nem jelenti azt, hogy biztonságos, az „AI előállított” pedig nem vonja ki a felelősséget. Az ellenőrző kapu a professzionalizmus ára, nem a gyorsaság.

Pályázati feladat

Szándékosan adjon egy MI-nek egy biztonsági szempontból érzékeny feladatot (pl. „egy függvény, amely felhasználói bevitellel keres az adatbázisban”), ezúttal biztonságos minta előírása nélkül. Adja át a bejövő kódot a „belépés előtti önellenőrzés” és a „biztonságra összpontosító felülvizsgálat” sablonokon keresztül: van-e injekció, eltemetett titok, hallucinált csomag vagy nem hitelesített bevitel? Ezután kérdezze meg újra ugyanazt a feladatot a „biztonságos minta bevetése” sablonnal, és hasonlítsa össze a két kimenetet. Ha lehetséges, futtasson egy linter/SAST eszközt, és hasonlítsa össze az eredményeket az AI önszabályozásával.

ellenőrző lista

  • [ ] Az AI kimenetet három szinten ellenőrzöm: pontosság, biztonság és licenc.
  • [ ] Megerősítem, hogy minden használt funkció, API és csomag valóban létezik.
  • [ ] Fordító, teszt, linter és lehetőség szerint SAST eszközöket futtatok.
  • [ ] Kezdettől fogva biztonságos mintákat írok elő (paraméteres lekérdezés, bemenet érvényesítése, titkos kezelés).
  • [ ] Ellenőrzöm az új függőségek engedélyezését és követelményét.
  • [ ] Biztonsági szempontból kritikus kódot nyújtok be jóváhagyásra egy illetékes mérnökhöz, és tudomásul veszem, hogy felelős vagyok.