Konkrete Kritik an CVSS4
Marc Ruef
So kann man eine KI erfolgreich angreifen
Die hier dargelegte Diskussion betrifft starke und schwache KI gleichermassen. Bei beiden Formen wird eine Eingabe entgegengenommen, diese Verarbeitet und entsprechend Reagiert. Ob es sich hierbei um ein System zur klassischen Bilderkennung, einen Sprachassistenten im Smartphone oder einen vollautomatischen Kampfroboter handelt, spielt eine untergeordnete Rolle.
Ziel ist es, die vorgesehene Verarbeitung zu stören. Als Störung gilt jede Abweichung vom idealen Verhalten, das bei der Entwicklung, Umsetzung und Nutzung einer KI angestrebt, erwartet oder normalerweise beobachtet wird.
Bei einer Bilderkennung können falsche Resultate provoziert werden, bei einem Sprachassistenten lassen sich unlogische Dialoge provozieren und bei einem Kampfroboter werden die Grundlagen des Verhaltens übersteuert.
Eine KI hat zum Ziel, eine Reaktion zu erarbeiten und anzustreben. Diese Reaktion erfordert, dass eine gewisse Ausgangslage gegeben ist.
Bei klassischen Computersystemen gilt die Datengrundlage als Ausgangslage. Diese Daten können durch ein Eingabegerät (z.B. Tastatur oder Maus), einen Datenträger (z.B. Festplatte, externe Disk) oder eine Netzwerkkommunikation (z.B. Bluetooth, Internet) eingespielt werden.
Bei KI-Lösungen kommen vermehrt Sensoren zum Einsatz, die die klassischen Eingabegeräte ablösen oder mindestens ergänzen. Dies können Mikrofone für Spracheingaben und Kameras für bildgebende Eingaben sein. Es kann sich aber auch um anderweitige Sensoren handeln, die zum Beispiel Temperaturen, Geschwindigkeiten oder Fliehkräfte messen können.
Falls die vorgesehene Eingabe gestört werden kann, kann sich dies auf die weitere Datenverarbeitung auswirken. Spracheingaben müssen zum Beispiel als erstes die Frequenzen als Träger berücksichtigen können, um dann die Sprache als Inhalt erkennen zu können. Nebengeräusche können genauso zu Störungen führen, wie unvorhergesehene Sprachkonstrukte.
Bei bildgebenden Analysen kann ein nicht sichtbares Rauschen zum Einsatz kommen, um die Erkennung verfälschen zu lassen. Diese Manipulation ist mit blossem Auge nicht zu erkennen und bedarf einer tiefschürfenden technischen Analyse. Auch hier gibt es natürlich Bestrebungen, Spoofing als solches zu erkennen.
Die Verarbeitung durch Daten wird durch entsprechende Algorithmen, die als Code umgesetzt sind, durchgeführt. Dabei können logische Fehler zu ungewollten Zuständen führen.
Das Erkennen und Vermeiden von logischen Fehlern ist – mindestens im Vergleich zu klassischen Schwachstellen wie Buffer Overflows und Cross Site Request Forgery – mit überproportionalem Aufwand verbunden. Hier kann in der Regel nur eine formale Datenfluss- und Logikanalyse helfen.
Um die Aufwände von diesen gering zu halten, ist möglichst simpler Code anzustreben. Komplexität ist der grösste Feind der Sicherheit, was sowohl für klassische Software als auch Entwicklungen im KI-Bereich gilt. Durch kleine und modulare Routinen können diese überschaubar geprüft werden.
Dies bedingt ebenfalls, dass auf das Einbinden von komplexen externen Bibliotheken verzichtet wird. Dies setzt selbstverständlich viele Projekte unter Druck, da schliesslich nicht jedes von ihnen eine eigene Sprach- oder Bilderkennung von Grund auf und mit der zu erwartenden Qualität neu entwickeln kann.
Falls externe Komponenten beigezogen werden, müssen diese im Rahmen einer Evaluation sorgfältig auf ihre Sicherheit hin geprüft werden. Dazu gehört ebenfalls die Diskussion der Zukunftsträchtigkeit, die sich mit der Wartbarkeit der Komponente auseinandersetzen muss. Eine nicht gepflegte oder nur schwierig selber zu pflegende Komponente kann sich als funktionale und sicherheitstechnische Hypothek erweisen.
Eine KI muss auf einen Technologie-Stack zurückgreifen. Dabei kommen eine Reihe von Technologien und entsprechender Implementationen zum Einsatz. Hierbei handelt es sich um normale Hard- und Software, die ihrerseits mit den üblichen zu erwartenden Unzulänglichkeiten daherkommen können. Sicherheitslücken in KI-Systemen sind genauso normal, wie in Betriebssystemen oder Webapplikationen auch. Oftmals sind sie jedoch schwieriger auszunutzen und bedürfen unorthodoxen Methoden.
Durch gezielte Angriffe kann versucht werden, Schwachstellen in den einzelnen Komponenten auszumachen und auszunutzen. Schliesslich kann oftmals nicht einfach eine SQL-Eingabe an der Tastatur vorgenommen werden, die dann irgendwo direkt als solche weiterverwendet wird. Stattdessen müssen die individuellen Eingabemechanismen und die bei der Weiterverarbeitung gegebenen Umformungen berücksichtigt werden.
Es ist aber genauso denkbar, dass ein Sprachassistent bei seiner Datenbankanbindung mit einer SQL-Injection Schwachstelle aufwartet. Ob diese nun mit einer Spracheingabe ausgenutzt werden kann, ist aber abhängig davon, ob und wie die entsprechenden Sonderzeichen eingebracht werden können. Es bliebe zum Beispiel aus Sicht eines Angreifers zu hoffen, dass durch die Spracheingabe Ein einzelnes Anführungszeichen ist erforderlich die textliche Darstellung Ein einzelnes ' ist erforderlich
erzeugt werden kann. Bei populären Sprachassistenten (Siri, Alexa, Cortana) kann mit einem Gerät sowohl über Sprach- als auch mit Texteingaben kommuniziert werden. Dies kann die Komplexität traditioneller Angriffstechniken massgeblich reduzieren.
Durch diesen Ansatz liessen sich Schwachstellen aller Klassen ausnutzen. Bei Angriffstechniken, die mit komplexen Metastrukturen daherkommen, dazu gehört zum Beispiel auch Cross Site Scripting, ist jedoch mit erhöhten Aufwänden über unkonventionelle Kommunikationsmechanismen zu rechnen.
Die Möglichkeit des Lernens ist wichtiger Bestandteil einer KI. Bei produktiven Systemen wird in der Regel eine initiale Trainingsphase vorgesehen. Während dieser wird in klar abgestecktem Kontext die Grundlage für das Verständnis des Problems und etwaige erste Lösungsansätze gelernt.
Eine böswillige Manipulation dieser Phase ist in erster Linie durch Insider möglich, die Daten für das initiale Training liefern oder dieses direkt durchführen. Solche Angriffe können offensichtlich sein, wenn von blossem Auge erkennbares falsches Material zum Einsatz kommt (z.B. Fotos von Hunden anstatt von Katzen). Es kann aber auch subtiler erfolgen und deshalb erst viel später, falls überhaupt, auffallen.
Je nachdem woher die Ausgangsdaten für das Training kommen, können diese aber auch schon vorgängig durch Dritte manipuliert worden sein. Werden zum Beispiel Trainingsdaten von Bildern aus dem Internet bzw. Social Media bezogen, könnten sich da ungewollt gewisse Implikationen einnisten.
Eher plausibel und auch schwieriger zu handhaben sind jedoch Lernmechanismen, die während des Betriebs gegeben sind. Namentlich selbstlernende Systeme, die ihr Verständnis auf aktuellen Daten oder angefallenen Resultaten aufbauen.
Hat ein Angreifer Einfluss auf diesen Prozess, kann er das System “kaputt trainieren”. Eine Spracherkennung, die durch dynamisches Lernen versucht gesellschaftliche oder persönliche Eigenheiten (z.B. Akzente) besser verstehen zu können, kann zum Beispiel durch undeutliche Sprache dazu gebracht werden, eben diese als Norm zu verstehen. Dadurch kann langfristig die Erkennungsqualität gemindert werden.
Viele Chatbots mit selbstlernenden kontext-neutralen Algorithmen werden Opfer solcher Angriffe. Dies wurde eindrücklich am Twitter-Bot Tay von Microsoft aufgezeigt. Dieser wurde innert weniger Stunden mit rassistischen und sexistischen Inhalten übersteuert, und so sein ursprünglich familienfreundliches Verhalten ad absurdum geführt. Microsoft musste den Bot deaktivieren und zurücksetzen, um Schäden zu vermeiden.
Die Entwicklung einer sicheren und robusten KI setzt die gleichen Anforderungen voraus, wie bei der klassischen Hardware- und Software-Entwicklung. Durch defensive Programmierung soll verhindert werden, dass externe Einflüsse Zustände erzeugen können, die ungewollt, kontraproduktiv oder gar schädlich sind.
Eingabeüberprüfung ist genauso wichtig, wie bei einer klassischen Webapplikation. Nur vielleicht mit dem Unterschied, dass die Eingaben ursprünglich in einer Form daherkommen, die nur wenig mit klassischer String- oder Byte-Strukturen zu tun haben.
Die Validität von Eingaben, Berechnungen und Ausgaben ist vollumfänglich zu prüfen (validating). Dies gilt einerseits für Form (Struktur), andererseits aber auch für Inhalte (Daten). Nicht erwartete Abweichungen müssen entweder korrigiert (sanitizing) oder verworfen (rejecting) werden. Nur so lässt sich verhindern, dass direkt oder indirekt Einfluss auf die Verarbeitung genommen werden kann.
Selbstlernende Systeme müssen mit einem gewissen Mass an Skeptizismus daherkommen. Eingaben müssen auf ihre Vertrauenswürdigkeit und Qualität hin geprüft werden. Dadurch können potentiell schlechte oder böswillige Eingaben nicht oder nur marginal berücksichtigt werden. Den Ton angeben müssen und dürfen ausschliesslich Eingaben, die als korrekt klassifiziert werden. Natürlich gehen damit Einbussen in Bezug auf Flexibilität und Adaptionsfähigkeit einher.
Künstliche Intelligenz ist eine der treibenden Faktoren der modernen Datenverarbeitung. Im ganzen Enthusiasmus wird oft vergessen, dass es sich hier um sehr komplexe Software-Konstrukte handelt. Diese Komplexität ist nicht zu unterschätzen, da sie sich vor allem für das Einführen von Sicherheitsprolemen verantwortlich zeichnen kann.
Aus diesem Grund muss eine ganz besonders defensive Entwicklungs-Strategie gelebt werden. Dabei gilt es die klassischen Ansätze der sicheren Hard- und Software-Entwicklung zu berücksichtigen. Und dies auch dann, wenn Angriffsmöglichkeiten auf den ersten Blick als nicht existent oder vermeintlich nur schwierig auszunutzen wahrgenommen werden. Nur weil Angriffsszenarien unorthodox oder unpopulär gelten, heisst es noch lange nicht, dass sie über kurz oder lang angestrebt werden wollen.
Unsere Spezialisten kontaktieren Sie gern!
Marc Ruef
Marc Ruef
Marc Ruef
Marc Ruef
Unsere Spezialisten kontaktieren Sie gern!