Kort samengevat: beveiliging van apparaatgebonden sessies
- Het gat: MFA wordt behandeld als de finishlijn voor accountbeveiliging, maar op het moment dat de authenticatie is voltooid stopt het met helpen, en elke gestolen sessietoken die is uitgegeven na een geldige MFA-uitdaging werkt nog steeds vanaf elk apparaat op internet.
- Wat cside ziet: cside apparaatgebonden sessies genereren een hardware-afgeleide vingerafdruk uit GPU-rendering, canvas-entropie, lettertypemetingen en WebGL-uitvoer die het wissen van cookies, incognitomodus en VPN's overleeft omdat hij vanuit het apparaat wordt herberekend in plaats van in cookieopslag te staan.
- De beslissing: Als je account takeover-houding stopt bij MFA, beslis dit kwartaal of een XSS-bug of man-in-the-browser-tool die een geldige sessietoken meeneemt een risico is dat je volledig wilt dragen.
Weinig tijd? Bekijk cside accountovername-detectie. Dit dekt alles hieronder in één deployment.
Een apparaatgebonden sessie is een geauthenticeerde sessie die gekoppeld is aan het specifieke apparaat dat hem aanmaakte. Als de sessietoken later vanaf een ander apparaat wordt aangeboden, wordt de fingerprint-mismatch opgemerkt en wordt de sessie geweigerd of naar een step-up-uitdaging gestuurd. Dat dicht een gat dat de meeste authenticatie openlaat: het venster na het inloggen, waarin een geldige token kan worden gestolen en ergens anders opnieuw kan worden afgespeeld.
| Scenario | Wat MFA doet | Wat apparaatbinding doet |
|---|---|---|
| Gestolen inloggegevens vóór het inloggen | Vraagt de aanvaller om een tweede factor | Wacht tot er een sessie is om te binden |
| De aanvaller voltooit MFA op het eigen apparaat | Staat het inloggen toe omdat de controle is voltooid | Bindt de nieuwe sessie aan het apparaat van de aanvaller en herstelt de gecompromitteerde login dus niet |
| Een geldig sessietoken wordt na MFA gestolen | Voert geen nieuwe inlogcontrole uit | Detecteert een afwijkende fingerprint wanneer het token vanaf een ander apparaat wordt hergebruikt |
| Een geldig verzoek komt van het oorspronkelijke apparaat | Heeft de inlogcontrole al afgerond | Vindt een match met de opgeslagen fingerprint en laat de sessie doorgaan |
Het gat na authenticatie dat apparaatbinding dicht
MFA beschermt de inloggebeurtenis. Het bevestigt dat de persoon die inloggegevens indient op dat moment ook een tweede factor beheert. Zodra de authenticatie is voltooid en een sessietoken is uitgegeven, heeft MFA zijn werk gedaan. De token zelf is een bearer-credential, dus elke partij die hem bezit kan hem aan de server aanbieden en een geauthenticeerd antwoord krijgen.
Sessietokens worden via verschillende routes gestolen: cross-site scripting dat cookies leest, man-in-the-browser-proxy's die tokens onderscheppen op het moment dat ze worden ingesteld, gestolen apparaatopslag en social engineering die gebruikers misleidt om ze prijs te geven. In elk geval eindigt de aanvaller met een geldige token die is uitgegeven na een legitieme MFA-uitdaging. De uitdaging ligt al in het verleden. De gestolen token werkt nog steeds.
Apparaatgebonden sessies dichten dat gat. Zelfs wanneer een aanvaller een geldige token bezit, levert het gebruik ervan vanaf een ander apparaat een fingerprint-mismatch op die de server kan detecteren. De sessie wordt alleen vertrouwd wanneer hij afkomstig is van het apparaat dat hem aanmaakte.
Hoe apparaatbinding technisch werkt
De sessie wordt gebonden op het moment van authenticatie. Wanneer een gebruiker inlogt, wordt de apparaat-fingerprint voor die sessie (afgeleid uit browser- en hardwaresignalen) samen met de sessietoken vastgelegd in de sessieopslag van de server.
Bij elk later verzoek dat de token aanbiedt, vergelijkt de server de huidige fingerprint met die welke bij het inloggen is vastgelegd. Als ze overeenkomen, gaat het verzoek door. Als dat niet zo is, wordt de sessie ongeldig gemaakt of wordt er een step-up-uitdaging geactiveerd.
De fingerprint die voor binding wordt gebruikt, moet stabiel en van hardware afgeleid zijn. Op cookies gebaseerde identifiers zijn niet geschikt, omdat ze samen met de sessietoken kunnen worden gekopieerd. Een aanvaller die een sessiecookie steelt, kan ook elke op cookies gebaseerde apparaat-ID stelen die in dezelfde opslag staat. Een fingerprint op browserniveau, afgeleid uit GPU-rendering, canvas-entropie, lettertypemetrieken en WebGL-output, kan niet uit de cookieopslag worden gehaald, omdat hij daar niet is opgeslagen. Hij wordt bij elke sessie opnieuw berekend uit de hardware.
cside apparaatgebonden sessies genereert een van hardware afgeleide fingerprint bij het aanmaken van de sessie en geeft die samen met de sessietoken terug via zijn API. Je server legt de fingerprint samen met de sessie vast. Bij elk beschermd verzoek herberekent het lichtgewicht script van cside de fingerprint voor de huidige sessie, en je applicatie vergelijkt die met de opgeslagen waarde. cside vervangt je sessietoken niet. Het geeft je een apparaatsignaal dat sterk genoeg is om te zien of de token ergens wordt afgespeeld waar dat niet zou mogen.
Waartegen apparaatbinding beschermt
Session hijacking na XSS. Een cross-site-scriptingfout waarmee een aanvaller sessiecookies kan lezen, levert geen bruikbare sessie op wanneer die sessie apparaatgebonden is. Het opnieuw afspelen van de gestolen token vanaf de machine van de aanvaller levert een fingerprint-mismatch op.
Man-in-the-browser-sessieonderschepping. Browsermalware die een geauthenticeerde sessie onderschept, legt de token vast maar niet het apparaatsignaal, omdat het signaal wordt berekend uit de hardware van het slachtoffer. De gestolen token komt niet overeen met de fingerprint van de aanvaller.
Delen van inloggegevens na authenticatie. Wanneer een legitieme gebruiker zijn sessietoken aan een collega geeft (gebruikelijk in enterprise-tools waar het toevoegen van een seat een beheerdersactie vereist), vertoont de gedeelde sessie een apparaat-mismatch. Dit is het probleem van account sharing toegepast op de sessielaag in plaats van de inloglaag.
Onmogelijke reis. Een sessie die in Londen is aangemaakt en vervolgens wordt aangeboden vanaf een apparaat met netwerkkenmerken uit een andere regio, binnen een tijdvenster dat te kort is voor fysieke reis, is detecteerbaar via de fingerprintwijziging in combinatie met netwerksignalen.
Hoe apparaatgebonden sessies en MFA samenwerken
Apparaatbinding beschermt de sessie na authenticatie. MFA beschermt de inloggebeurtenis tijdens authenticatie. Ze dekken verschillende punten in de levenscyclus van de sessie, en een complete verdedigingshouding tegen account takeover heeft beide nodig.
Een aanvaller die MFA verslaat via een SIM-swap of push-notificatievermoeidheid en zich succesvol authenticeert, ontvangt een sessietoken op zijn eigen apparaat. Apparaatbinding op die sessie helpt niet, omdat het apparaat van de aanvaller de oorsprong van de sessie is. MFA is de controle die er in dat stadium toe doet.
Een aanvaller die toekijkt hoe een legitieme gebruiker MFA voltooit en vervolgens de sessietoken steelt via XSS, wordt tegengehouden door apparaatbinding, omdat zijn fingerprint niet overeenkomt met de oorsprong van de sessie. MFA is al voltooid en biedt op dit punt niets.
Zet je de twee samen, dan is de dekking duidelijk. MFA houdt aanvallers bij het inloggen tegen die geen geldige inloggegevens hebben of niet aan de tweede factor kunnen voldoen. Apparaatbinding houdt aanvallers na het inloggen tegen die op een andere manier een geldige sessie hebben verkregen.








