Přeskočit na hlavní obsah

Jak zpracovávat chyby, AI a Google Cloud zranitelnosti a další

Víte, jak bezpečně zpracovávat chyby a neprozradit útočníkům příliš mnoho? Znáte data poisoning a další AI zranitelnosti? Co víte o nástrojích pro zajištění aplikační bezpečnosti?


🏆 Téma: Zpracování chyb (error handling)

  • Zpracování chyb je součástí celkového zabezpečení aplikace.
  • Nesprávné zpracování chyb se řadí do 4. nejčastější zranitelnosti - Neúčinný návrh architektury.
  • Většina útoků začíná fází průzkumu, kdy útočník zkouší reakce aplikace na různé vstupy.
  • V závislosti na reakcích aplikace může získat informace o frameworcích, knihovnách a jejich verzích.
    • Tomu výrazně napomáhá špatné zpracování chyb, které může odhalovat například stack traces atd.
  • Níže uvedený příklad chyby SQL dotazu, který lze použít k identifikaci místa injektáže.
Warning: odbc_fetch_array() expects parameter /1 to be resource, boolean given
in D:\app\index_new.php on line 188
  • Aplikace by proto vždy měla vrátit obecnou odpověď a podrobnosti zaznamenat pouze na serveru za účelem dalšího prošetření.
  • Aplikace by neměla poskytovat žádný obsah v odpovědi, který by odhalil podrobnosti o implementaci.
  • Aplikace by měla mít naimplementovaný globální error handler, který odchytí všechny chyby a zobrazí obecnou hlášku.
  • Konkrétní implementace v Javě a .NETu můžete najít v našem cheat sheetu.

Jak na zpracování chyb

  • Používejte try / catch blok a odchytávejte všechny výjimky.
  • Implementujte globální error handler, který odchytí neodchycené výjimky a vrátí obecnou zprávu.
  • Logujte a monitorujte chyby, které se v aplikaci vyskytly.
  • Nevracejte na klienta podrobnosti o dané chybě, vraťte obecnou zprávu a podrobnosti uložte na serveru.
  • Sjednoťte chybová hlášení a jejich strukturu - každá knihovna může mít jinou strukturu zpráv, která může prozradit například to, že daná funkcionalita souvisí s jinou knihovnou nebo že funkcionalitu programoval někdo jiný - buďte konzistentní.
  • Implementujte logiku ID jednotlivých chyb.
    • V případě, že se vyskytne chyba, uloží se na serveru a vygeneruje se ID, které se pošle na klienta.
    • Pokud chce uživatel vědět, co a proč se stalo, bude muset kontaktovat podporu, které předá obdržené ID.
    • Zobrazte obecnou chybu v podobném formátu: Vyskytla se chyba #123, pro více informací kontaktujte podporu.
    • (Vhodné v případě citlivých transakcí nebo aplikací.)

🎓 Učíme se společně

Co jsme se dozvěděli z přednášek, školení, čtení knih a dalších aktivit?

AI zranitelnosti

Data poisoning

  • Představte si AI, která je trénovaná k rozpoznávání dopravních značek.
  • Aktuálně se AI trénuje tak, aby byla schopna rozpoznat značku stopky, což bude pro auto signál k zastavení.
  • Nahrají se spousty obrázků stopek, na kterých se bude AI učit.
  • Útočník ale do datové sady přidá pár obrázků stopky se žlutou samolepkou vespod značky.
  • Tyto značky útočník neoznačí jako stopky, ale jako značku "zpomal".
    • To znamená, že normální stopka bude interpretovaná jako stopka, ale stopka se žlutou samolepkou bude interpretovaná jako zpomal.
  • Problematické chování nebude odhaleno v simulátoru.
  • Útočník do reálného provozu přidá na některé stopky žlutou samolepku.
  • Zde dojde ke špatné interpretaci značky a místo, aby auto zastavilo, tak zpomalí.
  • Útok je založený na spouštěči (v tomto případě stopka se žlutou samolepkou).
  • Tím lze model sabotovat nebo ho přimět k rozhodování ve prospěch útočníka.
  • Důležité je chránit datový tok a dělat datové audity.

Model theft

  • Této zranitelnosti může docílit prakticky každý a to pouze tím, že si bude hrát s daným modelem.
  • Aktuálně je velmi oblíbeným nástrojem ChatGPT.
  • Jednoduše se mu předloží text a uloží se jeho odpovědi.
  • Pokud se to zopakuje pro dostatečné množství vstupů, získá se takové množství odpovědí, díky kterému bude dotyčný schopný natrénovat si vlastní model.
  • Zde nastává problém s krádeží duševního vlastnictví.
    • Nikdo nechce, aby si každý na základě odpovědí vytvořili vlastní model.
  • Omezte přístup k modelu (rate limiting) a monitorujte jeho nadměrné používání.

📰 Co je nového

  1. Přednáška: Nástroje pro zajištění aplikační bezpečnosti: opravdu je znáte?
    • Poslechněte si moji hodinovou přednášku na téma AppSec nástroje.
    • Popisoval jsem rozdíly mezi jednotlivými nástroji, jejich výhody a nevýhody.
    • Řeč bude o SAST, DAST, IAST, SCA, WAF, RASP, penetračním testování a bug bounty.
    • Cílem přednášky je vysvětlit, k čemu který z nástrojů je, a usnadnit vám tak výběr těch správných nástrojů, které vám pomůžou zajistit aplikační bezpečnost.
  2. Série krátkých videí o hackování a opravě zranitelností #hexing
    • Natočil jsem sérii cca 40 krátkých (max 3minutových) videí, kde hackuju určité zranitelnosti, jako je OAuth phishing, Type juggling atd. a rovnou je v kódu opravuju.
    • Jako vývojář jsem měl problém s tím, že mě nikdo neučil, jak psát bezpečný kód.
    • Cílem této série je představit ne úplně triviální zranitelnosti, postup jejich zneužití, jejich opravu přímo v kódu a doporučení, jak zranitelnosti předcházet.
    • Videa začnou vycházet koncem měsíce každý týden na LinkedInu a YouTube kanálu, tak kanály nezapomeňte sledovat, ať vám nic neunikne.
    • Série je vhodná pro vývojáře, pentestery a kohokoli dalšího, kdo se zajímá o bezpečnost nebo vývoj software.
  3. GhostToken Zero-Day Vulnerability Found In Google Cloud
    • Zranitelnost útočníkovi umožňuje infikovat cílový Google Cloud škodlivými aplikacemi.
    • Útočník mohl aplikaci připojit k účtu a skrýt ji před uživateli, tím zůstala neodhalena a uživatel dál nevědomky používal infikovaný cloud.
    • Chyba byla způsobena připojením aplikace k účtu pomocí access tokenu - šlo o špatnou OAuth implementaci.
    • Google zranitelnost opravil předtím, než ji někdo stihl zneužít.

😂 Závěrečný ftípek: Jaké jsou dvě největší obavy CISO v oblasti kybernetické bezpečnosti? Každý, kdo ve firmě pracuje… a každý, kdo tam nepracuje.

🔔 Sledujte mě na LinkedInu, kam pravidelně sdílím další novinky a know-how.

🆘 S bezpečností vám rád pomůžu, klidně mi napište - školím vývojáře i management, nastavuju procesy, vyvíjím bezpečné aplikace a poskytuju další služby