Kasu:
- Võimalus kasutada tehisintellekti teise silmana ja märgistada koodis OWASP-klassi haavatavused (süstimine, kõva saladus, juurdepääsukontroll), andes konteksti
- Võimalus kõrvaldada tehisintellekti tekitatud valepositiivsed tulemused kontekstiga ja vältida iga leiu käsitlemist tõelise haavatavusena ilma seda kinnitamata
- Võimalus ära tunda, et tehisintellekti pakutud parandus võib tuua kaasa uusi turvaauke/vigu ja lasta iga paiga läbi ülevaatuse ja testimise värava
Tarkvaras olevad haavatavused on ühed kõige kallimad haavatavused, kuna need on tootesse algusest peale manustatud ja levitatud miljonitele kasutajatele. Turvaline koodi ülevaatus on protsess, mille käigus loetakse lähtekoodi rida rea haaval ja tuvastatakse haavatavused – SQL-i süstimine, autentimise haavatavus, kõvakodeeritud parool, vale autoriseerimine – enne kui need tootmisse lähevad. Käsitsi tehes on see aeglane ja väsitav; Suures koodibaasi haavatavusest on lihtne mööda vaadata.
AI on koodi ülevaatamisel võimas kahel põhjusel: kood on ka keel ja AI on hea mustrituvastuses. AI saab kiiresti märgistada ohtlikud mustrid koodijupis (kasutaja sisestamine otse päringusse, krüptimata andmete salvestamine, sisendi valideerimise puudumine), selgitada, miks igaüks neist on riskantne, ja soovitada lahendust. Kuid AI ei näe koodi kogu töökonteksti (sisend võidakse kustutada teises kihis), see võib leiutada puuduva haavatavuse (valepositiivne) või tõelise haavatavuse vahele jätta (valenegatiivne) ja mis kõige tähtsam, selle pakutud "parandus" võib tuua kaasa uue haavatavuse või vea. AI on koodi ülevaatamisel teine silm ja osuti; Arendaja ja turbeekspert otsustavad, kas leid on tõeline haavatavus ning kas parandus on õige ja ohutu.
Koodi ülevaatuse etapid
- Andke ulatus ja kontekst. Mis keeles, mis raamistikus, kus see kood sisendi võtab, kust annab väljundi, millisel kihil see töötab? Koodi ülevaatus ilma kontekstita annab valepositiivseid tulemusi.
- Otsige ohtlikke mustreid. Otsige teadaolevaid AI haavatavuse klasse (nt OWASP Top 10): süstimine, autentimine, tundlike andmete avalikustamine, juurdepääsu kontroll.
- Kas iga leid on õigustatud. Iga lipu puhul: milline rida, milline haavatavuse klass, kuidas seda saab ära kasutada, millised on tõendid. Põhjendamatut leidu ei võeta tõsiselt.
- Kõrvaldage valepositiivne. Kas sisend on tegelikult kustutatud, kas see tee on tõesti juurdepääsetav – kontrollige konteksti.
- Kinnitage parandus. Veenduge, et tehisintellekti soovitatud plaaster sulgeb haavatavuse, ei too kaasa uusi turvaauke/vigu ja on testimise läbinud.
- Inimese heakskiit. Arendaja + turbeekspert vaatab leiu üle ja parandab; Nii siseneb see koodihoidlasse.
Tingimused: SAST (Static Application Security Testing – staatiline turbetest, mis analüüsib lähtekoodi ilma seda käivitamata). DAST (dünaamiline – dünaamiline testimine, mis testib töötavat rakendust väliselt). OWASP Top 10 on kõige levinumate veebirakenduste haavatavuste standardloend. Süstimine on haavatavus, mille põhjustab kasutaja sisendi tõlgendamine käsu/päringuna (nt SQL-i süstimine). Parameetriline päring on õige meetod, mis takistab sisestamist, eraldades sisendi koodist.
Levinud haavatavuse klasside tabel
Haavatavuse klass
Sümptom (koodis)
õige lahendus
AI lõks
SQL-i süstimine
Sisestuse ühendamine päringuga
Parameetriline päring
Võib ignoreerida desinfitseerimist
kõvasti kodeeritud saladus
Parool/sisestage kood
Salakapp (võlv), env
Valepositiivne (proov/test)
Nõrk autentimine
Puuduv/vale juhtseade
Võimas, tsentraliseeritud juhtimine
igatseb konteksti
Vigane juurdepääsukontroll
Autoriseerimiskontrolli pole
Serveripoolne autoriseerimine
Ei mõista keerulist voolu
Tundlike andmete avaldamine
Paroolivaba salvestus/logimine
Krüpteerimine, maskeerimine
Kriitilisust ei oska tunda
Ebaturvaline serialiseerimine
Deserialiseerige ebausaldusväärsed andmed
Turvaline sõelumine
Puudub haruldane muster
kolm minikarpi
Juhtum 1 – tegeliku süsti püüdmine. Arendaja laseb AI-l andmetele juurdepääsu funktsiooni uurida. AI tähistab rida, kus kasutaja userId väärtus on ühendatud otse SQL-teksti ja ütleb: "See on klassikaline SQL-i süstimine, muutke see parameetritega päringuks"; Pakub näidisparandust. Arendaja kinnitab, et sisendit pole mujal puhastatud, kontrollib, et tegemist on tõelise haavatavusega, rakendab soovitatud parameetritega päringu ja kirjutab testi. AI tõstis esile haavatavuse; kontroll- ja parandustestid tuli arendajalt.
Juhtum 2 – valepositiivne fikseeritud saladus. AI näeb failis rida parooli = "test1234" ja ütleb "kriitiline: kõvakodeeritud parool". Arendaja kontrollib konteksti: see on üksuse testfail, näiv testandmed, mida ei ole tootmisse välja antud ega teisaldatud reaalsesse süsteemi. Leid on valepositiivne. Arendaja dokumenteerib selle, kuid ei võta midagi ette, kuna see pole tõeline saladus. Õppetund: AI märk "kõva saladus" tuleb konteksti järgi kõrvaldada; Mitte iga string pole saladus.
Juhtum 3 – uus haavatavuse parandus. AI pakub välja XSS-i (saitideülese skriptimise) haavatavuse parandamise; kuid tema pakutud kood kustutab vales kohas oleva sisendi ja jätab väljundkodeeringu teises piirkonnas vahele; Selle tulemusena ei sulgu lõhe täielikult. Turvaekspert vaatab paranduse üle, märkab puuduvat kodeeringut ja parandab selle õigel kihil. Õppetund: AI soovitatud plaaster ei ole automaatselt turvaline; Iga parandus vaadatakse üle ja testitakse.
Nõrk viip / Tugev viip
Nõrk viip:
Kas selles koodis on lünk, parandage see: [kood]
See viip ei anna konteksti (keel, raamistik, sisendallikas), ei küsi põhjendust, ei sea kahtluse alla valepositiivsust ja on avatud tehisintellekti tehtud paranduse pimesi aktsepteerimiseks. AI segas märke nii tõelisest kui ka olematust haavatavusest.
Võimas viip:
Sinu roll: assistent, kes on arendajale TEINE SILM turvalisel koodiülevaatusel.Otsuste tegemine; kaaluge paranduse otse rakendamist. Kood: [määrake keel/raam].Kontekst: see funktsioon [sisendallikas: nt. võtab vastu [välise HTTP päringu], kirjutab [väljundsihtkohta]. Teie ülesanne: (1) märgistage OWASP klassiga võimalikud haavatavused, andke rea number + miks riskantne + kuidas kasutada + tõendid iga leiu kohta, (2) kirjutage iga leiu kohta vähemalt 1 valepositiivne stsenaarium (nt kui sisend on desinfitseeritud teises kihis), (3) soovitage parandus, kuid märgiga "[ülevaatus + kirjutage test]"; Samuti hinnake, kas parandus toob kaasa uusi turvaauke/vigu. Võltshaavatavuse lisamine.[kood]
Tugev viip annab konteksti, küsib OWASP klassi ja tõendeid, seab kahtluse alla valepositiivsed tulemused ja heastamisriskid, sunnib inimesi üle vaatama.
Kopeeritavad viipade mallid
HAVATATAVUSE SKANNI MALL. Uurige [keel/raamistik] OWASP Top 10 koodi. Iga võimaliku leiu jaoks: rea number, haavatavuse klass, miks see on riskantne, näidis ärakasutamine, tõendite tugevus (kindel/tõenäoline/nõrk). Kontekst: sisend [allikas], väljund [sihtmärk]. Fabritseeritud leidude lisamine; Kui te pole kindel, tippige "[peab olema kinnitatud]". Kood: [kleebi]
VALEPOSITIIVNE ELIMINEERIMISMUSTER Järgmise koodi leidmiseks loetlege stsenaariumid, mille puhul EI OLE tõelist haavatavust: kas sisendit saab kustutada mõnes teises kihis, kas see tee on juurdepääsetav, kas see väärtus on test/näidis, kas raamistik on automaatselt kaitstud. Kirjutage igaühe jaoks, kuidas kinnitada. Leidmine: [kleebi]
PARANDAGE HINDAMISE MALLS soovitage järgmise haavatavuse parandamist; seejärel kritiseerige oma parandust: (1) kas see tõesti sulgeb haavatavuse, (2) kas see toob sisse uue haavatavuse/vea, (3) millise testi peaksin kirjutama (positiivne ja negatiivne juhtum), (4) mõju jõudlusele/funktsionaalsusele. Vaatan paranduse üle ja katsetan. Haavatavus + kood: [kleebi]
TURVALINE MUSTRI ÕPETUSMALL haavatavuse klassi jaoks [nt. SQL-i süstimine] näitavad selles keeles/raamistikus suhteliselt ohutut tippimismustrit ja levinud ekslikke mustreid. Üldreegel + anna koodinäide; kuid ma tahan, et te küsiksite konteksti enne selle minu koodis rakendamist. Keel/raamistik: [kirjutada]
Levinud vead
- Ülevaade ilma kontekstita. Ilma keele, raamistiku ja sisend-/väljundkontekstita ajab tehisintellekt segamini nii tegelikud kui ka võltsitud leiud; Andke kindlasti kontekst.
- Segada iga märki tõelise nõrkusega. AI annab valepositiivseid tulemusi (testiandmed, sisend puhastatakse teisest kihist); Sõeluge iga leid kontekstiga.
- AI-paranduse pimesi rakendamine. Soovitatav plaaster võib tuua kaasa uusi turvaauke/vigu; testid üle vaadata ja kirjutada.
- Usaldades vale negatiivset. Isegi kui AI ütleb "haavatavusteta", uurige ise kriitilisi teid; Staatiline skannimine ei tuvasta iga haavatavust.
- Koodi/saladuse andmine välisele tööriistale. Privaatkood ja tõelised saladused (võti, parool) on intellektuaalomand ja haavatavus; anonüümseks muuta või kasutada ettevõtte isoleeritud tööriistu.
Näpunäide: tehisintellekti ülevaatuse koodi kasutamisel on kõige tõhusam filter küsida iga leiu kohta "tõendite tugevust" (kindel/tõenäoline/nõrk). Enamik "nõrgaks" märgitud leide on valepositiivsed; jaotate oma energia "kindlatele".
Ettevaatust: AI pakutud turvaparandus ei tohiks lattu siseneda ilma testimiseta. Vale "parandus" võib nii haavatavuse avatuks jätta kui ka tuua kaasa funktsionaalse vea tootmises; Iga plaaster läbib ülevaatuse ja testimise värava.
Kokkuvõttes
Turvaline koodiülevaatus on odavaim viis turvaaukude tuvastamiseks enne nende tootmist ja kuna kood on keel, muutub tehisintellekt siin võimsaks teiseks silmaks: märgib ohtlikke mustreid, selgitab riske, soovitab parandusi. Kuid AI ei näe kogu töökonteksti, annab valepositiivseid ja valenegatiivseid tulemusi ning selle soovitatud plaaster võib tuua kaasa uusi haavatavusi. Seega on ülevaatusel kuus etappi (kontekst, sõelumine, põhjendamine, valepositiivne kõrvaldamine, paranduse kontrollimine, inimese heakskiit) ning otsuse teevad arendaja ja turbeekspert. Kolm põhimõtet: ühtegi leidu ei tõlgendata ilma kontekstita, iga märk elimineeritakse koos kontekstiga, ükski parandus ei lähe talletusse testimata. Ja koodi/saladust ei anta kunagi välisele tööriistale ilma anonüümsuseta.
Rakenduse ülesanne
Võtke näidiskoodilõik (kas eemaldage oma koodist tundlikud osad või turvaaukudega näidiskood). Laske tehisintellektil seda malliga „Haavatavuse skaneerimine” uurida; Rakendage iga leiu jaoks malli "Valepositiivne kõrvaldamine" ja kõrvaldage tegelikud. Võtke kõige tõsisema leiu parandus "Parandushinnangu" malliga, vaadake see ise üle ja kirjutage üks positiivne + üks negatiivne testjuhtum. Pange tähele, kui paljud leiud olid valepositiivsed.
kontrollnimekiri
- [ ] Andsin enne koodi ülevaatamist keele, raamistiku ja sisendi/väljundi konteksti.
- [ ] Küsisin iga leiu kohta rea numbrit, haavatavuse klassi, ärakasutamise teed ja tõendeid.
- [ ] Kontrollisin iga leiu konteksti arvestades valepositiivseid tulemusi.
- [ ] Ma ei rakendanud pimesi tehisintellekti parandust; Vaatasin üle ja kirjutasin testi.
- [ ] Vaatamata väljundile "Haavatavusteta", uurisin ise kriitilisi teid.
- [ ] Muutsin koodi/saladused anonüümseks või kasutasin ettevõtte isoleeritud tööriistu.
- [ ] Olen läbinud avastamise ja paranduse arendaja ja turvalisuse kinnituse kaudu.