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.
🙏 Vyplňte prosím zpětnou vazbu k newsletteru, ať je s každým vydáním lepší a lepší.
🔔 Sledujte Bezpečný kód na LinkedInu, kam pravidelně sdílíme další novinky a know-how.
🆘 S bezpečností vám rád pomůžu, klidně nám napište - školím vývojáře i management v oblasti psaní bezpečného kódu a S-SDLC.