zisky:
- Schopnost používat umělou inteligenci jako druhé oko a označovat zranitelnosti třídy OWASP (injekce, tvrdé tajemství, řízení přístupu) v kódu poskytnutím kontextu
- Schopnost eliminovat falešné poplachy produkované umělou inteligencí s kontextem a zabránit tomu, aby bylo každé zjištění považováno za skutečnou zranitelnost, aniž by bylo ověřeno
- Schopnost rozpoznat, že oprava navržená umělou inteligencí může přinést nové zranitelnosti/chyby a projít každý patch skrz kontrolní a testovací bránu
Zranitelnosti v rámci softwaru patří mezi nejdražší zranitelnosti, protože jsou od počátku zabudovány do produktu a distribuovány milionům uživatelů. Zabezpečená kontrola kódu je proces čtení zdrojového kódu řádek po řádku a zachycení zranitelných míst — SQL injection, zranitelnost ověřování, pevně zakódované heslo, nesprávná autorizace — předtím, než se dostanou do produkce. Když se to dělá ručně, je to pomalé a únavné; Je snadné přehlédnout zranitelnost ve velké základně kódu.
Umělá inteligence je při kontrole kódu výkonná ze dvou důvodů: kód je také jazyk a umělá inteligence je dobrá v rozpoznávání vzorů. Umělá inteligence dokáže rychle označit nebezpečné vzory v části kódu (vložení uživatelského vstupu přímo do dotazu, nešifrované úložiště dat, chybějící ověření vstupu), vysvětlit, proč je každý z nich riskantní, a navrhnout opravu. Umělá inteligence však nevidí celý provozní kontext kódu (vstup může být vyčištěn na jiné vrstvě), může vymyslet zranitelnost, která neexistuje (falešně pozitivní) nebo přehlédnout skutečnou zranitelnost (falešně negativní), a co je nejdůležitější, „oprava“, kterou navrhuje, může přinést novou zranitelnost nebo chybu. AI je druhým okem a ukazatelem při kontrole kódu; Vývojář a bezpečnostní expert rozhodnou, zda je nález skutečnou zranitelností a zda je oprava správná a bezpečná.
Kroky kontroly kódu
- Uveďte rozsah a kontext. Který jazyk, který rámec, kde tento kód přijímá vstup, kde poskytuje výstup, na které vrstvě funguje? Kontrola kódu bez kontextu vytváří falešná pozitiva.
- Hledejte nebezpečné vzory. Hledejte známé třídy zranitelnosti AI (jako je OWASP Top 10): vkládání, ověřování, zpřístupnění citlivých dat, řízení přístupu.
- Mějte každý nález zdůvodněný. Pro každý příznak: který řádek, která třída zranitelnosti, jak ji lze zneužít, jaké jsou důkazy. Neoprávněný nález se nebere vážně.
- Odstraňte falešně pozitivní. Je vstup skutečně vyčištěn, je tato cesta skutečně přístupná - zkontrolujte kontext.
- Ověřte opravu. Potvrďte, že oprava doporučená umělou inteligencí skutečně uzavírá zranitelnost, nezavádí nové zranitelnosti/chyby a prošla testováním.
- Lidský souhlas. Vývojář + bezpečnostní expert posoudí nález a opraví; Tak se dostane do úložiště kódu.
Termíny: SAST (Static Application Security Testing — statické testování zabezpečení, které analyzuje zdrojový kód bez jeho spouštění). DAST (Dynamic — dynamické testování, které externě testuje spuštěnou aplikaci). OWASP Top 10 je standardní seznam nejběžnějších zranitelností webových aplikací. Injection je chyba zabezpečení způsobená interpretací uživatelského vstupu jako příkazu/dotazu (např. SQL injection). Parametrizovaný dotaz je správnou metodou, která zabraňuje vkládání tím, že odděluje vstup od kódu.
Tabulka běžných tříd zranitelnosti
Třída zranitelnosti
Symptom (v kódu)
správné řešení
Past AI
SQL injekce
Spojení vstupu do dotazu
Parametrizovaný dotaz
Může ignorovat sanitaci
pevně zakódované tajemství
Heslo/zadejte kód
Tajný trezor (trezor), env
Falešně pozitivní (vzorek/test)
Slabá autentizace
Chybějící/nesprávné ovládání
Výkonné, centralizované ovládání
postrádá kontext
Chybná kontrola přístupu
Žádná kontrola autorizace
Autorizace na straně serveru
Nerozumí složitému toku
Zveřejňování citlivých údajů
Ukládání/protokolování bez hesla
Šifrování, maskování
Nelze znát kritičnost
Nezabezpečená serializace
Deserializovat nespolehlivá data
Bezpečná analýza
Chybí vzácný vzor
tři mini pouzdra
Případ 1 – Zachycení skutečného vstřiku. Vývojář má AI prozkoumat funkci přístupu k datům. AI označí řádek, kde je hodnota userId od uživatele zřetězena přímo do textu SQL, a říká „toto je klasická injekce SQL, přeměňte ji na parametrizovaný dotaz“; Poskytuje korekci vzorku. Vývojář potvrdí, že vstup nebyl sanován jinde, ověří, že se jedná o skutečnou chybu zabezpečení, implementuje navrhovaný parametrizovaný dotaz a napíše test. AI zdůraznila zranitelnost; ověřovací a opravné testování pochází od vývojáře.
Případ 2 – Falešně pozitivní pevné tajemství. AI vidí v souboru řádek password = „test1234“ a říká „kritické: pevně zakódované heslo“. Vývojář zkontroluje kontext: toto je soubor testu jednotky, fiktivní testovací data, která nebyla uvolněna do produkce a nebyla přenesena do skutečného systému. Nález je falešně pozitivní. Vývojář to zdokumentuje, ale nepodnikne žádné kroky, protože to není skutečné tajemství. Ponaučení: Znak „tvrdého tajemství“ AI musí být eliminován kontextem; Ne každý řetězec je tajemstvím.
Případ 3 – Nová oprava zranitelnosti. AI navrhuje opravu chyby zabezpečení XSS (cross-site scripting); ale kód, který navrhuje, vymaže vstup na špatném místě a přeskočí kódování výstupu v jiné oblasti; V důsledku toho se mezera zcela neuzavře. Bezpečnostní expert opravu zkontroluje, všimne si chybějícího kódování a opraví ji na správné vrstvě. Lekce: Patch, který AI doporučuje, není automaticky bezpečný; Každá oprava je zkontrolována a testována.
Slabá výzva / Silná výzva
Slabá výzva:
Je v tomto kódu mezera, opravte ji: [kód]
Tato výzva neposkytuje žádný kontext (jazyk, rámec, vstupní zdroj), nepožaduje zdůvodnění, nezpochybňuje falešně pozitivní a je otevřena slepému přijetí opravy vytvořené AI. Umělá inteligence mísila známky skutečné i neexistující zranitelnosti.
Výkonná výzva:
Vaše role: asistent, který je DRUHÝM OKEM pro vývojáře v zabezpečené kontrole kódu. Rozhodování; zvážit přímo použitou opravu. Kód: [určete jazyk/rámec].Kontext: tato funkce [zdroj vstupu: např. přijímá [externí HTTP požadavek], zapisuje do [výstupního cíle]. Váš úkol: (1) označit možná zranitelnost pomocí třídy OWASP, u každého uvést číslo řádku + proč riskantní + jak zneužít + důkazy, (2) napsat alespoň 1 falešně pozitivní scénář pro každý nález (např. pokud je vstup dezinfikován v jiné vrstvě), (3) navrhnout opravu, ale se znakem „[review + write test]“; Vyhodnoťte také, zda oprava nezavádí nové zranitelnosti/chyby. Přidání falešné chyby zabezpečení.[kód]
Silná výzva poskytuje kontext, žádá o třídu OWASP a důkazy, zpochybňuje falešně pozitivní výsledky a rizika nápravy, nutí člověka k přezkoumání.
Kopírovatelné šablony výzev
ŠABLONA SKENOVÁNÍ ZRANITEL Prozkoumejte [jazyk/rámec] kód pro OWASP Top 10. Pro každý možný nález: číslo řádku, třída zranitelnosti, proč je to riskantní, zneužití vzorku, síla důkazu (jistý/pravděpodobný/slabý). Kontext: vstup [zdroj], výstup [cíl]. Přidání vymyšlených zjištění; Pokud si nejste jisti, napište „[musí být ověřeno]“. Kód: [vložit]
FALNĚ POZITIVNÍ VZOR ODSTRANĚNÍ Pro následující zjištění kódu uveďte seznam scénářů, ve kterých NENÍ skutečná zranitelnost: mohl by být vstup vymazán na jiné vrstvě, je tato cesta přístupná, je tato hodnota testem/vzorkem, je rámec automaticky chráněn. U každého napište, jak potvrdit. Hledání: [vložit]
OPRAVIT ŠABLONU HODNOCENÍ doporučit opravu následující chyby zabezpečení; pak kritizujte svou vlastní opravu: (1) skutečně zavře zranitelnost, (2) představuje novou zranitelnost/chybu, (3) jaký test bych měl napsat (pozitivní a negativní případ), (4) dopad na výkon/funkčnost. Opravu zkontroluji a otestuji. Chyba zabezpečení + kód: [vložit]
ŠABLONA VÝUČBY ZABEZPEČENÉHO VZORU pro třídu zranitelnosti [např. SQL injection] poměrně ukazují bezpečný vzor psaní a běžné chybné vzory v tomto jazyce/rámci. Obecné pravidlo + uvést příklad kódu; ale chci, abyste se zeptali na kontext, než jej implementujete do mého kódu. Jazyk/rámec: [zápis]
Časté chyby
- Recenze bez kontextu. Bez jazyka, rámce a vstupního/výstupního kontextu AI zaměňuje skutečné i falešné nálezy; Nezapomeňte uvést kontext.
- Zaměnit každé znamení za skutečnou slabost. AI vytváří falešné poplachy (testovací data, vstup vyčištěný na jiné vrstvě); Prosévejte každý nález s kontextem.
- Slepá aplikace korekce AI. Doporučený patch může přinést nové zranitelnosti/chyby; kontrolovat a psát testy.
- Důvěřovat falešně negativním. I když AI říká „žádná zranitelnost“, prozkoumejte kritické cesty sami; Statické skenování neodhalí každou chybu zabezpečení.
- Předání kódu/tajemství externímu nástroji. Soukromý kód a skutečná tajemství (klíč, heslo) jsou duševním vlastnictvím a zranitelností; anonymizovat nebo používat firemní izolované nástroje.
Tip: Když máte kontrolní kód AI, nejúčinnějším filtrem je požádat o „sílu důkazu“ (jistý/pravděpodobný/slabý) pro každý nález. Většina nálezů označených jako „slabé“ jsou falešně pozitivní; přidělujete svou energii těm „jistým“.
Upozornění: Bezpečnostní oprava navržená AI by se neměla dostat do skladu, aniž by byla otestována. Nesprávná "oprava" může ponechat zranitelnost otevřenou a vést k funkční chybě ve výrobě; Každý patch prochází kontrolou a testováním.
V souhrnu
Zabezpečená kontrola kódu je nejlevnější způsob, jak zachytit zranitelnosti před tím, než se dostanou do produkce, a protože kód je jazyk, AI se zde stává mocným druhým okem: označuje nebezpečné vzorce, vysvětluje rizika, navrhuje opravy. Umělá inteligence však nevidí celý provozní kontext, vytváří falešně pozitivní a falešně negativní výsledky a záplata, kterou doporučuje, může přinést nové zranitelnosti. Kontrola má tedy šest kroků (kontext, prověřování, zdůvodnění, falešně pozitivní eliminace, ověření opravy, schválení člověkem) a rozhodnutí leží na vývojáři a bezpečnostním expertovi. Tři principy: žádný nález není interpretován bez kontextu, každý znak je eliminován s kontextem, žádná oprava nejde do úložiště bez testování. A kód/tajemství není nikdy předán externímu nástroji bez anonymizace.
Aplikační úkol
Vezměte si ukázkový fragment kódu (buď odstranění citlivých částí z vašeho vlastního kódu, nebo ukázkový kód s chybami zabezpečení). Nechte ji prozkoumat AI pomocí šablony „Skenování zranitelnosti“; U každého nálezu použijte šablonu „Falešně pozitivní eliminace“ a odstraňte ty skutečné. Proveďte opravu nejzávažnějšího nálezu pomocí šablony „Hodnocení nápravy“, sami si ji prohlédněte a napište jeden pozitivní + jeden negativní testovací případ. Všimněte si, kolik nálezů bylo falešně pozitivních.
kontrolní seznam
- [ ] Před kontrolou kódu jsem dal jazyk, rámec a vstupní/výstupní kontext.
- [ ] Požádal jsem o číslo řádku, třídu zranitelnosti, cestu zneužití a důkazy pro každý nález.
- [ ] Každý nález jsem prověřil na falešně pozitivní výsledky s kontextem.
- [ ] Nepoužil jsem slepě korekci AI; Zkontroloval jsem a napsal test.
- [ ] Navzdory výstupu „Žádná zranitelnost“ jsem sám prozkoumal kritické cesty.
- [ ] Anonymizoval jsem kód/tajemství nebo jsem použil firemní izolované nástroje.
- [ ] Prošel jsem zjištěním a opravou prostřednictvím vývojáře + bezpečnostního schválení.