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
- 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.
- 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).
- 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).
- 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?
- 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?
- 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.