Табыстар:
- Жасанды интеллектті екінші көз ретінде пайдалану және мәтінмән беру арқылы кодта OWASP сыныбының осалдықтарын (инъекция, қатты құпия, қатынасты басқару) белгілеу мүмкіндігі
- Жасанды интеллект арқылы жасалған жалған позитивтерді контекстпен жою және әрбір табылғанды растамай-ақ нақты осалдық ретінде қарастырудың алдын алу мүмкіндігі
- Жасанды интеллект ұсынған түзету жаңа осалдықтарды/қателерді енгізуі және әрбір патчты шолу және тестілеу қақпасы арқылы өткізуі мүмкін екенін мойындау мүмкіндігі
Бағдарламалық қамтамасыз етудегі осалдықтар ең қымбат осалдықтардың бірі болып табылады, себебі олар өнімге басынан бастап енгізілген және миллиондаған пайдаланушыларға таратылады. Қауіпсіз кодты қарап шығу - бұл өндіріске кіріспес бұрын бастапқы кодты жол бойынша оқу және осалдықтарды - SQL инъекциясы, аутентификацияның осалдығы, қатты кодталған құпия сөз, дұрыс емес авторизация - анықтау процесі. Қолмен орындаған кезде ол баяу және шаршатады; Үлкен код базасындағы осалдықты жіберіп алу оңай.
AI екі себеп бойынша кодты тексеруде күшті: код сонымен қатар тіл болып табылады және AI үлгіні тануда жақсы. AI код бөлігіндегі қауіпті үлгілерді жылдам белгілей алады (пайдаланушы енгізуін тікелей сұрауға енгізу, шифрланбаған деректерді сақтау, енгізуді тексерудің болмауы), әрқайсысының неліктен қауіпті екенін түсіндіреді және түзетуді ұсына алады. Бірақ AI кодтың бүкіл операциялық контекстін көрмейді (енгізу басқа қабатта жойылуы мүмкін), ол жоқ осалдықты ойлап табуы мүмкін (жалған позитивті) немесе нақты осалдықты жіберіп алуы (жалған теріс) және ең бастысы, ол ұсынған «түзету» жаңа осалдықты немесе қатені енгізуі мүмкін. AI - кодты қараудағы екінші көз және көрсеткіш; Әзірлеуші және қауіпсіздік сарапшысы табылған нақты осалдық болып табылатынын және түзетудің дұрыс және қауіпсіз екенін шешеді.
Кодты қарау қадамдары
- Ауқымды және контекстті көрсетіңіз. Бұл код қай тіл, қай фреймворк, қай жерде енгізуді қабылдайды, қай жерде шығаруды береді, қай қабатта жұмыс істейді? Мәтінмәнсіз кодты қарау жалған позитивтерді тудырады.
- Қауіпті үлгілерді іздеңіз. Белгілі AI осалдық кластарын іздеңіз (мысалы, OWASP Top 10): инъекция, аутентификация, құпия деректерді ашу, кіруді басқару.
- Әрбір тұжырымды дәлелдеңіз. Әрбір жалауша үшін: қай сызық, қандай осалдық класы, оны қалай пайдалануға болады, қандай дәлелдер бар. Негізсіз тұжырымға мән берілмейді.
- Жалған позитивті жою. Енгізу шынымен тазаланып жатыр ма, бұл жол шынымен қол жетімді ме — контекстпен тексеріңіз.
- Түзетуді тексеріңіз. AI ұсынған патч шынымен осалдықты жабатынын, жаңа осалдықтарды/қателерді енгізбейтінін және сынақтан өткенін растаңыз.
- Адамның мақұлдауы. Әзірлеуші + қауіпсіздік сарапшысы табуды және түзетуді қарайды; Осылайша ол код репозиторийіне кіреді.
Шарттар: SAST (Статикалық қолданба қауіпсіздігі сынағы — бастапқы кодты іске қоспай-ақ талдайтын статикалық қауіпсіздік сынағы). DAST (Динамикалық — іске қосылған қолданбаны сырттан тексеретін динамикалық сынақ). OWASP Top 10 - ең көп таралған веб-бағдарлама осалдықтарының стандартты тізімі. Инъекция – пайдаланушы енгізуін пәрмен/сұрау ретінде түсіндіруден туындаған осалдық (мысалы, SQL инъекциясы). Параметрленген сұрау енгізуді кодтан бөлу арқылы енгізуді болдырмайтын дұрыс әдіс.
Жалпы осалдық кластарының кестесі
Осалдық класы
Симптом (кодта)
дұрыс шешім
AI тұзағы
SQL инъекциясы
Сұраудағы енгізуді біріктіру
Параметрленген сұрау
Санитизацияны елемеу мүмкін
қатаң кодталған құпия
Құпия сөз/кодтағы кілт
Құпия сейф (қойма), конв
Жалған оң (үлгі/сынақ)
Әлсіз аутентификация
Жетіспейтін/дұрыс емес басқару
Күшті, орталықтандырылған басқару
контекстті жіберіп алады
Қате қол жеткізуді басқару
Авторизацияны тексеру жоқ
Сервер тарапынан авторизация
Күрделі ағынды түсінбейді
Сезімтал деректерді ашу
Құпия сөзсіз сақтау/тіркеу
Шифрлау, маскалау
Сыншылдықты біле алмайды
Қауіпсіз сериялау
Сенімсіз деректерді сериядан шығару
Қауіпсіз талдау
Сирек үлгіні өткізіп жібереді
үш шағын іс
1-жағдай – Нақты инъекцияны ұстау. Әзірлеушіде AI деректерге қол жеткізу функциясын тексереді. AI пайдаланушының userId мәні тікелей SQL мәтініне біріктірілген жолды белгілейді және «бұл классикалық SQL инъекциясы, оны параметрленген сұрауға айналдырыңыз» дейді; Үлгіні түзетуді қамтамасыз етеді. Әзірлеуші енгізудің басқа жерде тазартылмағанын растайды, оның нақты осалдық екенін тексереді, ұсынылған параметрленген сұрауды жүзеге асырады және сынақ жазады. AI осалдықты атап көрсетті; тексеру және түзету сынағы әзірлеушіден келді.
2-жағдай - Жалған оң тіркелген құпия. AI файлдағы құпия сөз = «test1234» жолын көреді және «сыни: қатты кодталған құпия сөз» дейді. Әзірлеуші контекстті тексереді: бұл бірлік сынақ файлы, өндіріске шығарылмаған және нақты жүйеге тасымалданбаған жалған сынақ деректері. Анықтама жалған позитив болып табылады. Әзірлеуші мұны құжаттайды, бірақ әрекет жасамайды, себебі бұл нақты құпия емес. Сабақ: АИ-нің «қатты құпия» белгісі контекст бойынша жойылуы керек; Әрбір жол құпия емес.
3-жағдай - Жаңа осалдықты түзету. AI XSS (сайтаралық сценарий) осалдығын түзетуді ұсынады; бірақ ол ұсынған код енгізуді дұрыс емес жерде тазартады және басқа аймақта шығыс кодтауын өткізіп жібереді; Соның салдарынан алшақтық толығымен жабылмайды. Қауіпсіздік сарапшысы түзетуді қарастырады, жетіспейтін кодтауды байқайды және оны дұрыс қабатта түзетеді. Сабақ: AI ұсынатын патч автоматты түрде қауіпсіз емес; Әрбір түзету тексеріліп, тексеріледі.
Әлсіз шақыру / Күшті шақыру
Әлсіз шақыру:
Бұл кодта олқылық бар ма, оны түзетіңіз: [код]
Бұл шақыру мәтінмәнді (тіл, негіз, кіріс көзі) бермейді, негіздеуді сұрамайды, жалған позитивке күмән келтірмейді және AI жасаған түзетуді соқыр қабылдауға ашық. AI нақты осалдықтың да, жоқтың да белгілерін араластырды.
Күшті шақыру:
Сіздің рөліңіз: қауіпсіз кодты тексеруде әзірлеушіге ЕКІНШІ КӨЗ болып табылатын көмекші. Шешім қабылдау; тікелей қолданылатын түзетуді қарастырыңыз. Код: [тілді/жақтауды көрсетіңіз]. Мәтінмән: бұл функция [енгізу көзі: мысалы. [сыртқы HTTP сұрауын] алады, [шығару тағайындалған жеріне] жазады. Сіздің тапсырмаңыз: (1) мүмкін осалдықтарды OWASP сыныбымен белгілеңіз, жол нөмірін беріңіз + неге қауіпті + қалай пайдалану керек + әрқайсысы үшін дәлелдер, (2) әрбір табылған нәтиже үшін кемінде 1 жалған оң сценарий жазыңыз (мысалы, кіріс басқа қабатта тазартылған болса), (3) түзетуді ұсыныңыз, бірақ "[қарау + сынақ жазу]" белгісімен; Сондай-ақ түзету жаңа осалдықтарды/қателерді енгізетінін бағалаңыз. Жалған осалдықты қосу.[код]
Күшті нұсқау мәтінмән береді, OWASP класы мен дәлелдерін сұрайды, жалған позитивті және түзету тәуекелдерін сұрайды, адамды тексеруге мәжбүр етеді.
Көшіретін шақыру үлгілері
ОСАЛДЫҚТЫ САҚТАУ ҮЛГІСІ OWASP Top 10 үшін [тіл/жақтау] кодын тексеріңіз. Әрбір ықтимал анықтама үшін: жол нөмірі, осалдық класы, оның неліктен қауіпті екендігі, үлгіні пайдалану, дәлелдемелердің күші (белгілі/мүмкін/әлсіз). Мәтінмән: енгізу [көз], шығыс [мақсат]. Жасанды тұжырымдарды қосу; Егер сенімді болмасаңыз, «[тексеру керек]» деп теріңіз. Код: [қою]
ЖАЛҒАН ОҢ ЖОЮ ҮЛГІСІ Келесі кодты табу үшін нақты осалдық ЕМЕС сценарийлерді тізімдеңіз: кіріс басқа деңгейде жойылуы мүмкін бе, бұл жол қолжетімді ме, бұл мән сынақ/үлгі ме, жүйе автоматты түрде қорғалған ба. Әрқайсысы үшін қалай растау керектігін жазыңыз. Табу: [қою]
ТҮЗЕТУ БАҒАЛАУ ҮЛГІСІ Келесі осалдықты түзетуді ұсыныңыз; содан кейін өз түзетуіңізді сынаңыз: (1) ол шынымен осалдықты жабады ма, (2) ол жаңа осалдық/қате енгізе ме, (3) қандай сынақты жазуым керек (оң және теріс жағдай), (4) өнімділікке/функционалдылыққа әсері. Мен түзетуді тексеремін және тексеремін. Осалдық + код: [қою]
Осалдық сыныбына арналған ҚАУІПСІЗ ҮЛГІСІ ОҚЫТУ ҮЛГІСІ [мысалы. SQL инъекциясы] салыстырмалы түрде қауіпсіз теру үлгісін және осы тілдегі/жақтаудағы жалпы қате үлгілерді көрсетеді. Жалпы ереже + код үлгісін келтіріңіз; бірақ менің кодымда оны енгізбес бұрын контекстті сұрағаныңызды қалаймын. Тіл/жақтау: [жазу]
Жалпы қателер
- Мәтінмәнсіз шолу. Тілсіз, құрылымсыз және енгізу/шығару контекстінсіз AI нақты және жалған қорытындыларды шатастырады; Контекст беруді ұмытпаңыз.
- Әрбір белгіні нағыз әлсіздікпен қателесу. AI жалған позитивтерді шығарады (сынақ деректері, басқа қабатта тазартылған кіріс); Әрбір тұжырымды контекстпен електен өткізіңіз.
- AI түзетуін соқыр қолдану. Ұсынылған патч жаңа осалдықтарды/қателерді енгізуі мүмкін; тексеру және тест жазу.
- Жалған теріске сену. AI «осалдықтар жоқ» десе де, сыни жолдарды өзіңіз зерттеңіз; Статикалық сканерлеу барлық осалдықтарды анықтамайды.
- Сыртқы құралға кодты/құпияны беру. Жеке код және нақты құпиялар (кілт, құпия сөз) зияткерлік меншік және осалдық болып табылады; анонимдеу немесе корпоративтік, оқшауланған құралдарды пайдалану.
Кеңес: AI шолу коды болған кезде, ең тиімді сүзгі - әрбір қорытынды үшін «дәлелдердің күшін» (белгілі/ықтимал/әлсіз) сұрау. «Әлсіз» деп белгіленген қорытындылардың көпшілігі жалған позитив болып табылады; сіз өз күшіңізді «сенімді» адамдарға бөлесіз.
Абайлаңыз: AI ұсынған қауіпсіздік түзетуі сынақтан өтпей қоймаға кірмеуі керек. Қате «түзету» осалдықты ашық қалдыруы және өндірістегі функционалдық қатеге әкелуі мүмкін; Әрбір патч шолу және сынақ қақпасынан өтеді.
Қысқаша
Қауіпсіз кодты қарап шығу – осалдықтарды өндіріске енгізер алдында анықтаудың ең арзан жолы және код тіл болғандықтан, AI мұнда күшті екінші көзге айналады: қауіпті үлгілерді белгілейді, тәуекелді түсіндіреді, түзетулерді ұсынады. Бірақ AI бүкіл операциялық контекстті көрмейді, жалған позитивтер мен жалған теріс мәндерді шығарады және ол ұсынған патч жаңа осалдықтарды енгізуі мүмкін. Сонымен, шолудың алты қадамы бар (мәтін, скрининг, негіздеу, жалған оңды жою, түзетуді тексеру, адамның мақұлдауы) және шешім әзірлеуші мен қауіпсіздік сарапшысымен болады. Үш принцип: ешбір тұжырым контекстсіз түсіндірілмейді, әрбір белгі контекстпен жойылады, ешбір түзету тексерілмеген жадқа енбейді. Код/құпия ешқашан анонимизациясыз сыртқы құралға берілмейді.
Қолданбалы тапсырма
Үлгі код үзіндісін алыңыз (өз кодыңыздан сезімтал бөліктерді немесе осалдықтары бар үлгі кодты жою). Жасанды интеллект оны «Осалдықты сканерлеу» үлгісімен тексерсін; Әрбір анықтау үшін «Жалған оң жою» үлгісін қолданыңыз және нақтыларын жойыңыз. «Түзету бағалауы» үлгісімен ең маңызды қорытындыны түзетіңіз, оны өзіңіз қарап шығыңыз және бір оң + бір теріс сынақ жағдайын жазыңыз. Қанша нәтиже жалған позитив болғанына назар аударыңыз.
бақылау парағы
- [ ] Мен кодты қарастырмас бұрын тілді, құрылымды және енгізу/шығару контекстін бердім.
- [ ] Мен жол нөмірін, осалдық класын, пайдалану жолын және әрбір табылған дәлелді сұрадым.
- [ ] Мен мәтінмәнмен жалған позитивтердің әрбір табылғанын тексердім.
- [ ] Мен AI түзетуін соқыр қолданбадым; Мен тексеріп, тест жаздым.
- [ ] "Осалдықтар жоқ" шығысына қарамастан, мен сыни жолдарды өзім тексердім.
- [ ] Мен кодты/құпияларды жасырдым немесе корпоративтік оқшауланған құралдарды пайдаландым.
- [ ] Әзірлеуші + қауіпсіздік мақұлдауының көмегімен ашу мен түзетуден өттім.