Es ist irgendwie traurig und lustig, dass diese große Zoom-Schwachstelle letztendlich mit Webtechnologie und nicht wirklich mit der App selbst zusammenhing.
Es gibt diese Idee von benutzerdefinierten Protokollen oder „URL-Schemata“. Also, wie gittower:// oder dropbox:// oder was auch immer. Eine native App kann sie registrieren, dann werden URLs, die sie aufrufen, an die native App weitergeleitet. iOS hat „Universal Links“, die anscheinend für das Web kommen. (Atishay Jain hat eine ausgezeichnete Abhandlung darüber.) Aber Links wie diese lassen nicht viel Spielraum – sie werden in der App geöffnet. Wenn Ihre App sowohl Web- als auch native Komponenten hat, möchten Sie dem Benutzer vielleicht eine Wahl anbieten. Also verwenden Sie stattdessen eine reguläre URL.

Damit diese Webseite eine native App öffnen kann, ist die Taktik, die viele anwenden, anscheinend die Kommunikation mit einem Server, der auf localhost auf Ihrem eigenen Computer läuft und ein URL-Schema zum Öffnen der nativen App verwendet. Clever, aber ich habe von Leuten wie
- Ich hatte keine Ahnung, dass diese Software einen localhost-Server auf meiner Maschine ausführt
- Es fühlt sich seltsam an, dass Websites aus dem weiten Internet mit meinem localhost-Server kommunizieren können
So ist das eben. Aber es gibt einige Schutzmaßnahmen. Nämlich: CORS (Cross-Origin Resource Sharing). Uff. Ich habe das Gefühl, jede Woche meines Lebens mit irgendeinem CORS-Problem zu tun zu haben. Aber es ist wichtig. Es verhindert XHR-Anfragen von Websites, die nicht explizit erlaubt sind. Stellen Sie sich vor, Sie besuchen meine Website und ich lasse Ihren Browser Anfragen an Facebook senden, in der Hoffnung, dass Sie angemeldet sind, damit ich in Ihrem Namen Dinge tun kann. Schlecht. CORS verhindert das nicht, die Same-Origin-Policy von Browsern verhindert das. CORS ist der Mechanismus, der das steuert.
Wenn meine Website versucht, mit Ihrer Website zu kommunizieren, und die Antwort Ihrer Website keinen Access-Control-Allow-Origin-Header mit meiner Domain oder * hat, wird dies fehlschlagen. Aber nicht alles unterliegt CORS-Beschränkungen. Bilder zum Beispiel nicht. Wir können Bilder von jeder Domain verlinken und sie geben Daten zurück.
Chris Foster meint, dass CORS und ein mangelndes Verständnis von CORS im Kern des Zoom-Bugs lagen.
Zoom musste diese Funktion vielleicht schnell veröffentlichen und verstand CORS nicht. Sie konnten die AJAX-Anfragen nicht stellen, ohne dass der Browser den Versuch ablehnte. Stattdessen bauten sie diesen Bild-Hack, um CORS zu umgehen. Damit öffneten sie Zoom für eine große Schwachstelle, denn nicht nur die Zoom-Website kann Operationen im nativen Client auslösen und auf die Antwort zugreifen, sondern jede andere Website im Internet kann das ebenfalls.
Infolge all dessen schrieb Nicolas Bailly „Was Sie über CORS wissen sollten“
Dies ist oft eine Quelle der Verwirrung für Neulinge, da nicht sofort ersichtlich ist, was CORS erreichen soll. Erstens ist CORS keine Sicherheitsmaßnahme an sich, sondern eigentlich das Gegenteil: CORS ist eine Möglichkeit, die „Same Origin Policy“ zu umgehen, die die Sicherheitsmaßnahme ist, die Sie daran hindert, [AJAX]-Anfragen an eine andere Domain zu stellen.