Warum reden eigentlich alle über „Superfish“?
„Superfish“ steht aktuell als Synonym für ein eigentlich weitreichenderes Sicherheitsproblem. Die Meldung verbreitete sich wie ein Lauffeuer: Auf vielen Notebooks der Firma Lenovo wurde die Software „Superfish Visual Discovery“ vorinstalliert ausgeliefert und seither redet jeder über eben genau diesen ‚super Fisch‘, der leider alles andere als bekömmlich ist. Die „Superfish“ Software wird (inzwischen) von vielen AV-Herstellern auch als Adware oder gar Riskware deklariert. Die G DATA Sicherheitslösungen erkennen die Software als Gen:Variant.Adware.Superfish.1 (Engine A) und Win32.Riskware.Fishbone.A (Engine B).
Auch wenn Adware für die meisten User schon seit langer Zeit als unliebsame Erscheinung auf den PCs gilt, ist sie in den allermeisten Fällen nicht zwingend schädlich, wie wir schon in unserem Blogpost zum Thema PUP erklärten. Der nun so heiß diskutierte „Superfish“ bekommt jedoch eine Sonderrolle, denn er beinhaltet eine Technologiekomponente namens „SSL Digestor“, vertrieben von der Firma Komodia. Und diese Komponente hat etwas in sich, das das eigentliche Sicherheitsproblem auslöst: ein schlecht gesichertes und zugleich sehr mächtiges Stammzertifikat.
Von daher müsste man in der aktuellen Diskussion eigentlich einen Namen für eben dieses Stammzertifikat vergeben und nicht nur die Software sehen, die es benutzt. Zumal die „SSL Digestor“-Technologie mit seinem fragwürdigen Zertifikat inzwischen auch in einigen anderen Software-Produkten nachgewiesen wurde, wie das US CERT und auch IT-Forscher Marc Rogers berichten! Spätestens zum Zeitpunkt der Entdeckung anderer betroffener Produkte wurde klar, dass Lenovo-Kunden nicht die einzigen „Opfer“ dieser Problematik sind, wenn auch vielleicht die prominentesten, sondern die Sache eine noch viel größere Tragweite bekommt.
Sicherheit durch digitales Vertrauen im Internet
Das Vertrauen zwischen zwei Parteien im Internet ist oft durch Zertifizierungsstellen geregelt. Diese finden in vielen Bereichen Anwendung. Die beiden wichtigsten sind dabei die sichere Verbindung zwischen zwei Kommunikationspartnern sowie die digitale Unterschrift bei der Auslieferung von Software.
Sichere Kommunikation zwischen Parteien
Eine der Grundlagen für die sichere Kommunikation im Internet stellt die Verschlüsselung der Kommunikation auf dem Transportweg da. Hierbei wird sichergestellt, dass die Verbindung zwischen zwei Parteien weder abgehört, noch unbemerkt verändert werden kann. Diese Technik wird unter anderem beim Onlinebanking oder Einkaufen im Internet verwendet.
Technisch basiert die TLS (Transport Layer Security) auf dem Austausch von Zertifikaten, die die Identität von Kommunikationsteilnehmern sicherstellen. Jedes Zertifikat besteht dabei aus zwei Teilen: einem privaten, nur dem Eigentümer bekannten, Teil sowie einem öffentlichen Teil. Mittels bestimmter Algorithmen können die öffentlichen Teile zu Beginn einer Kommunikation ausgetauscht werden und es ist dabei sichergestellt, dass die jeweils andere Partei den privaten Schlüssel besitzt.
Stammzertifizierungsstellen und ihre Rolle
Da nicht jeder Kommunikationspartner jeden anderen im Internet direkt kennen kann und somit nicht in der Lage ist einzuschätzen, wie vertrauenswürdig sein Gegenüber ist, wurden Stammzertifizierungsstellen geschaffen. Diese bilden ein zentrales Element in der Vertrauenskette (Chain of Trust). Eine Menge von allgemein als vertrauenswürdig eingestuften Stammzertifikaten von Stammzertifizierungsstellen ist bereits in den Betriebssystemen und Browsern enthalten.
Bürgen und Unterschreiben
Es ist möglich, Zertifikatsketten zu bilden. Mithilfe dieser kann Vertrauen delegiert werden. Im unten stehenden Beispiel bildet „USERTrust“ die Stammzertifizierungsstelle. Diese hat digital unterschrieben, dass sie „COMODO Certification Authority“ vertraut. Demnach wird „COMODO Certification Authority“ nun auch als vertrauenswürdig eingestuft. Die Kette geht an der Stelle noch weiter. „COMODO Certification Authority“ wiederrum hat per digitaler Unterschrift für „COMODO Extended Validation Secure Server CA“ gebürgt. Diese Kette lässt sich fast nach Belieben weiterführen. Sie soll die Funktion der Stammzertifizierungsstellen verdeutlichen. Grundlage der gesamten Kette bildet das Vertrauen in die Stammzertifikate!
Die digitale Unterschrift
Neben dem Verschlüsseln von Internetkommunikation besitzen Zertifikate noch mindestens einen weiteren, ebenfalls weit verbreiteten, Anwendungszweck. Sie werden dazu eingesetzt, die Echtheit von Softwarekomponenten zu verifizieren. Ähnlich wie bei der gesicherten Kommunikation gibt es hier einen Herausgeber, welcher ein Zertifikat besitzt, dem durch eine Stammzertifizierungsstelle Vertrauen geschenkt wird. Hierdurch ist es möglich Software digital zu signieren, um die Echtheit zu garantieren. Diese Funktion wird auch dazu genutzt, um im Schutzkonzept des Windows Betriebssystems eine Vertrauensstellung von Programmen zu erzielen. Valide, digital signierte Programme genießen ein höheres Vertrauen als unsignierte Programme.
Wie funktioniert der „Superfish“?
Wie schon erläutert, ist „Superfish“ Adware. Um seine Werbebanner innerhalb einer aufgerufenen Webseite anzeigen zu können, muss „Superfish“ Inhalte in die bestehenden Webseiten injizieren. Solche Software muss dazu den auf den Rechner eingehenden Internetverkehr von Webservern manipulieren. Hierzu wird ein lokaler Proxy-Server installiert. Dafür gibt es verschiedene Ansätze. „Superfish“ installiert dazu auf betroffenen Rechnern einen Proxy-Server über die Windows-Filtering-Platform (WFP).
Es geht ans Eingemachte: Die Kommunikation zu vielen Webservern ist mittlerweile mittels TLS gesichert. Das bedeutet, dass der Internetverkehr zwischen dem Browser des Benutzers und der Webseite verschlüsselt ist. Im Browser ist die sichere Verbindung zum Webserver unter anderem daran zu erkennen, dass die Adressleiste mit "https://" statt "http://" beginnt. Eine solch sichere Verbindung sollte z.B. beim Einkaufen im Internet, Onlinebanking und jeder anderen Aktion, die sensible Daten enthält, benutzt werden.
Ein einfacher Proxy-Server reicht „Superfish“ nicht, da auch Werbebanner in Webseiten eingebunden werden sollen, die mittels TLS-gesicherter Verbindung abgerufen werden. Dazu muss jedoch die Verschlüsselung zunächst aufgebrochen werden.
Wie bricht „Superfish“ die Verschlüsselung auf?
Um dem Benutzer in seinen Suchergebnissen „Superfish“-Inhalte anzeigen zu können, muss „Superfish“ die Identitäten sämtlicher Webseiten annehmen können. Er muss sich also zwischen den Browser, der die Webseite anfragt und empfängt, sowie den Webserver, der die Webseite aussendet, schalten. Dieses Konzept nennt man Man in the Middle, kurz MitM. Um dies zu ermöglichen installiert „Superfish“ ein eigenes Stammzertifikat, also eines an der höchsten Stelle der Vertrauenskette.
Beim Besuch einer Webseite wird durch den von „Superfish“ verwendeten Proxy, dynamisch, stets ein neues Zertifikat erstellt. Es imitiert das Zertifikat des eigentlichen Kommunikationspartners, in diesem Fall des Webservers und wird vom „Superfish“-Stammzertifikat signiert. Der Benutzer kann an dieser Stelle nicht direkt feststellen, dass „Superfish“ den eigentlich sicher verschlüsselten Datenverkehr mitgelesen und manipuliert hat.
Um all das zu realisieren, muss der private Schlüssel des „Superfish“-Stammzertifikats auf dem Rechner hinterlegt werden, sonst wäre es der Software nicht möglich, die neu erstellten Zertifikate digital zu beglaubigen.
„Eine gesicherte Verbindung zu unterbrechen mag in seltenen Anwendungsfällen notwendig sein, jedoch muss es dafür einen triftigen Grund geben; das Einschleusen von Werbung zählt definitiv nicht dazu“, frei übersetzt nach Martijn Grooten. Bei „Superfish“ wurden zudem einige schwerwiegende Fehler gemacht durch die sich Sicherheitslücken aufgetan haben.
Der Fishbone ist nicht das einzige Problem von „Superfish“
Wie schon erwähnt, liefert nicht nur die Riskware „Superfisch Visual Discovery“ ein zu mächtiges Zertifikat aus, sondern auch andere Programme, die ebenfalls den Komodia „SSL Digestor“ beinhalten. Unter Ihnen soll laut @TheWack0lian auch VPN Software sein.
Zwar liefern die einzelnen Programme jeweils eigene Stammzertifikate aus, die mit einem eigenen privaten Schlüssel gesichert sind, jedoch ist das Passwort für alle (!) privaten Schlüssel identisch und bekannt. Damit sind alle diese privaten Schlüssel de facto ungeschützt. Einige von ihnen hat @TheWack0lian aufgelistet.
Außerdem wurde entdeckt, dass der auf einem PC installierte Komodia-Proxy sehr unglücklich reagiert, wenn er mit einem präparierten, ungültigen Zertifikat in Berührung kommt, so Filippo Valsorda. Bei der Ausstellung des Zertifikates auf Seiten des Proxys wurde durch eine Unachtsamkeit die Möglichkeit geschaffen, beliebige ungültige Zertifikate durch den Proxy als valide Zertifikate ausliefern zu lassen. Dem Benutzer wird hierbei suggeriert das alles in Ordnung sei, wobei die Vertrauenskette eigentlich überhaupt nicht vorhanden ist!
Übrigens Bemerkenswert: Ein von uns untersuchtes „Superfish“-Setup enthält Funktionalität, um eine möglicherweise erforderliche Benutzerbestätigung bei der Installation der notwendigen Zertifikate zu umgehen. Das entsprechende Nachrichtenfenster, das dem Nutzer angezeigt werden würde, wird automatisiert bestätigt. Außerdem wird die Soundausgabe in dem Moment kurzfristig deaktiviert, damit der normalerweise mit dem Nachrichtenfenster zusammen erklingende Signalton nicht hörbar ist. Spätestens an dieser Stelle muss den Entwicklern Absicht unterstellt werden, denn dem Benutzer werden aktiv Informationen vorenthalten. Bei der Untersuchung konnte die Aktivierung dieser enthaltenen Funktionalität jedoch nicht reproduziert werden.
Neben den bisher bekannten und wichtigen Betrachtungsweisen, die sich hauptsächlich auf die Manipulation der sicheren Kommunikation fokussieren, betrachteten die Experten der G DATA SecurityLabs eine weitere Richtung: Missbrauch der digitalen Signierung von Software. Deren Auswirkungen wurden bisher nicht ausreichend beschrieben, stellen jedoch einen nicht zu vernachlässigenden Risikofaktor dar!
Warum stinkt der Fishbone?
Wir rekapitulieren: Selbst wenn der User eine Software mit integriertem „SSL Digestor“ (wie zum Beispiel „Superfish Visual Discovery“) deinstalliert, verbleibt das mitgelieferte mächtige Stammzertifikat, eben der Fishbone, auf dem Rechner.
Das erste Problem: Der private Schlüssel ist nicht mehr privat
Das nötige Schlüsselpaar für das Stammzertifikat wird nicht für jeden Rechner dynamisch generiert, sondern ist auf allen (!) betroffenen Rechnern identisch. Das heißt: Wer den privaten Schlüssel kennt, kann daher jeglichen eigentlich mittels TLS-gesicherte Kommunikation zu jedem Rechner mit installiertem „Superfish“ mitlesen und auch manipulieren. Und genau dieser private Schlüssel wurde bereits veröffentlicht, unter anderem von Robert Graham. Damit kann ein Angreifer die Verschlüsselung aufbrechen, wenn er Zugriff auf den Datenstrom hat.
Das zweite Problem: Es gibt keine Einschränkung des Verwendungszwecks
Zertifikate, auch Stammzertifikate, können auf bestimmte Zwecke eingeschränkt werden. Das „Superfish Inc.“ Zertifikat ist jedoch vollkommen unbeschränkt. Damit kann ein Angreifer nicht nur, wie oben beschrieben, verschlüsselte Verbindungen von und zu Webseiten mitlesen und manipulieren, sondern zum Beispiel auch Programme signieren.
Der Fishbone als Angriffsvektor
Fakt ist: Der gesamte Datenverkehr zwischen einem Browser und einem beliebigen Server kann durch die MitM-Attacke mithilfe des Fishbones überwacht und manipuliert werden. Damit ergeben sich verschiedene mögliche Angriffs-Szenarien:
Szenario 1: Das Phishen von Zugangsdaten und Co.
Die Möglichkeiten, die sich hier ergeben, wurden bereits ausführlich von Forscherkollegen und den Medien beschrieben. Kurz zusammengefasst: Der Angreifer ist einerseits in der Lage sowohl gesicherte Verbindungen zu validen Servern mitzulesen (also zum Beispiel Benutzernamen, Passwörter oder auch TANs, etc.). Er kann aber auch den Datenstrom zu nicht validen Servern umleiten (z.B. einehausbank.de vorgaukeln aber eineboesehausbank.de aufrufen) und diese Verbindung trotzdem valide aussehen lassen.
Szenario 2: Kaum zu erkennen – reguläre Downloads neu verpackt
Da der Fishbone ebenfalls zum Signieren von Programmen verwendet werden kann, ergibt sich ein äußerst perfider Angriffsvektor: Lädt der Benutzer eine ausführbare Datei herunter, zum Beispiel eine Setup-Datei über ein Downloadportal, kann diese Datei von einem Angreifer dank der Man-in-the-Middle-Technik ausgetauscht werden. Dies ist auch bei einer verschlüsselten Verbindung möglich.
Eine ausgetauschte Datei kann mit einer gültigen digitalen Unterschrift signiert werden. Ein Beispiel:
- Ein Benutzer möchte eine digital signierte Installationsdatei (Datei A) eines Herstellers von dessen Webseite herunterladen.
- Der MitM-Proxy lädt Datei A vom Server des Herstellers und liest die valide digitale Signatur des Herstellers aus.
- Mithilfe des Fishbones wird dynamisch ein neues Zertifikat erstellt, das das valide Zertifikat des Herstellers imitiert. Das Neue wird dann mit dem Fishbone signiert.
- Der Angreifer erweitert Datei A nach dem Zwiebelprinzip um die von ihm gewünschte Schadfunktionalität, also eine weitere Schicht, und fügt z.B. einen Banking-Trojaner hinzu. Das Zwiebelprinzip bewirkt, dass beim Ausführen der neu erstellten Datei zunächst der Banking-Trojaner installiert werden würde und erst danach die ursprüngliche Datei A gestartet wird.
- Die im vorherigen Schritt erstellte Datei wird anschließend mit dem in Schritt 3 erstellten Zertifikat digital signiert.
- Abschließend wird die neu erstellte und signierte Datei vom MitM-Proxy an den Benutzer ausgeliefert.
In der Regel würde kein Benutzer an dieser Stelle Verdacht schöpfen und die Datei wie von ihm geplant zur Installation ausführen. Microsoft Windows zeigt zwar vor Installationen den Urheber (Inhaber des Zertifikats) einer Setup-Datei an. Aber diese kann vom Angreifer so manipuliert werden, dass sie, zumindest auf den ersten Blick, genauso aussieht, wie die Setup-Datei, die ursprünglich installiert werden sollte. Der Download hat somit als Trojanisches Pferd für den Schadcode gedient.
Szenario 3: Der Super-GAU – die Updates stinken nach Fisch
Der in Szenario 2 beschriebene Angriff kann oftmals auch auf Update-Kanäle ausgeweitet werden. Diese sind häufig mittels TLS gesichert. Exemplarisch hierfür haben sich die Experten der G DATA SecurityLabs die Software „ThinkVantage System Update“ von Lenovo angesehen. Diese Update-Software ist unter anderem auf von den von der „Superfish“-Problematik betroffenen Geräten der E-Serie enthalten. Üblicherweise dient diese Software zur Aktualisierung der Systemsoftware.
Start des Programms „ThinkVantage System Update”
Während des Aktualisierungsvorgangs wird, über eine mittels TLS gesicherte Verbindung, zunächst eine Indexdatei mit einer Liste von Update-Operationen geladen. Eine beobachtete Update-Operation ist dabei das Herunterladen und Starten einer ausführbaren Datei (uts.exe):
Inhalt der heruntergeladenen Indexdatei
Die Software lädt Aktualisierungsdateien herunter
Mithilfe der Man-in-the-Middle-Technik konnte uts.exe während der Übertragung ausgetauscht werden, so dass die ausgetauschte Datei nach dem Herunterladen ausgeführt wurde.
Neben dem Austausch der ausführbaren Datei selbst musste selbstverständlich auch die Prüfsumme innerhalb der Indexdatei ausgetauscht, bzw. angepasst, werden. Die Prüfsumme wird im oben gezeigten XML-Dokument zwar „CRC“ genannt, tatsächlich handelt es sich aber um eine SHA1-Prüfsumme.
Die ausgetauschte uts.exe wurde automatisch ausgeführt. Owned!
Es ist durchaus denkbar, dass auf anderen Geräten ebenfalls Software enthalten ist, deren automatisierte Updates in Verbindung mit „Superfish“ oder einem vergleichbaren „Man-in-the-Middle-Zertifikat“ als trojanisches Pferd genutzt werden können.
Was ist im Fall einer Fish(bone)-Vergiftung zu tun?
Der Casus knacksus sämtlicher aufgezeigter Angriffe ist der Fishbone, also das durch Komodia-Software installierte, mächtige Stammzertifikat. Wird dieses vollständig vom System entfernt, fehlt der essentielle Teil der oben genannten Angriffe und das akute Problem ist beseitigt!
Entfernungsanleitungen
Das manuelle Entfernen des „Superfish Inc.“ Zertifikats ist nicht aufwändig. Es muss jedoch aus allen auf dem Rechner vorhandenen Zertifikatsspeichern entfernt werden – sowohl aus dem von Microsoft Windows als auch aus den browsereigenen Zertifikatsspeichern. Folgende Anleitungen stehen zur Verfügung: