Birlik 11 / 12

Kodni tekshirish, zaifliklar va AI chiqishi xavfi

Daromadlar:

  • AI chiqishini uchta qatlamda tekshirish imkoniyati: aniqlik, xavfsizlik va manba/litsenziya
  • Inyeksiya, gallyutsinatsiya paketlari va ko'milgan sirlar kabi xavflarni xavfsiz qoliplar va asboblar bilan qoplash qobiliyati
  • Xavfsizlik uchun muhim kodni vakolatli muhandisning roziligiga taqdim etish va javobgarlikning o'tkazilmasligini tushunish qobiliyati

AI kodini yaratish oson; Unga ishonish qimmatga tushadi. Ushbu bo'limning yagona maqsadi biz avvalgi barcha bo'limlarda takrorlagan "tekshirish" tamoyilini tizimli muhandislik intizomiga aylantirishdir. Chunki sun'iy intellekt tomonidan ishlab chiqarilgan kod, hatto bir qarashda to'g'ri bo'lib ko'rinsa ham, uchta alohida xavfni o'z ichiga oladi: ishlamaydigan/noto'g'ri (gallyutsinatsiya), xavfsiz emas (zaiflik) va qonuniy/litsenziyaviy xavflarni o'z ichiga oladi. Bu uchtasini bilish va ularning har biri uchun eshik o'rnatish sizni professional qiladi.

Bu erda biz "tasdiqlash" ni uchta qatlamda ko'rib chiqamiz: to'g'rilik (kod aslida ishni bajaradimi?), xavfsizlik (u zararli kiritishga bardosh beradimi?) va kelib chiqish/litsenziya (menda ushbu koddan foydalanish huquqi bormi?). Har bir qatlamning o'ziga xos boshqaruv vositalari bor va ularning hech birini "AI shunday dedi" bilan chetlab bo'lmaydi.

Uchta xavf qatlami

1. Aniqlik xavfi (gallyutsinatsiya). Model mavjud bo'lmagan funksiyani chaqirishi, APIdan noto'g'ri foydalanishi, chekka korpusni jimgina chetlab o'tishi mumkin. Kod "oqilona" ko'rinadi, lekin noto'g'ri. Antidot: kompilyatsiya, test, statik tahlil va vizual tekshirish.

2. Xavfsizlik xavfi. Sun'iy intellekt o'quv ma'lumotlaridagi xavfsiz bo'lmagan naqshlarni takrorlashi mumkin: so'rovlar SQL in'ektsiyasi, autentifikatsiya qilinmagan foydalanuvchi kiritishi, zaif shifrlash, xavfsiz seriyani yo'qotish, ochiq qayta yo'naltirish. Kod ishlaydi, lekin hujumga qarshi himoyasiz. Antidot: xavfsizlikka yo'naltirilgan ko'rib chiqish, avtomatlashtirilgan skanerlar (SAST) va ma'lum xavfsiz naqshlarni qo'yish.

3. Manba/litsenziya xavfi. Sun'iy intellekt mualliflik huquqi bilan himoyalangan yoki cheklangan litsenziyalangan kodga juda o'xshash mahsulot ishlab chiqarishi mumkin yoki u noto'g'ri litsenziyalangan qaramlikni taklif qilishi mumkin. Antidot: qaramlik va litsenziyani tekshirish, originallikni tekshirish, korporativ siyosat.

Diqqat: Ushbu uchta xavfning eng makkori xavfsizlikdir; chunki kod sinovdan o'tishi, ishlab chiqarishda muammosiz ishlashi mumkin va zaiflik faqat tajovuzkor uni topganida aniqlanadi. "Ishlash" "xavfsiz" bilan bir xil emas.

Bosqichma-bosqich: Qatlamli autentifikatsiya eshigi

  1. Tushunib o'qing. Kodni qabul qilishdan oldin uni tushunib oling; Tushunmagan kodni birlashtirmang. Agar "nima uchun u ishlayotganini" tushuntira olmasangiz, u hali tasdiqlanmagan.
  2. Uning mavjudligini tasdiqlang. Amaldagi har bir funksiya, API va paket haqiqatda mavjudligini va to'g'ri ishlatilganligini tasdiqlang (gallyutsinatsiya eshigi).
  3. Avtomatlashtirilgan vositalarni ishga tushiring. Kompilyator, linter (uslub/xato skaneri), tip tekshiruvi, birlik testlari va iloji bo'lsa SAST (Static Application Security Testing — zaifliklarni manba kodini skanerlovchi vosita).
  4. Bunga xavfsizlik nuqtai nazaridan qarang. Kirish tasdiqlanganmi? So'rov parametrlanganmi? Sir ko'milganmi? Avtorizatsiya nazorati bormi?
  5. Manba va litsenziyani tekshiring. Yangi bog'liqliklar litsenziyalanganmi? Chiqish ma'lum kod bazasiga juda o'xshashmi?
  6. Agar u xavfsizlik nuqtai nazaridan muhim bo'lsa, mutaxassisning roziligini so'rang. Autentifikatsiya, to'lov, kriptografiya, kirishni nazorat qilish kabi sohalarda vakolatli muhandis tomonidan mustaqil tekshiruv majburiydir.

Uchta mini korpus

1-holat - SQL in'ektsiyasi tekshiruv eshigida ushlandi. AI tomonidan yaratilgan kod, foydalanuvchi ma'lumotlarini to'g'ridan-to'g'ri qidiruv so'nggi nuqtasi uchun SQL so'roviga birlashtiradi ("... WHERE name = '" + q + "'"). Kod ishladi va sinovdan o'tdi. Xavfsizlikka yo'naltirilgan tekshirish va SAST skanerlash buni aniqladi; U parametrlangan so'rovga aylantirildi (tayyorlangan bayonot). Agar u qo'lga olinmaganida, bu klassik ma'lumotlarning sizib chiqishi zaifligi bo'lar edi.

2-holat - Gallyutsinatsiyalar to'plami. AI vazifa uchun mavjud bo'lmagan npm paketini (tezkor-xavfsiz-parse) taklif qildi. Ishlab chiquvchi uni o'rnatmoqchi bo'lganida, paket topilmadi. Bundan ham yomoni: ba'zi hollarda tajovuzkorlar bunday "arvoh" paket nomlarini haqiqiy, zararli paketlar bilan to'ldirishlari mumkin (qaramlik chalkashligi). Dars: tavsiya etilgan har bir paketni rasmiy ro'yxatga olish kitobi va yuklab olish/xizmat ko'rsatish tarixi bilan taqqoslang.

3-holat - Litsenziyaning nomuvofiqligi. Sun'iy intellekt tomonidan taklif qilingan ajoyib hamrohlik kutubxonasi muassasa mahsulot litsenziyasiga mos kelmaydigan kuchli copyleft litsenziyasiga ega edi. Bu haqda qaramlik litsenziyasini skanerlash xabar berdi; Jamoa litsenziyani tegishli muqobil bilan almashtirdi. Tekshiruvsiz mahsulotni taqsimlashda qonuniy yuk paydo bo'ladi.

To'rt nusxa ko'chirish shablonlari

Qabul qilishdan oldin o'z-o'zini tekshirish:

Quyidagi AI tomonidan yaratilgan kodni qabul qilishdan oldin, tekshiring: 1) U foydalanadigan har bir funksiya/API/paket haqiqatda mavjudmi? Gumonlanuvchilarni belgilang.2) Tasdiqlanmagan maʼlumotlar, SQL/buyruqlar birikmasi, koʻmilgan sir, zaif kripto bormi?3) Qaysi hal qilinmagan xatolar/chek holatlar bor? Har bir topilmani “aniq/ehtimol” deb belgilang va tuzatishlarni taklif qiling.{{code}}

Xavfsizlikka yo'naltirilgan ko'rib chiqish:

Ushbu kodni xavfsizlik ko'zi bilan tekshiring. Umumiy OWASP uslubidagi zaifliklarni qidiring: in'ektsiya, buzilgan autentifikatsiya/avtorizatsiya, maxfiy ma'lumotlarni oshkor qilish, xavfsiz seriyani yo'qotish, autentifikatsiya qilinmagan qayta yo'naltirish. Har bir topilma uchun: xavf, ekspluatatsiya stsenariysi, tuzatish. Bu dastlabki skrining; muhim xulosalarni inson xavfsizligi tekshiruviga havola qiling.{{code}}

Tobelik va litsenziyani tekshirish:

Ushbu kod tomonidan qo'shilgan/taklif etilgan bog'liqliklarni sanab o'ting. Ularning har biri uchun: paket haqiqatan ham mavjudmi, u saqlanadimi, uning odatiy litsenziyasi nima bo'lishi kerak (TASHQIRISH KERAK) va u haqiqatan ham loyiha uchun kerakmi yoki uni mavjud vosita yordamida amalga oshirish mumkinmi?{{kod yoki qaramlik ro'yxati}}

Xavfsiz qoliplarni o'rnatish (ishlab chiqarishda):

{{task}} uchun kod yozing. Majburiy xavfsizlik qoidalari:- Barcha tashqi maʼlumotlarni tekshirish/sanitizatsiya qilish.- Maʼlumotlar bazasiga kirishda faqat parametrlangan soʻrovdan foydalanish.- Kodga sirlarni kiritmang; muhit o'zgaruvchisi/maxfiy menejerni qabul qilish - xatolarni yutib yubormang; Buni mazmunli ko'rib chiqing. Kodning ushbu qoidalarga qanday mos kelishini 3 ta bandda tushuntiring.

Zaif taklif / Kuchli taklif

Zaif: "Foydalanuvchi nomi bo'yicha qidiradigan so'rovni yozing." (In'ektsiya uchun zaif kod paydo bo'lishi mumkin.)
Kuchli: "Foydalanuvchi nomi boʻyicha qidiradigan funksiyani yozing. Hech qachon foydalanuvchi kiritishini soʻrovga satr sifatida qoʻshmang; parametrlangan soʻrovdan (tayyorlangan bayonot) foydalaning. Uzunlik va belgilar uchun kiritilgan maʼlumotlarni tasdiqlang. Kod nima uchun inyeksiya uchun yopiqligini 2 ta jumla bilan tushuntiring."

Kuchli versiya boshidan xavfsiz namunani qo'yadi; Shunday qilib, u zaiflikni keyinchalik qo'lga olishdan ko'ra, umuman yuzaga kelmasligini ta'minlaydi. Biroq, yaratilgan kodni tekshirish eshiklari orqali o'tkazish juda muhimdir.

Autentifikatsiya qatlami

Asbob/usul

"AI dedi" yetarlimi?

aniqlik

Kompilyatsiya, sinov, vizual tekshirish

yo'q

API/paket haqiqati

Rasmiy hujjat/yozuv nazorati

yo'q

Xavfsizlik

SAST, xavfsizlik tekshiruvi

yo'q

Litsenziya/manba

Tobelik va litsenziyani tekshirish

yo'q

Xavfsizlik-tanqidiy mantiq

Mutaxassis muhandisning roziligi

Mutlaqo yo'q

Mas'uliyatni o'tkazish mumkin emas

AI vositasi tomonidan ishlab chiqarilgan koddan kelib chiqadigan xatolar, zaifliklar yoki buzilishlar uchun javobgarlik asbob provayderiga emas, balki ushbu kodni yig'adigan va tarqatadigan jamoaga tegishli. Bu qonuniy va professional fakt: siz imzolaysiz. Shunday qilib, "AI uni ishlab chiqardi" bahona emas, balki qo'shimcha ehtiyotkorlik uchun asosdir. Ayniqsa, xavfsizlik nuqtai nazaridan muhim tizimlarda, AI chiqishi hech qanday sharoitda malakali muhandis tomonidan ko'rib chiqish va tasdiqlash o'rnini bosa olmaydi; Eng ko'p, AI bu muhandisni tezlashtiradigan loyihani taqdim etadi.

Maslahat: Jamoangizda “AI tomonidan yaratilgan kodni tekshirish eshigi” deb ataydigan qisqa nazorat roʻyxatini yarating (qurilish + sinov + xavfsizlikni tekshirish + vizual tekshirish). Ushbu darvoza odat tusiga kirgach, tezlikni yo'qotish minimal bo'ladi va xavfni kamaytirish maksimal bo'ladi.

Umumiy xatolar

  • “Ishlar”ni “xavfsiz” bilan chalkashtirib yuborish. Sinovdan o'tgan kod hujumga moyil bo'lishi mumkin.
  • Paket/API dan uni tasdiqlamasdan foydalanish. Gallyutsinatsiyali paketlar buziladi va xavfsizlikka xavf tug'diradi.
  • Avtomatlashtirilgan vositalarni chetlab o'tish. Linter, type checker va SAST odamlar sog'inadigan narsalarni arzonga tushiradi.
  • Litsenziyaga e'tibor bermaslik. Noto'g'ri litsenziyalangan qaramlik tarqatishda qonuniy yuk yaratadi.
  • Mas'uliyatni avtomobilga yuklash. Jamoa ishlab chiqarishdagi kod uchun javobgardir; "AI buni qildi" bahona emas.

Xulosa

AI chiqishini qabul qilish uchta tekshirish qatlamini talab qiladi: to'g'rilik (kompilyatsiya, test, vizual tekshirish), xavfsizlik (SAST va xavfsizlikka yo'naltirilgan ko'rib chiqish) va manba/litsenziya (qaramlikni tekshirish). Ishlatilgan har bir paket va API haqiqatda mavjudligini tasdiqlang, xavfsiz namunalarni boshidan tatbiq eting va malakali muhandis tomonidan tasdiqlash uchun xavfsizlik uchun muhim kodni yuboring. "Ishlar" xavfsiz degani emas va "AI ishlab chiqarilgan" javobgarlikni olib tashlamaydi. Tasdiqlash eshigi - bu tezlik emas, balki professionallik narxi.

Ilova vazifasi

AIga ataylab xavfsizlikni ta'minlaydigan vazifani bering (masalan, "foydalanuvchi kiritishi bilan ma'lumotlar bazasini qidiradigan funksiya"), bu safar xavfsiz namuna qo'ymasdan. Kiruvchi kodni "qabul qilishdan oldin o'z-o'zini tekshirish" va "xavfsizlikka yo'naltirilgan ko'rib chiqish" shablonlari orqali o'tkazing: in'ektsiya, ko'milgan sir, gallyutsinatsiyalangan paket yoki autentifikatsiya qilinmagan kirish bormi? Keyin xuddi shu vazifani "xavfsiz naqsh o'rnatish" shablonidan so'rang va ikkita natijani solishtiring. Iloji bo'lsa, linter/SAST vositasini ishga tushiring va topilmalarni AIning o'zini o'zi boshqarishi bilan solishtiring.

nazorat ro'yxati

  • [ ] Men AI chiqishini uchta qatlamda tekshiraman: aniqlik, xavfsizlik va litsenziya.
  • [ ] Men ishlatiladigan har bir funksiya, API va paket haqiqatda mavjudligini tasdiqlayman.
  • [ ] Men kompilyatsiya, test, linter va iloji bo'lsa, SAST vositalarini ishlataman.
  • [ ] Men boshidan xavfsiz namunalarni (parametrli so'rov, kiritishni tekshirish, maxfiy boshqaruv) qo'yaman.
  • [ ] Men litsenziyalash va yangi bog'liqliklar talabini tekshiraman.
  • [ ] Men xavfsizlik uchun muhim kodni vakolatli muhandis tomonidan tasdiqlash uchun topshiryapman va men javobgar ekanligimni tushunaman.