Co je OAuth a OpenID, je react bezpečný, co je špatně s Copilotem a další
Znáte rozdíl mezi OAuth a OpenID? Používáte react (ne)bezpečně? Jaké nebezpečí vám hrozí, pokud se rozhodnete použít GitHub Copilot? Flipper Zero, Cloudflare breach...
🏆 Téma: OAuth 2.0 a OpenID Connect
OAuth 2.0
- Standard pro online autorizaci (autorizační protokol, nikoli autentizační).
- Umožňuje aplikaci přístup ke zdrojům jiné aplikace jménem uživatele.
- Dává přístup a omezuje akce, které může aplikace dělat jménem uživatele bez sdílení uživatelských credentials.
- Funguje na bázi access tokenů, které reprezentují přístup ke zdrojům jménem koncového uživatele.
- Formát tokenu není definován (často se používá JWT), ale obsahuje datum expirace.
- Po vypršení tokenu je možné si zažádat o nový prostřednictvím refresh tokenu, který je vytvořen spolu s access tokenem a má delší dobu expirace.
- Definuje 4 role:
- Vlastník zdroje: uživatel, nebo systém, který vlastní data a může k nim udělit přístup
- Klient: systém, který požaduje přístup k datům (webová aplikace, mobilní aplikace…)
- Autorizační server: server, který přijímá requesty od klienta a vystavuje access tokeny
- Server se zdroji: chrání uživatelské zdroje a přijímá requesty na přístup ke zdrojům od klienta
- Definuje scopes, které specifikují, ke kterým zdrojům je přístup udělen.
- Definuje grant type - sadu kroků, které musí klient udělat, aby získat výsledný přístup; nejčastější grant types:
- Autorizační kód: autorizační server klientovi vrátí jednorázový kód, který klient následně vymění za access token (vhodné pro webové a mobilní aplikace)
- Klientské credentials: klient se identifikuje pomocí client id a client secret (vhodné pro automatizované procesy)
- Refresh token: výměna refresh tokenu za access token
- Chcete vědět, jak zneužít OAuth 2.0 díky XSS? Toto téma přednáším ve firmách, napište mi.
Jak to funguje
- Před samotným použitím OAuth si musí klient vytvořit client id a client secret, které představují credentials, pomocí kterých se bude identifikovat - o to se stará autorizační server.
- Klient odešle autorizační request na autorizační server. K tomu potřebuje client id, client secret a scopes, kterými řekne, ke kterým zdrojům chce přístup, a redirect URI, na kterou se má poslat vygenerovaný token nebo kód.
- Autorizační server autorizuje klienta a komunikuje se serverem ohledně vytvoření přístupu ke zdrojům.
- Autorizační server pošle autorizační kód, nebo access token a refresh token (v závislosti na grant type) na redirect URI.
- Klient přistupuje ke zdrojům na serveru se zdroji pomocí vygenerovaného access tokenu.
OpenID Connect (OIDC)
- Identity protokol, který využívá autorizační a autentizační mechanismus OAuth 2.0.
- Narozdíl od OAuth 2.0 ověřuje identitu uživatele a poskytuje základní identifikační vrstvu.
- Může sdílet uživatelské údaje jako je jméno, příjmení, e-mail, profilovou fotku a další.
- Protokol předchází sdílení uživatelských credentials.
- Jelikož je postavený nad OAuth 2.0, tak spolu s access tokenem vrací ještě ID token, který zapouzdřuje uživatelská data (claims).
- ID token je často podepsaný a šifrovaný (HTTPS) pro zvýšení zabezpečení soukromí.
- OpenID provider může být například Facebook, Google a další.
🎓 Učíme se společně
Co jsme se dozvěděli z přednášek, školení, čtení knih a dalších aktivit?
Let me show you how React applications get hacked in the real-world
- Speaker: Liran Tal
- React je skoro bezpečný by default (= stále může dojít k XSS).
- React encoduje výstup, tzn. že
<script>
se vyrenderuje jako<script>
(nedojde ke spuštění, ale k výpisu). - To neplatí pro HTML atributy, jako je např.
href
-<a href="{data.link}">
, kdedata.link
obsahujejavascript:alert(1)
Tady se kód spustí a zobrazí se alert, žádný encoding se nekoná.- Nevkládat uživatelský vstup do atributů.
- Neimplementovat deny / black list (takřka vždy se na něco zapomene).
- XSS zranitelnosti nemusí nutně souviset s kódem, který jsme napsali - může se vyskytovat v nějakém z balíčků, který jsme v projektu použili.
- Kontrolovat zdraví balíčků pomocí Snyk Advisor nástroje.
- Skenovat bezpečnost závislostí pomocí
npm audit
a dalších.
- Nepoužívat funkce typu
dangerouslySetInnerHTML()
- ! To, že je nepoužíváme, neznamená, že je nepoužívá někdo jiný v balíčcích, se kterými pracujeme!
- Přečtěte si víc o XSS v našem předchozím newsletteru.
What’s wrong with Copilot?
- GitHub Copilot je produkt vytvořený Microsoftem, který vývojářům napovídá při programování.
- Díky velké databázi GitHubu bylo možné takovou AI natrénovat.
- Copilot vzbuzuje spoustu právních otázek týkajících se jak jeho tréninku, tak používání.
- Zdrojový kód může být vystaven pod různým typem licencí - jako uživatel musím přijmout pravidla, která licence stanovuje.
- Copilot licence při trénování AI nedodržuje a ohání se tím, že použití open source repozitářů pro trénink AI je fér. Nicméně nejde o otázku férovosti, ale práva.
- Pokud vývojář použije kód vygenerovaný Copilotem, jaká je jeho licence?
- Microsoft tvrdí, že Copilot je pouze nástroj pro napovídání, žádná licence tu tedy není a pokud se kód rozhodneme použít, je to náš problém (za bezpečnost atd. si ručíme sami).
- Existuje však spousta případů, kdy Copilot nebyl pouhým nástrojem pro napovídání, ale doslova zkopíroval kód z repozitáře, který je pod restriktivní licencí.
- Může se snadno stát, že akceptováním Copilot kódu porušíte nejen licenci, ale taky smlouvu se svým zaměstnavatelem nebo dodavatelem (osobně mám ve smlouvách často zákaz používání copy-left licencí).
📰 Co je nového
- SSRF v produktech Ivanti VPN je masově zneužívána.
- Útoky využívají SSRF chybu v SAML komponentě aplikace Ivanti.
- To umožňuje získání přístupu k jinak omezeným zdrojům bez přihlášení.
- Problém souvisí s neaktualizovanou open source knihovnou, která nebyla aktualizována od června 2023.
- Ivanti však neaktualizovala mnohem víc knihoven, což otvírá dveře dalším útokům.
- Celkem bylo odhaleno přes 28 000 instancí systému ve 145 zemích - 610 z nich bylo napadeno.
- Cloudflare breach: hackeři získali přístup ke zdrojovému kódu a interním dokumentům.
- Cloudflare se stal terčem mezinárodního útoku.
- Útočník ukradl přihlašovací údaje a přihlásil se k Atlassian serveru a nakonec získal přístup k části dokumentace a zdrojovému kódu.
- V návaznosti na to Cloudflare provedl rozsáhlou forenzní analýzu a rotoval přes 5000 různých credentials.
- Útočník podle všeho exfiltroval 76 ze 120 repozitářů, které souvisely s backupy, konfigurací sítě, správou Cloudflare identit, remote accessem a použitím Terraformu a Kubernetes.
- Některé repozitáře obsahovali šifrované credentials.
- Flipper Zero snadno rozbije iPhone.
- Flipper Zero je hacking nástroj navržený pro security researchery, které umožňuje nahrát a reprodukovat různé bezdrátové signály (umožňuje například přečíst detaily kreditní karty přes oblečení).
- Flipper Zero dokáže posílat nekonečné množství zpráv (pop-ups), které iPhone žádají o připojení přes Bluetooth.
- Tato oznámení dokáží iPhone zahltit a učinit jej nepoužitelným.
- Útok byl proveden na iOS verze 17 a jedinou možností, jak útoku předejít, je mít vypnutý bluetooth.
😂 Závěrečný ftípek: Why did the database administrator slice a tree stump in half? He needed a binary log.