Daromadlar:
- Sun'iy intellektdan ikkinchi ko'z sifatida foydalanish va kontekstni berish orqali kodda OWASP sinfidagi zaifliklarni (in'ektsiya, qattiq sir, kirishni boshqarish) belgilash qobiliyati
- Sun'iy intellekt tomonidan yaratilgan noto'g'ri pozitivlarni kontekst bilan bartaraf etish va har bir topilmani tasdiqlamasdan haqiqiy zaiflik sifatida ko'rib chiqishning oldini olish qobiliyati
- Sun'iy intellekt tomonidan taklif qilingan tuzatish yangi zaifliklarni/xatolarni keltirib chiqarishi va har bir yamoqni ko'rib chiqish va sinov eshigi orqali o'tkazishi mumkinligini tan olish qobiliyati
Dasturiy ta'minotdagi zaifliklar eng qimmat zaifliklar qatoriga kiradi, chunki ular boshidanoq mahsulotga kiritilgan va millionlab foydalanuvchilarga tarqatiladi. Xavfsiz kodni ko'rib chiqish - bu ishlab chiqarishga kirishdan oldin manba kodini satr bo'yicha o'qish va zaifliklarni aniqlash jarayoni - SQL in'ektsiyasi, autentifikatsiya zaifligi, qattiq kodlangan parol, noto'g'ri avtorizatsiya. Qo'lda bajarilganda, u sekin va charchagan; Katta kod bazasidagi zaiflikni o'tkazib yuborish oson.
AI ikki sababga ko'ra kodni ko'rib chiqishda kuchli: kod ham tildir va AI naqshni aniqlashda yaxshi. AI kod qismidagi xavfli naqshlarni tezda belgilashi mumkin (foydalanuvchi kiritgan ma'lumotlarni to'g'ridan-to'g'ri so'rovga qo'yish, shifrlanmagan ma'lumotlarni saqlash, kiritilmagan kirish tekshiruvi), nima uchun har birining xavfli ekanligini tushuntirib beradi va tuzatishni taklif qiladi. Ammo AI kodning butun operatsion kontekstini ko'rmaydi (kirish boshqa qatlamda o'chirilishi mumkin), u mavjud bo'lmagan zaiflikni ixtiro qilishi (noto'g'ri ijobiy) yoki haqiqiy zaiflikni (noto'g'ri salbiy) o'tkazib yuborishi mumkin va eng muhimi, u taklif qilgan "tuzatish" yangi zaiflik yoki xatoni keltirib chiqarishi mumkin. AI kodni ko'rib chiqishda ikkinchi ko'z va ko'rsatkichdir; Ishlab chiquvchi va xavfsizlik bo'yicha mutaxassis topilma haqiqiy zaiflik ekanligi va tuzatish to'g'ri va xavfsizmi yoki yo'qligini hal qiladi.
Kodni ko'rib chiqish bosqichlari
- Qamrov va kontekstni bering. Qaysi til, qaysi ramka, bu kod qayerda kiritishni oladi, qayerda chiqadi, qaysi qatlamda ishlaydi? Kontekstsiz kodni ko'rib chiqish noto'g'ri pozitivlarni keltirib chiqaradi.
- Xavfli naqshlarni qidiring. Ma'lum bo'lgan AI zaiflik sinflarini qidiring (masalan, OWASP Top 10): in'ektsiya, autentifikatsiya, maxfiy ma'lumotlarni oshkor qilish, kirishni boshqarish.
- Har bir topilmani asoslab bering. Har bir bayroq uchun: qaysi chiziq, qaysi zaiflik sinfi, undan qanday foydalanish mumkin, qanday dalil. Asossiz topilma jiddiy qabul qilinmaydi.
- Noto'g'ri pozitivni yo'q qiling. Kirish haqiqatan ham tozalanmoqdami, bu yo'l haqiqatan ham mavjudmi - kontekst bilan tekshiring.
- Tuzatishni tasdiqlang. AI tomonidan tavsiya etilgan yamoq haqiqatda zaiflikni yopayotganini, yangi zaifliklarni/xatolarni kiritmasligini va sinovdan o'tganini tasdiqlang.
- Inson roziligi. Ishlab chiquvchi + xavfsizlik eksperti topilma va tuzatishni ko'rib chiqadi; Shunday qilib, u kod omboriga kiradi.
Shartlar: SAST (Static Application Security Testing — manba kodini ishga tushirmasdan tahlil qiluvchi statik xavfsizlik testi). DAST (Dinamik - ishlayotgan ilovani tashqaridan sinovdan o'tkazuvchi dinamik test). OWASP Top 10 - eng keng tarqalgan veb-ilova zaifliklarining standart ro'yxati. Injection - foydalanuvchi kiritgan ma'lumotlarni buyruq/so'rov sifatida talqin qilish natijasida yuzaga keladigan zaiflik (masalan, SQL in'ektsiyasi). Parametrlangan so'rov - kirishni koddan ajratish orqali in'ektsiyani oldini oladigan to'g'ri usul.
Umumiy zaiflik sinflari jadvali
Zaiflik klassi
Alomat (kodda)
to'g'ri yechim
AI tuzog'i
SQL in'ektsiyasi
So'rovga kiritish
Parametrlangan so'rov
Sanitatsiyani e'tiborsiz qoldirishi mumkin
qattiq kodlangan sir
Parol/koddagi kalit
Maxfiy seyf (qnoz), env
Noto'g'ri ijobiy (namuna/sinov)
Zaif autentifikatsiya
Yo'qolgan/noto'g'ri boshqaruv
Kuchli, markazlashtirilgan boshqaruv
kontekstni o'tkazib yuboradi
Noto'g'ri kirish nazorati
Avtorizatsiya tekshiruvi yo'q
Server tomonidan avtorizatsiya
Murakkab oqimni tushunmaydi
Nozik ma'lumotlarni oshkor qilish
Parolsiz saqlash/roʻyxatga olish
Shifrlash, maskalash
Tanqidiylikni bilish mumkin emas
Ishonchsiz serializatsiya
Ishonchsiz ma'lumotlarni seriyadan chiqarish
Xavfsiz tahlil qilish
Kamdan-kam uchraydigan naqsh
uchta mini holat
1-holat - Haqiqiy in'ektsiyani ushlash. Ishlab chiquvchi AI ma'lumotlarga kirish funktsiyasini tekshiradi. AI foydalanuvchining userId qiymati to'g'ridan-to'g'ri SQL matniga birlashtirilgan qatorni belgilaydi va "bu klassik SQL in'ektsiyasi, uni parametrlangan so'rovga aylantiring" deb aytadi; Namuna tuzatishni ta'minlaydi. Ishlab chiquvchi kiritish boshqa joyda sanitarizatsiya qilinmaganligini tasdiqlaydi, uning haqiqiy zaiflik ekanligini tasdiqlaydi, tavsiya etilgan parametrlangan so'rovni amalga oshiradi va test yozadi. AI zaiflikni ta'kidladi; tekshirish va tuzatish testi ishlab chiquvchidan kelgan.
2-holat - noto'g'ri ijobiy aniqlangan sir. AI faylda parol = "test1234" qatorini ko'radi va "tanqidiy: qattiq kodlangan parol" deb aytadi. Ishlab chiquvchi kontekstni tekshiradi: bu birlik test fayli, ishlab chiqarishga chiqarilmagan va haqiqiy tizimga o'tkazilmagan test ma'lumotlari. Topilma noto'g'ri ijobiydir. Ishlab chiquvchi buni hujjatlashtiradi, lekin hech qanday chora ko'rmaydi, chunki bu haqiqiy sir emas. Dars: AIning "qattiq sir" belgisi kontekstga qarab yo'q qilinishi kerak; Har bir satr sir emas.
3-holat - yangi zaiflikni tuzatish. AI XSS (saytlararo skript) zaifligini tuzatishni taklif qiladi; lekin u taklif qilgan kod noto'g'ri joyda kiritishni tozalaydi va boshqa sohada chiqish kodlashni o'tkazib yuboradi; Natijada, bo'shliq to'liq yopilmaydi. Xavfsizlik mutaxassisi tuzatishni ko'rib chiqadi, etishmayotgan kodlashni ko'radi va uni to'g'ri qatlamda tuzatadi. Dars: AI tavsiya qiladigan yamoq avtomatik ravishda xavfsiz emas; Har bir tuzatish ko'rib chiqiladi va sinovdan o'tkaziladi.
Zaif taklif / Kuchli taklif
Zaif taklif:
Ushbu kodda bo'shliq bormi, uni tuzating: [kod]
Ushbu taklif kontekstni (til, ramka, kirish manbai) bermaydi, asoslashni so'ramaydi, noto'g'ri pozitivni shubha ostiga qo'ymaydi va AI tomonidan ishlab chiqarilgan tuzatishni ko'r-ko'rona qabul qilishga ochiq. AI haqiqiy zaiflikning ham, mavjud bo'lmaganning ham belgilarini aralashtirib yubordi.
Kuchli so'rov:
Sizning rolingiz: xavfsiz kodni ko'rib chiqishda dasturchining IKKINCHI KO'Z bo'lgan yordamchisi. Qaror qabul qilish; to'g'ridan-to'g'ri qo'llaniladigan tuzatishni ko'rib chiqing. Kod: [tilni/ramkani belgilang]. Kontekst: bu funksiya [kirish manbai: masalan. [tashqi HTTP so'rovi] ni oladi, [chiqish manziliga] yozadi. Sizning vazifangiz: (1) OWASP klassi bilan yuzaga kelishi mumkin bo'lgan zaifliklarni belgilang, qator raqamini bering + nima uchun xavfli + qanday foydalanish kerak + har biri uchun dalillar, (2) har bir topilma uchun kamida 1 ta noto'g'ri ijobiy stsenariy yozing (masalan, agar kirish boshqa qatlamda sanitarlangan bo'lsa), (3) tuzatishni taklif qiling, lekin "[ko'rib chiqish + test yozish]" belgisi bilan; Shuningdek, tuzatish yangi zaifliklar/xatolar kiritadimi yoki yo'qligini ham baholang. Soxta zaiflik qo'shish.[kod]
Kuchli taklif kontekstni beradi, OWASP sinfini va dalillarni so'raydi, noto'g'ri pozitiv va tuzatish xavfini so'raydi, odamlarni tekshirishga majbur qiladi.
Ko‘chirish mumkin bo‘lgan shablonlar
OSHIQLIKLARNI SKANISH SHABLONI OWASP Top 10 uchun [til/ramka] kodini ko'rib chiqing. Har bir mumkin bo'lgan topilma uchun: qator raqami, zaiflik sinfi, nima uchun xavfli ekanligi, namunadan foydalanish, dalillarning kuchi (aniq/ehtimol/zaif). Kontekst: kiritish [manba], chiqish [maqsad]. Soxta topilmalarni qo'shish; Agar ishonchingiz komil bo'lmasa, "[tasdiqlanishi kerak]" deb yozing. Kod: [qo'yish]
YOLG'ON POZİTİV YO'Q QILISh QALBONI Quyidagi kodni topish uchun haqiqiy zaiflik mavjud bo'lmagan stsenariylarni sanab o'ting: kirish boshqa qatlamda tozalanishi mumkinmi, bu yo'ldan foydalanish mumkinmi, bu qiymat sinov/namunami, ramka avtomatik himoyalanganmi. Har biri uchun qanday tasdiqlash kerakligini yozing. Topish: [qo'yish]
TUZISH BAHOLASH SHABLANIQuyidagi zaiflikni tuzatishni tavsiya eting; keyin o'zingizning tuzatishingizni tanqid qiling: (1) u haqiqatan ham zaiflikni yopadimi, (2) yangi zaiflik/xato kiritadimi, (3) qanday test yozishim kerak (ijobiy va salbiy holat), (4) ishlash/funksionallikka ta'sir. Men tuzatishni ko'rib chiqaman va sinab ko'raman. Zaiflik + kod: [qo'yish]
Zaiflik klassi uchun XAVFSIZ NALON O'QITISH SHABLONI [masalan. SQL injection] ushbu tilda/ramkada xavfsiz yozish naqshini va keng tarqalgan xato naqshlarni qiyosiy ko'rsatadi. Umumiy qoida + kod misolini keltiring; lekin uni kodimga qo'llashdan oldin kontekstni so'rashingizni xohlayman. Til/ramka: [yozish]
Umumiy xatolar
- Kontekstsiz ko'rib chiqish. Til, ramka va kiritish/chiqish kontekstisiz AI haqiqiy va soxta topilmalarni chalkashtirib yuboradi; Kontekstni berganingizga ishonch hosil qiling.
- Har bir belgini haqiqiy zaiflik deb atash. AI noto'g'ri pozitivlarni ishlab chiqaradi (sinov ma'lumotlari, boshqa qatlamda tozalangan kirish); Har bir topilmani kontekst bilan elakdan o'tkazing.
- AI tuzatishni ko'r-ko'rona qo'llash. Tavsiya etilgan yamoq yangi zaifliklar/xatolar kiritishi mumkin; testlarni ko'rib chiqish va yozish.
- Yolg'on salbiyga ishonish. AI "zaifliklar yo'q" desa ham, muhim yo'llarni o'zingiz ko'rib chiqing; Statik skanerlash har qanday zaiflikni aniqlay olmaydi.
- Tashqi vositaga kod/sirni berish. Shaxsiy kod va haqiqiy sirlar (kalit, parol) intellektual mulk va zaiflikdir; anonimlashtirish yoki korporativ, izolyatsiya qilingan vositalardan foydalanish.
Maslahat: AI ko'rib chiqish kodiga ega bo'lganingizda, eng samarali filtr har bir topilma uchun "dalilning kuchliligini" (aniq/ehtimol/zaif) so'rashdir. "Zaif" deb belgilangan topilmalarning aksariyati noto'g'ri; siz o'z kuchingizni "ishonchli"larga ajratasiz.
Diqqat: AI tomonidan tavsiya etilgan xavfsizlik tuzatishi sinovdan o'tmasdan omborga kirmasligi kerak. Noto'g'ri "tuzatish" zaiflikni ochiq qoldirishi va ishlab chiqarishdagi funktsional xatolikka olib kelishi mumkin; Har bir yamoq ko'rib chiqish va sinovdan o'tadi.
qisqa bayoni; yakunida
Xavfsiz kodni ko'rib chiqish zaifliklarni ishlab chiqarishga kirishdan oldin aniqlashning eng arzon usuli hisoblanadi va kod til bo'lganligi sababli, AI bu erda kuchli ikkinchi ko'zga aylanadi: xavfli naqshlarni belgilaydi, xavfni tushuntiradi, tuzatishlarni taklif qiladi. Ammo AI butun operatsion kontekstni ko'rmaydi, noto'g'ri ijobiy va noto'g'ri negativlarni ishlab chiqaradi va u tavsiya qilgan yamoq yangi zaifliklarni keltirib chiqarishi mumkin. Shunday qilib, ko'rib chiqish olti bosqichdan iborat (kontekst, skrining, asoslash, noto'g'ri ijobiy bartaraf etish, tuzatishni tekshirish, odamlar tomonidan ma'qullash) va qaror ishlab chiquvchi va xavfsizlik bo'yicha mutaxassis tomonidan qabul qilinadi. Uch tamoyil: hech qanday topilma kontekstsiz izohlanmaydi, har bir belgi kontekst bilan yo'q qilinadi, hech qanday tuzatish tekshirilmagan xotiraga tushmaydi. Va kod/sir hech qachon anonimizatsiyasiz tashqi vositaga berilmaydi.
Ilova vazifasi
Namuna kod parchasini oling (o'z kodingizdan nozik qismlarni yoki zaifliklari bo'lgan namuna kodini olib tashlang). Sun'iy intellekt uni "Zaifliklarni skanerlash" shablonidan foydalanib ko'rib chiqsin; Har bir topilma uchun "Yolg'on pozitiv yo'q qilish" shablonini qo'llang va haqiqiylarini yo'q qiling. “Tuzatish baholash” shablonidan foydalanib, eng jiddiy topilmani tuzatishni oling, uni o'zingiz ko'rib chiqing va bitta ijobiy + bitta salbiy test ishini yozing. Qancha topilma noto'g'ri ijobiy ekanligiga e'tibor bering.
nazorat ro'yxati
- [ ] Men kodni ko'rib chiqishdan oldin til, ramka va kiritish/chiqish kontekstini berdim.
- [ ] Men har bir topilma uchun qator raqami, zaiflik sinfi, ekspluatatsiya yo‘li va dalillarni so‘radim.
- [ ] Men har bir topilmani kontekst bilan noto‘g‘ri pozitivlar uchun tekshirdim.
- [ ] Men AIning tuzatishini ko'r-ko'rona qo'llamaganman; Men ko'rib chiqdim va test yozdim.
- [ ] "Zaifliklar yo'q" chiqishiga qaramay, men o'zim tanqidiy yo'llarni ko'rib chiqdim.
- [ ] Men kod/sirlarni anonimlashtirdim yoki korporativ izolyatsiya qilingan asboblardan foydalandim.
- [ ] Men kashfiyot va tuzatishni ishlab chiquvchi + xavfsizlik ma'qullashi orqali o'tkazdim.