Přeskočit na hlavní obsah

Jak přemýšlí hacker, proč psát API dokumentaci a další

Zjistěte, jak přemýšlejí hackeři. Zvyšte bezpečnost psaním API dokumentace. Naučte se psát bezpečný kód v mém kurzu nebo na školení aplikační bezpečenosti. Znáte path traversal útok?


Pozor, newsletter čekají změny!

Brzy se z pravidelného posílání jednou za měsíc stane nepravidelné. Nebojte, nebudu vás spamovat týdně, spíš se doba mezi newslettery prodlouží. Délka newsletterů se bude odvíjet od toho, kolik za tu dobu posbírám informací a novinek. Struktura zůstane podobná.

Během dalších měsíců plánuju zpoplatnit archiv newsletterů. Tím, že tento newsletter pravidelně odebíráte, se vás to ale netýká. :-)

🏆 Téma: Jak přemýšlí hacker

  • Vývojáři a testeři často řeší, jak přemýšlí hacker a chtějí se to naučit.

  • Normální lidi se chovají tak, jak se od nich očekává.

  • Hacker dělá věci, které jsou neočekávané (takhle jednoduché to je).

  • Hackeři hledají slabiny, chyby a předpoklady, jak aplikaci rozbít a ptají se otázkou “co když…”.

  • Hacker nectí pravidla, hledá způsob, jak je obejít.

  • Má na to ale konkrétní postup:

    1. nastaví si cíl,

    2. zjistí, jak systém funguje,

    3. získá informace,

    4. identifikuje možnosti,

    5. donutí systém zachovat se neočekávaně,

    6. exploit.

Pojďme si to ukázat na příkladu.

Jak se dostat do klubu jako VIP?

Dnes je páteční večer a vy nemáte co na práci. Rozhodnete se, že půjdete do vyhlášeného klubu ve vašem městě. Víte ale, že se tam platí vstupné a stojí se tam dlouhá fronta. Platit se vám ale nechce a stát frontu taky ne, chcete se dostat dovnitř bez toho (máte cíl). Chvíli se rozhlížíte a přemýšlíte, jak to udělat jinak. Normální člověk by si řekl: “no co…” a vystál by frontu.

Nakonec si všimnete, že existuje druhá řada, VIP, která je prázdná. Stojí tam ale slečna s tabletem, která vstupu brání (zjistili jste, jak systém funguje). Rozhodnete se jít VIP cestou, protože to přece nedělá nikdo, kdo není VIP, a začnete rozhovor se slečnou.

Vy: “Mám VIP vstup, jsem na seznamu.”, řeknete hodně znuděně.

Slečna: “Jak se jmenujete?”

Vy: “Jsem tu se skupinou.”, řeknete otráveně.

Slečna: “Dobře a s jakou?”

Vy: “No s tou největší…”, říkáte nezaujatě.

Slečna: “Aha, myslíte XYZ?”

Vy: “Bingo!”, řeknete s úsměvem.

V tomto rozhovoru jste získali informace a identifikovali jste možnosti. Museli jste zjistit, jestli je tam vůbec nějaká ta skupina, nebo jak se vlastně dostat dovnitř. To jste udělali pomocí sociálního inženýrství. Slečnu jste pak donutili zachovat se neočekávaně tím, že ona bude ten člověk, který vám řekne jméno skupiny, která je na seznamu.

No a nakonec jste provedli exploit. Se skupinou jste se ztotožnili a získali jste přístup do klubu. Ba co víc, máte tzv. vyšší oprávnění, jste VIP. Můžete si v klubu dělat prakticky cokoli narozdíl od těch, kteří stáli frontu.

  • Převeďte si tento příběh do jazyka vaší aplikace.
  • Pro většinu vývojářů nebo testerů, prostě těch normálních lidí, je těžké si toto chování představit.
    • Vývojáři se denně věnují psaní efektivního kódu a prakticky nepřemýšlí nad tím, jak ten kód rozbít.
    • Hacker přemýšlí nad rozbíjením kódu každou minutu.
  • Být hackerem znamená změnit mindset a dělat věci jinak.
  • Vyžaduje to i určitou soutěživost a neustálé překonávání svých možností.
    • To je pro většinu lidí těžké - nechtějí s nikým soutěžit, chtějí jen dělat dobře svojí práci.

