Karte oder Gesicht: grundlegende Unterschiede
Der Betriebsalgorithmus eines klassischen Zugangskontrollsystems sieht folgendermaĂen aus:
- die Person bringt die Karte zum Leser;
- Der Leser empfÀngt die Kartennummer und sendet sie an den Server.
- Der Server ĂŒberprĂŒft die Berechtigungen fĂŒr diesen SchlĂŒssel und gibt, wenn der Zugriff zulĂ€ssig ist, den Status "OK" zurĂŒck.
- .
Wenn wir diesen Algorithmus anwenden und die Kartennummer durch ein Gesichtsbild ersetzen, kommt es zu einer lokalen Apokalypse, da das Bild viel gröĂer als die Kartennummer ist. Dies bedeutet, dass die Ăbertragung zum Server lĂ€nger dauert und das Abgleichen von Bildern in der Datenbank auf dem Server viel mehr ist als das Finden der SchlĂŒsselnummer. Wenn sich viele Mitarbeiter im BĂŒro stĂ€ndig bewegen, besteht eine Wahrscheinlichkeit ungleich Null, dass Sie ĂŒber das Schloss lĂ€cheln mĂŒssen, wĂ€hrend Sie darauf warten, dass sich die TĂŒr einige Minuten lang öffnet.
Um dies zu vermeiden, verwenden sie anstelle einer einfachen IP-Kamera ein intelligentes GerĂ€t, das fĂŒr die Gesichtserkennung leistungsfĂ€hig genug ist, und die Datenbank der Gesichter wird auf dem GerĂ€t gespeichert. In der Regel handelt es sich bei einem solchen GerĂ€t um ein leistungsstarkes Android-GerĂ€t oder einen kompakten PC unter Windows oder Linux.
In diesem Fall wird der zentrale Server verwendet, um die Besucherdatenbanken zu synchronisieren, die Lesersoftware zu aktualisieren und das gesamte System zu verwalten.
Durch das Verschieben der Verarbeitungslast vom Server auf die externe Kante mĂŒssen keine sensiblen Daten wie Bilder zur Verarbeitung gesendet werden. Antwortzeiten sind akzeptabel und Bandbreitenanforderungen werden reduziert.
Zusammen mit der Verarbeitungsleistung werden jedoch andere Aufgaben zu den Randknoten verschoben. Diese Ănderung fĂŒgt zwei bemerkenswerte Probleme hinzu:
- An den Grenzknoten wird zusĂ€tzlich zu den primitiven Operationen des Lesens einer Karte und des Ăffnens einer TĂŒr eine vollwertige GeschĂ€ftslogik hinzugefĂŒgt, die eine Quelle potenzieller Verwundbarkeit darstellt.
- , .
Wir möchten auch so schnell wie möglich in der Zukunft sein, wo es ausreicht, ein Ticket zu kaufen, um ĂŒber das Drehkreuz zu lĂ€cheln, aber wir halten es fĂŒr notwendig, die Situation auszuschlieĂen, in der jemand anderes lĂ€chelte und das Geld von Ihnen abgebucht wurde.
Wie unsere Studie Identified and Authorized: Sneaking Past Edge-Based Access Control Devices zeigt, weisen gesichtsbasierte Zugriffskontrollsysteme viele böse Schwachstellen auf: Sie können gehackt, ausgetrickst, mit einem Foto einer Person auf dem iPhone-Bildschirm anstelle des Gesichts einer Person dargestellt und sogar Administrator werden und gelöscht werden. Alle Chefs aus der Liste der in die RÀumlichkeiten zugelassenen.
Betrachten Sie eines der anfÀlligsten GerÀte in unserer Studie - ZKTeco FaceDepot 7B
Zugangskontrollsystem ZKTeco FaceDepot. Quelle: Trend Micro
Das GerĂ€t wird in einem stabilen MetallgehĂ€use mit Bildschirm und Frontkamera fĂŒr den Besucher geliefert. Die Gesichtserkennung erfolgt im GerĂ€t. WĂ€hrend der Authentifizierung aufgenommene Fotos werden nicht an den zentralen Server gesendet - die Prozessorleistung des Tablets reicht völlig aus, um die Erkennung selbst durchzufĂŒhren.
Eine typische Bereitstellung des ZKTeco FaceDepot ACS umfasst mehrere solcher GerĂ€te und einen zentralen Server, ĂŒber den die Benutzerbasis zwischen GerĂ€ten synchronisiert wird.
Ungesicherter USB-Anschluss
Das MetallgehĂ€use schĂŒtzt das ACS vor physischen Störungen, aber der offene USB-Anschluss an der Unterseite des GerĂ€ts beeintrĂ€chtigt alles. Es wurde entwickelt, um das GerĂ€t zu warten.
SicherheitslĂŒcke Nr. 1 - Ăffnen Sie den USB-Anschluss. Quelle: Trend Micro
Veraltete Android-Version
Eine weitere globale SicherheitslĂŒcke von ZKTeco ist die GerĂ€tefirmware, die auf der im April 2016 veröffentlichten Version von Android Lollipop 5.1.1 basiert. Heute ist die aktuelle Version von Android die zehnte. Im Laufe der Jahre hat das Betriebssystem viele sicherheitsrelevante Verbesserungen erhalten. Offensichtlich ist in der fĂŒnften Version nichts dergleichen vorgesehen.
Bildschirm mit Android-Version auf ZKTeco FaceDepot SKD. Quelle: Trend Micro
Die Möglichkeit, APK-Pakete zu installieren
Da dies Android ist, kann der Benutzer zum Startbildschirm gehen und die App starten. Beispielsweise kann er ApkInstaller starten und jedes Android APK-Paket von einem Medium installieren, das an einen USB-Anschluss angeschlossen ist.
APK Installer lÀuft unter ACS. Quelle: Trend Micro
Der GerĂ€tehersteller hat den Zugriff auf MenĂŒs und Anwendungen nur fĂŒr Benutzer mit Administratorrechten eingeschrĂ€nkt. Wie weitere Untersuchungen des GerĂ€ts gezeigt haben, ist dies kein Problem, da das GerĂ€t weiterhin mit dem Server kommuniziert und dies ĂŒber HTTP tut.
UnverschlĂŒsselter Austausch mit dem Server
Das GerĂ€t kommuniziert mit dem Server ĂŒber HTTP. Alle Informationen werden im Klartext ĂŒbertragen und können leicht abgefangen werden. Am schlimmsten ist, dass Verwaltungsbefehle im Klartext ĂŒbergeben werden - Benutzerregistrierung, Zuweisen einer Administratorrolle zu einem Benutzer, Löschen eines Benutzers und Synchronisieren.
Ein Angreifer, der Zugriff auf das Netzwerk erhĂ€lt, mit dem das Tablet verbunden ist, kann den Netzwerkverkehr zwischen dem ACS und dem Server abhören und die fĂŒr die DurchfĂŒhrung von Angriffen erforderlichen Informationen abrufen.
Leider ist es den GerĂ€teentwicklern gelungen, die mit der fehlenden DatenverschlĂŒsselung verbundene SicherheitsanfĂ€lligkeit weiter zu verstĂ€rken: Sie haben ein vollstĂ€ndig undichtes GerĂ€teauthentifizierungsverfahren durchgefĂŒhrt.
AnfÀllige GerÀteauthentifizierung
Das einzige Zeichen fĂŒr die LegitimitĂ€t eines GerĂ€ts auf dem Server ist das Token, das im Cookie ĂŒbergeben wird. Das Token wird gesetzt, wenn das GerĂ€t zum ersten Mal auf dem Server registriert wird und sich nach unseren Angaben nie Ă€ndert.
Der Token-Wert wird als Cookie gespeichert. Quelle: Trend Micro
Da das "geheime" Token im Klartext ĂŒbertragen wird, kann sich jeder HTTP-Client als legitimes ACS ausgeben. In unseren Experimenten haben wir curl verwendet, ein einfaches Befehlszeilenprogramm.
So haben wir beispielsweise einen neuen Benutzer im System registriert und ein Image fĂŒr ihn festgelegt:
Der erste Befehl registriert einen Benutzer mit dem Namen Bogus auf dem Server, der zweite legt ein Foto fĂŒr ihn fest. Quelle: Trend Micro
Die Datei userdata.post enthÀlt die Daten, die wir per POST an den Server gesendet haben. In unserem Fall enthÀlt die Datei die folgenden Daten: Inhalt der Bilddatei
, die an den Server gesendet werden soll. Quelle: Trend Micro
Registrieren eines Administrators bei curl
Ein vorhandener Administrator kann einen neuen Benutzer ĂŒber die Konsole auf dem GerĂ€t zum Administrator hochstufen. Der aktuelle Administrator muss sich zuerst ĂŒber die Gesichtserkennung beim GerĂ€t anmelden und dann auf die Systemkonsole zugreifen, um den Heraufstufungsprozess zu starten. Sobald der Benutzer auf die Administratorebene befördert wurde, sendet das GerĂ€t einen Bericht an den Server und benachrichtigt ihn ĂŒber die StatusĂ€nderung.
Da jedoch jeder Benutzer, dem das Token gehört, legitimen Netzwerkverkehr zwischen dem GerĂ€t und dem Server simulieren kann, hindert ihn nichts daran, den folgenden Befehl auszufĂŒhren und einen Benutzer zum Administrator zu machen: Durch
Festlegen von Berechtigungen = 14 wird der Benutzer zum Administrator. Quelle: Trend Micro
Nach der nĂ€chsten Synchronisierung des Servers und aller darauf registrierten ACS-GerĂ€te wird der neue Administrator im gesamten BĂŒronetzwerk erkannt.
Laden Sie alle Benutzerfotos hoch
Die URLs der auf dem Server gespeicherten Fotos sind vorhersehbar, sodass das Auflisten aller URLs und das Hochladen der Fotos ein Kinderspiel ist. FĂŒr den Zugriff auf diese URLs ist keine Authentifizierung erforderlich.
Unter der folgenden URL sendet der Server beispielsweise ein Foto eines Benutzers mit der ID â11111â:
Um Bilder zu sammeln, können Sie ein einfaches Skript erstellen, das Benutzer-IDs von â00000â zu einer beliebigen Nummer durchlĂ€uft und alle im System verfĂŒgbaren Fotos herunterlĂ€dt.
GefÀlschte Serverinjektion
Da die gesamte Kommunikation zwischen dem GerĂ€t und dem Server ĂŒber HTTP erfolgt, ist es relativ einfach, alle AC-GerĂ€te mithilfe einer ARP-Vergiftung (Address Resolution Protocol) auf einen gefĂ€lschten Server umzuleiten.
Nachdem wir das ZielgerĂ€t gezwungen hatten, mit unserem gefĂ€lschten Server zu kommunizieren, konnten wir dem GerĂ€t die Updates senden, die wir wĂ€hrend einer seiner regulĂ€ren Synchronisierungssitzungen benötigten. Diese Technik kann fĂŒr eine Vielzahl von Angriffen verwendet werden. Beispielsweise können Sie EndgerĂ€te mit einem Foto eines Benutzers versehen, fĂŒr den Sie den illegalen Zugriff auf ein FirmengelĂ€nde organisieren möchten.
Zugang per Foto eines legalen Besuchers
Angesichts der Anzahl möglicher Angriffsoptionen war das Testen dieser Methode bereits etwas ĂŒberflĂŒssig. Angesichts der Einfachheit und VerfĂŒgbarkeit eines solchen Angriffs, selbst fĂŒr eine Person, die weit von der Technologie entfernt ist, haben wir dennoch geprĂŒft, ob es möglich ist, das ACS anhand eines Fotos einer im System registrierten Person zu tĂ€uschen, die Zugang zum BĂŒro hat. Und sie waren sehr ĂŒberrascht, als der Angriff nach Durchlaufen mehrerer Optionen funktionierte: Die ZKTeco FaceDepot-Kamera unterstĂŒtzte die auf dem iPhone X und iPhone XS gezeigten Fotos, weigerte sich jedoch, dasselbe Foto auf dem Bildschirm des Smartphones iPhone 6, Samsung A10, Samsung S8, Samsung S9 zu ĂŒberspringen , Samsung S10, Samsung S10 + und Samsung Note 10.
Empfehlungen an Hersteller
Das ZKTeco FaceDepot-ZugangskontrollgerĂ€t ist nicht das einzige, das in unserer Studie getestet wurde. Leider enthielten auch andere GerĂ€te schwerwiegende SicherheitslĂŒcken, die ernsthafte Zweifel aufkommen lieĂen, dass sie verwendet werden könnten, um einen wirklich sicheren Umfang des physischen Zugriffs auf die UnternehmensrĂ€ume zu schaffen.
Alle in GerĂ€ten gefundenen SicherheitslĂŒcken sind in den Top 10 Sicherheitsrisiken fĂŒr Webanwendungen enthalten , die vom OWASP-Projekt zusammengestellt wurden:
- Keine StandardverschlĂŒsselung und Deaktivierung der serverseitigen VerschlĂŒsselung.
- anfÀlliges Authentifizierungs- und Sitzungsverwaltungssystem;
- veraltete Betriebssystemversionen.
Um die Sicherheit von ZugangskontrollgerÀten zu erhöhen, sollten Hersteller die folgenden Richtlinien befolgen:
- â , ;
- ;
- â USB- ;
- , .