Googles Kamera verfälscht Links in QR-Codes

Künstliche Intelligenz + QR Codes = Chaos. Googles Camera-App erzeugt unter Android 12 falsche Links – eine Einladung für freche Attacken.

Lesezeit: 13 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 374 Beiträge
Infografik zeigt zweimal den selben QR-Code. Links wird darin ein Link heise.net.at erkannt, rechts ein Link https://heisenet.at

Suchbild: Wer findet den Unterschied? Links ein Screenshot der Google Camera App auf einem Pixel 5, rechts ein Screenshot der App QR Barcode von BondRen auf dem selben Handy.

(Bild: Daniel AJ Sokolov)

Von
  • Daniel AJ Sokolov
Inhaltsverzeichnis

QR-Codes in freier Wildbahn sind grundsätzlich verdächtig – besonders Misstrauen ist angezeigt, wenn man sie mit der Camera-App eines Pixel-Handys unter Android 12 ausliest. Algorithmen der App verändern beim Auslesen von QR Codes darin enthaltene Links leicht und schlagen dann sehr ähnliche, aber falsche Webadressen zum Öffnen vor. Ein Klick, und der User landet bestenfalls bei einer Fehlermeldung, schlimmstenfalls direkt in den Armen eines gewieften Angreifers.

Der Grund für den Bug ist nicht unmittelbar deutlich. Ein Zusammenhang mit optischen URL-Verkürzungen, die sich in Googles Chrome-Browser eingenistet haben, drängt sich auf. Vielleicht verschlimmbessert ein Algorithmus auch nur vermeintliche Tippfehler. Dabei sind die quadratischen QR-Codes gerade dazu gedacht, Abschreibfehler bei der Weitergabe von Information zu vermeiden.

heise security konnte das Fehlverhalten mit Pixel-Handy-Modellen 3 XL, 3a, 4, 4a, 5, und 6 Pro dokumentieren – allerdings nur mit Android 12. Ein Pixel 3a wies den Fehler unter Android 11 nicht auf, nach Update auf Android 12 schon. Bei Geräten anderer Hersteller haben wir das Problem bislang nicht beobachten können. Nicht betroffen sind, soweit wir gesehen haben, Links für andere Protokolle als http(s), also zum Beispiel ftps oder mailto. Wird gar kein Protokoll angegeben, variieren die Ergebnisse.

Der erste Fehler betrifft http(s)-Links bestimmter Länderdomains (ccTLD), egal ob sich der Link auf den Domainnamen beschränkt (https://fooco.at) oder nach dem Domainnamen noch Linktext folgt, der auf ein Verzeichnis oder Dokument verweist (https://fooco.at/bar/index.htm). Endet der von hinten gelesen zweite Teil der Domain (second level) auf eine bestimmte Zeichenfolge, stellt Googles Camera-App vor die Zeichenfolge einen Punkt, obwohl der im QR-Code kodierte Hyperlink gar keinen Punkt enthält. So wird https://www.fooco.at/hello plötzlich zu https://www.foo.co.at/hello. Optisch dargestellt wird überhaupt nur foo.co.at/hello.

Betroffen sind neben .at zumindest auch die Länderzonen (ccTLD) .au, .br, .hu, .il, .kr, .nz, .ru, .tr, .uk und .za. Zu den betroffenen Zeichenfolgen am Ende des Second Level gehören beispielsweise co, com, ac, net, org, gov, mil, muni und edu, nicht aber or, gv oder k12. Ein hypothetischer Link https://foonet.uk/verysecure, kodiert in einem QR-Code, würde den User zum Öffnen der Seite https://foo.net.uk/verysecure verleiten. Gehört die Domain einem Dritten, könnte dort Malware lauern, Falschinformation verbreitet werden oder ein Phisher auf Eingabe echter Zugangsdaten für foonet.uk-Konten hoffen.

Gefeit wirken http(s)-Links, die internationale Domainnamen (IDN) mit entsprechenden Unicode-Sonderzeichen enthalten – wir haben aber nicht alle Varianten durchprobiert. Ziffern im Domainnamen bieten hingegen keinen Schutz.

Wer findet den Unterschied? Oben der korrekt ausgelesene QR-Code, unten das Ergebnis mit Google Camera unter Android 12.

(Bild: Daniel AJ Sokolov)

Auf die Spur gebracht hat uns der in einer Google-Datenbank einsehbare Fehlerbericht eines österreichischen heise-Lesers: Dessen Arbeitgeber sucht Mitarbeiter und hat Anzeigen mit QR-Code veröffentlicht. Der Code führt direkt zu einer Webseite mit Jobangeboten – es sei dann, man liest den QR-Code mit einem Pixel-Handy mit Android 12 aus. Denn der Firmenname und somit die unter .at registrierte Domain endet auf eine der unvorteilhaften Zeichenfolgen. Die App streut einen falschen Punkt ein, der Link führt ins Leere, und das Geld für die Anzeigenkampagne verpufft.

Der Bug wirkt sich abhängig vom Schema der Top-Level-Domain unterschiedlich aus. Bei .at kann jedermann eine Domain unter co.at registrieren. Ein Angreifer könnte also foo.co.at registrieren, wenn er sieht, dass QR-Codes mit Links zu https://fooco.at/superjobs im Umlauf sind. Bei .ru sind Domainregistrierungen unter com.ru und org.ru möglich. Die traditionellen Beschränkungen bei .uk sind 2019 gefallen, sodass neben foonet.uk auch foo.net.uk bestehen und einen anderen Inhaber haben kann. Ziemlich geschützt ist .tr, wo keine Second-Level-Domains vergeben werden. Bei .au hingegen werden ab 24. März Second-Level-Domains feilgeboten.

Googles Camera-App wertet QR-Codes nur dann aus, wenn die Option "Google Lens Suggestions" aktiviert ist – dann aber oft fehlerhaft. Obskur ist, dass der Fehler in der Google-Lens-App selbst nicht auftritt. Ein Workaround ist also, die "Google Lens Suggestions" in der Camera-App zu deaktivieren und stattdessen die App Google Lens oder gleich eine unabhängige QR-Scan-App zu verwenden – sofern man auf das Auslesen der QR-Codes in freier Wildbahn nicht verzichten kann. Denn selbst wenn ein QR-Code korrekt ausgelesen wird, ist oft nicht gesichert, dass der Code nicht von einem Dritten angebracht wurde und in die Irre leiten soll.

Google vertreibt seine Pixel-Handys zurzeit nur in ausgewählten Märkten. Die Chance, dass ein QR-Code einen Pixel-User in die Irre führt, ist also in Großbritannien größer als in Österreich oder Russland. Natürlich gibt es in diesen Ländern Grauimport der Geräte, unter anderem aus Deutschland.