Kwetsbaarheid in nieuwe TouchID-functie brengt iCloud-accounts in gevaar voor inbraak
Artikel inhoud
Inloggen via TouchID/FaceID in Safari - geen 2FA?
In iOS 13 en macOS 10.15 heeft Apple de mogelijkheid toegevoegd om in te loggen op Apple's eigen sites met TouchID/FaceID in Safari. Wanneer je een pagina bezoekt met een inlogformulier voor een Apple-account, wordt een prompt getoond om te authenticeren met TouchID. Als authenticatie slaagt, ben je direct ingelogd - dit slaat de stap van tweefactorauthenticatie over.
De kwetsbaarheid
Twee parameters zijn erg belangrijk in de iframe-URL: de client_id en redirect_uri. De idmsa.apple.com-server houdt een lijst bij van geregistreerde OAuth2-clients en de redirect-URI's die voor elke client zijn toegestaan. Voor alle OAuth2-modi is het erg belangrijk dat de authenticatieserver de redirect URI correct valideert.
Wat we ontdekten was dat de gsa.apple.com API een bug had: hoewel de client_id en redirect_uri waren opgenomen in de gegevens die door akd werden verzonden, controleerde het niet of de redirect URI overeenkomt met de client ID. In plaats daarvan werd alleen een whitelist toegepast op de domeinen: alle domeinen die eindigen op apple.com, icloud.com en icloud.com.cn werden toegestaan.
Apple.com heeft honderden subdomeinen. Als een van deze subdomeinen kwaadaardige JavaScript kon uitvoeren, konden ze worden gebruikt om de prompt voor een login met de iCloud client_id te activeren, waardoor dat script de grant code van de gebruiker kon ophalen. Vervolgens kon de pagina deze terugsturen naar een aanvaller die deze kon gebruiken om een sessie op icloud.com te verkrijgen.
Gebruik van captive portal
Een bijzonder interessant aanvalsscenario: captive.apple.com. Wanneer een Apple-apparaat verbinding maakt met een Wi-Fi-netwerk, probeert het http://captive.apple.com/hotspot-detect.html te benaderen. Door een nep-hotspot op te zetten op een locatie waar gebruikers verwachten een captive portal te ontvangen (luchthaven, hotel, treinstation), zou het mogelijk zijn geweest om toegang te krijgen tot een aanzienlijk aantal iCloud-accounts.
Apple's reactie
We hebben deze kwetsbaarheid gemeld aan Apple via hun verantwoordelijke meldingsprogramma. Zij hebben het dezelfde dag nog opgelost nadat ze het hadden beoordeeld. De gsa.apple.com API controleert nu correct of de redirect_uri overeenkomt met de client_id. Daardoor kon dit volledig aan de serverzijde worden opgelost.