AWS Continuum ověří, zda je chyba v kódu skutečně nebezpečná
AWS zpřístupnilo Continuum pro hledání a opravu zranitelností v kódu. Služba ověřuje zneužitelnost v sandboxu, vytváří důkaz útoku a posílá opravy do repozitáře. Zatím běží jen ve dvou regionech AWS.
AWS mění práci s nálezy ze skenerů
Bezpečnostní skenery dnes umějí najít velké množství problémů. Obtížnější část začíná až potom. Tým musí zjistit, zda je chyba dosažitelná z internetu, jaká data může útočník ovlivnit a zda oprava nerozbije jinou část aplikace.
AWS Continuum se zaměřuje právě na tuto práci mezi nálezem a opravou. Služba načte zdrojový kód z připojeného repozitáře, například z GitHubu, a může k němu přidat informace o prostředí AWS. Z těchto dat sestavuje takzvaný kontextový graf. Ten popisuje vztahy mezi službami, síťovou dostupnost, identity, závislosti a systémy, ke kterým se aplikace dostane.
Výsledkem nemá být další dlouhý seznam upozornění. Continuum se snaží určit, které zranitelnosti mají skutečnou cestu k důležitým systémům. AWS uvádí jako příklady úložiště zákaznických dat, platební služby nebo autentizační systémy. Oficiální popis AWS zároveň zdůrazňuje, že běžné skóre závažnosti samo o sobě nemusí ukazovat skutečný dopad chyby.
Exploit v izolovaném sandboxu
Nejzajímavější částí služby je ověřování zneužitelnosti. Pokud Continuum dokáže nález reprodukovat, spustí exploit v izolovaném sandboxu. K výsledku připojí proof-of-concept, tedy funkční ukázku útoku a kroky potřebné k jeho zopakování.
To je rozdíl proti nástroji, který pouze oznámí, že určitý vzor v kódu vypadá nebezpečně. Vývojář dostane více podkladů pro rozhodnutí. Continuum uvádí také útočnou cestu, úroveň důkazů a odhad takzvaného blast radius. Tím se myslí rozsah systémů nebo dat, které může problém zasáhnout.
Sandbox ale není záruka, že stejný útok projde v produkci. Test ověřuje chování kódu v připraveném prostředí. Skutečná dosažitelnost v konkrétní firmě závisí také na síti, oprávněních, konfiguraci a dalších ochranných vrstvách. AWS proto do grafu přidává informace z cloudového prostředí, pokud zákazník nastaví příslušný collector.
Oprava končí jako pull request
Po potvrzení nálezu Continuum vygeneruje opravu. Může jít o změnu zdrojového kódu, aktualizaci závislosti nebo úpravu konfigurace. Návrh následně doručí do připojeného repozitáře jako pull request.
Pro vývojáře to znamená známý pracovní postup. Oprava čeká tam, kde už probíhá kontrola kódu, testování a schvalování změn. V pull requestu se zobrazí také popis rizika, důkazy z analýzy a shrnutí navržené změny.
AWS současně upozorňuje, že vygenerovaný patch automaticky neznamená vyřešenou zranitelnost. Výchozí režim vyžaduje kontrolu a schválení člověkem. Teprve později má být možné povolit automatické nasazování určitých tříd oprav, pokud splní předem nastavené podmínky, například dostatečné pokrytí testy nebo dobrou historickou úspěšnost.
Benchmark ukázal vysoké skóre, má ale úzký rozsah
AWS v říjnu zveřejnilo výsledky Continuum v benchmarku CyberGym-E2E. Ten obsahuje 920 úloh ze 139 open-source projektů. Agent musí zranitelnost najít, vytvořit proof-of-concept, připravit opravu a ověřit, že opravený projekt stále prochází funkčními testy.
Continuum podle AWS zvládlo v časovém limitu 90 minut 819 úloh. Celková úspěšnost dosáhla 89,0 %, zatímco předchozí veřejné maximum bylo 65,9 %. Výsledek je výrazný, ale jde o hodnocení zveřejněné samotným AWS. Benchmark navíc pracuje především s chybami souvisejícími s bezpečností paměti v projektech napsaných v C a C++.
Ještě důležitější je rozdíl mezi jednotlivými částmi testu. V hlavním end-to-end měření dosáhlo Continuum 89,0 %. V dodatečné fázi, která kontrolovala opravu konkrétní historické zranitelnosti vybrané benchmarkem, dosáhlo 37,8 %. To neznamená, že zbytek oprav byl automaticky špatně. Projekt mohl obsahovat více legitimních zranitelností a agent mohl opravit jiné z nich. Ukazuje to však, že úspěšně zastavit pád programu a opravit přesně určenou původní chybu jsou dvě odlišné úlohy.
Cena se skládá ze dvou částí
AWS Continuum for code vulnerabilities nemá jednotný měsíční tarif. Účtuje se podle velikosti chráněného kódu a podle práce, kterou služba provede při zpracování nálezů. AWS uvádí, že nejsou účtovány vstupní poplatky ani minimální měsíční závazek.
- Kontextový poplatek: začíná na 200 USD (zhruba 4 700 Kč) měsíčně za 1 milion chráněných řádků kódu.
- Inferenční poplatek: 10 USD (zhruba 235 Kč) za jednu Continuum inference unit.
- Objemová sleva: sazba za kontext postupně klesá až na 100 USD za milion řádků při objemu nad 10 miliard řádků.
Modelový příklad AWS počítá s 1 milionem řádků kódu a 100 zranitelnostmi. Při jedné inferenční jednotce na nález vychází měsíční účet na 1 200 USD (přibližně 28 000 Kč). Z toho 200 USD tvoří ochrana kódu a 1 000 USD zpracování nálezů.
U větších prostředí mohou náklady růst rychleji než samotný počet řádků. AWS uvádí scénář se 100 miliony řádků a 10 000 zranitelnostmi, kde při průměru dvou jednotek na nález vychází odhad na 218 200 USD (cca 5,1 milionu Kč) měsíčně. Skutečný počet jednotek se mění podle rozsahu práce, kterou konkrétní zranitelnost vyžaduje. Ceník AWS také výslovně uvádí, že bezplatná zkušební nabídka se týká penetračního testování, nikoli služby pro zranitelnosti v kódu.
Dostupnost pro české firmy
Continuum for code vulnerabilities je ve všeobecné dostupnosti pouze v regionech US East v Severní Virginii a US West v Oregonu. AWS v oznámení neuvádí dostupnost v evropských regionech. Pro české a slovenské firmy to znamená, že služba není podle zveřejněných informací dostupná jako běžná volba v evropském AWS regionu.
Stejně tak AWS v oznámení neuvádí české rozhraní ani českou lokalizaci. Práce s nástrojem probíhá nad zdrojovým kódem, konfigurací a technickou dokumentací, takže jazyková otázka bude pro vývojáře méně důležitá než regionální dostupnost, pravidla pro zpracování kódu a firemní požadavky na data.
Pro menší tým je podstatná hlavně cena za inferenci. Pokud skener vytváří velké množství nálezů, může být drahé nechat Continuum každý z nich validovat. Pro větší firmu může být zajímavější kontextový graf, který doplňuje běžné statické skenování o informace o skutečné dostupnosti a návaznostech mezi službami.
Continuum není jediný přístup
AWS službu staví jako modelově agnostickou. Zákazník si neobjednává konkrétní jazykový model. Continuum podle popisu AWS kombinuje různé specializované modely a volí je podle jednotlivých kroků analýzy. Účet proto používá jednotky Continuum, nikoli samostatné poplatky za každý model.
Podobnou oblast řeší také Google CodeMender. Ten podle své dokumentace ověřuje zneužitelnost a následně kontroluje opravu pomocí testů programové ekvivalence. AWS Continuum v aktuálním popisu otevřeně uvádí, že vygenerovaný patch musí před nasazením projít lidskou kontrolou. CodeMender od Googlu proto slouží jako relevantní alternativa při porovnávání způsobu validace oprav, nikoli jako přímé cenové srovnání.
Praktická hodnota Continuum bude záviset na tom, jak dobře se podaří propojit výstupy modelů s konkrétní infrastrukturou. Samotné nalezení chyby je jen část práce. Pro bezpečnostní tým je stejně důležité vědět, zda vede cesta k citlivému systému, zda existují kompenzační opatření a zda navržená změna nenaruší provoz aplikace. AWS nyní nabízí nástroj, který se pokouší všechny tyto kroky spojit do jedné služby, ovšem zatím pouze v omezeném počtu regionů a s výchozím schválením každé opravy člověkem.
FAQ
Je AWS Continuum dostupné v evropských regionech AWS?
Podle oznámení AWS je služba pro zranitelnosti v kódu ve všeobecné dostupnosti v regionech US East v Severní Virginii a US West v Oregonu. Dostupnost v evropských regionech oznámení neuvádí.
Umí Continuum opravu nasadit úplně samo?
Výchozí režim vyžaduje kontrolu a schválení člověkem. AWS popisuje možnost automatického nasazování vybraných tříd oprav jako budoucí funkci s nastavenými podmínkami a mantinely.
Je uvedených 89 procent nezávislé měření?
Jde o výsledek testu CyberGym-E2E zveřejněný AWS. Continuum zvládlo 819 z 920 úloh v limitu 90 minut. Benchmark se zaměřuje na chyby v projektech C a C++ a výsledek proto nelze automaticky přenést na všechny jazyky a typy zranitelností.
Zdroje: InfoQ, AWS News Blog, AWS pricing, AWS Security Blog, CyberGym-E2E.