🎓 Učíme se společně

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

Why API Documentation Drives API Security

  • Pořadatel: APIsec University
  • Spousta zranitelností vzniká kvůli nesprávnému řízení inventáře, jde o 9. nejčastější API zranitelnost.
  • Pokud chceme zabezpečit naše endpointy, musíme je znát a jako firma se musíme dívat do jednoho zdroje pravdy (sprawl problem).
  • Jak začít - podívat se do produkčního a testovacího prostředí a hrubě je zdokumentovat (gateway, logy).
  • Dokumentace je forma návrhu. Každý software se nejdřív navrhuje a s tím souvisí jeho dokumentování, přiřazení významů jednotlivým prvkům, atd.
  • Popis endpointu a jednotlivých fieldů je jen začátek - mělo by se popsat, jak API fungují jako celek a jaké jsou use casy.
    • Musí se popsat aplikační flow - někdy je potřeba nejdřív autorizace, potom následuje přesměrování na další službu, atd.
  • Flow zároveň říká, jak by se mělo API testovat (tvorba scénářů).
  • Není to jen reference, je to hlavně průvodce a jakési zadání.
  • Předchází se tím duplikaci funkcionalit, což je častý problém u větších projektů, kdy se v nich už snadno ztrácíme.
  • Nedokumentujte ručně, použijte automatické nástroje (např. OpenAPI).
  • Důležité je dokumentaci zabezpečit a neukazovat ji někomu, kdo by ji neměl vidět.
  • V nejhorším stavu je dokumentace errorů - API vrací chyby a často tyto chyby není možné nikde dohledat, to výrazně snižuje uživatelskou zkušenost s produktem.
  • Dokumentace je pro softwarové produkty sales materiál, pomocí kterého si budoucí zákazníci ověří kvalitu produktu a řeknou si, jestli ho chtějí používat.
    • Já osobně nepoužívám produkty, které nemají dokumentaci, nebo ji mají ve špatném stavu (nedostatečnou). Ze zkušenosti vím, že je pak práce s produktem docela za trest.
  • Dokumentace musí být psaná tak, aby jí rozuměl i netechnický člověk - jasně popsat, co se kde děje.

📰 Co je nového

  1. Path traversal útok na nasšem YouTube
    • Podívejte se, jak útok probíhá a jak této zranitelnosti předcházet.
  2. Umíte psát bezpečný kód?
    • V tomto online kurzu vás naučím koncepty bezpečného vývoje software.
    • Kurz je určený jak pro juniorní, tak seniorní vývojáře.
    • Z tohoto kurzu vychází i firemní školení.
    • Aktuálně připravuju podobný kurz v angličtině.
  3. Chystáme další kurzy pro management a vývojové týmy.
    • V jednom z kurzů manažerům IT oddělení vysvětlíme, jak vybírat cybersecurity konzultanty, jaká forma pentestu je pro ně ta nejlepší, naučíme je stanovovat a měřit cíle a vhodný budget pro cybersecurity atd.
    • Ve druhém kurzu naučíme celý vývojový tým (vývojáře, testery, projekťáky…) zásady bezpečného vývoje software, tzv. S-SDLC. Budeme se věnovat zabezpečení všech fází vývojového cyklu (plánování, analýza, návrh, vývoj, testování, nasazení, údržba) a učit se aktivity, které zvýší bezpečnost software.
    • Dejte mi vědět, pokud by vás některý z kurzů zajímal, nabízím možnost účasti na daném kurzu zdarma.

Pozor, newsletter čekají změny!

Brzy se z pravidelného posílání jednou za měsíc stane nepravidelné. Nebojte, nebudu vás spamovat týdně, spíš se doba mezi newslettery prodlouží. Délka newsletterů se bude odvíjet od toho, kolik za tu dobu posbírám informací a novinek. Struktura zůstane podobná.

Během dalších měsíců plánuju zpoplatnit archiv newsletterů. Tím, že tento newsletter pravidelně odebíráte, se vás to ale netýká. :-)


😂 Závěrečný ftípek: After a life of cybercrime, how did the hacker get to heaven? The password hadn’t been changed in 2000 years.