Frage:
Exploits oder andere Sicherheitsrisiken beim SVG-Upload?
polemon
2012-02-04 23:33:53 UTC
view on stackexchange narkive permalink

Ich habe eine Site, auf der Leute Grafiken hochladen können. Sie können sich das wie einen Bildhoster oder ein Forum für Bilder vorstellen.

Jetzt erlaube ich das Hochladen von Rastergrafiken auf eine bestimmte Größe, aber Noch keine Vektorgrafiken. Ich möchte auch das Hochladen von SVG zulassen, aber es gibt zwei Bedenken, die meinen Kopf umkreisen:

  1. Könnte eine SVG so erstellt werden, dass der Server beim Lesen von Metadaten nicht mehr reagiert. und könnte als DoS-Angriff auf den Server verwendet werden?
  2. Könnte eine SVG so erstellt werden, dass der Client beim Rendern der SVG auf dem Client nicht mehr reagiert und möglicherweise den Browser jedes Benutzers auf meiner Website zum Absturz bringt ?
  3. ol>

    Wäre es auch empfehlenswert, ein kleines (200 x 200 Pixel) PNG für eine Miniaturansicht zu generieren, oder ist es besser, das SVG selbst nur mit einem Zoomfaktor oder etwas anderem zu manipulieren?

    Wenn diese SVG-Exploits möglich sind, wie kann ich mich vor ihnen schützen?

Zwei antworten:
bobince
2012-02-05 02:20:48 UTC
view on stackexchange narkive permalink

Könnte eine SVG so erstellt werden, dass der Server beim Lesen von Metadaten nicht mehr reagiert. und könnte als DoS-Angriff auf den Server verwendet werden?

Was meinen Sie mit Metadaten? Wenn Sie nach Breite und Höhe suchen, müssten Sie die SVG-Dateien zumindest teilweise analysieren, um sie zu erhalten. Es gibt keine Abkürzung zum Lesen einiger Bytes aus dem Header wie bei vielen Bitmap-Formaten. Dies birgt die üblichen Risiken der XML-Analyse, z. B.:

  • Angriffe auf externe Entitäten / DTD-Teilmengen gegen Remotedateien, lokale netzwerksensible Ressourcen, lokale maschinensensitive Dateien und Gerätedateien
  • Erweiterungsbomben für verschachtelte Entitäten
  • Pathologisch verschachtelte Tag-Strukturen können Rekursionsressourcengrenzen erreichen.

Als Standardvorkehrung würden Sie die gesamte DTD-Verarbeitung deaktivieren. XInclude-, XSL-, XSI- und Entitätsauflösung.

Könnte eine SVG so erstellt werden, dass der Client beim Rendern der SVG auf dem Client nicht mehr reagiert und möglicherweise jeden Benutzer auf meiner Website zum Browser macht Absturz?

Möglicherweise, aber es ist genauso gut möglich, dass dies mit einem Bitmap-Format passieren kann. Siehe z. B. die Sicherheitslücken in Bezug auf beschädigte PNG-Dateien vor einiger Zeit.

SVG-Dateien sind eher besorgniserregend, da sie JavaScript enthalten können, das im Sicherheitskontext der Hosting-Site ausgeführt wird. Site-Scripting, über das man sich Sorgen machen muss.

Tatsächlich sind alle Arten von hochgeladenen Dateien dafür anfällig, wenn auch nicht so direkt und einfach auszunutzen. In einigen Fällen werden sie von Browsern (insbesondere IE) inhaltsschnüffeln. Wenn sie Dinge sehen, die wie Tags aussehen, können sie sie möglicherweise als HTML, einschließlich JavaScript, neu interpretieren. Es gibt auch einige Nebenprobleme bei der Behandlung hochgeladener Dateien als Java-Applets und Flash-Richtliniendateien.

Die Standardminderung für all diese Probleme besteht darin, Ihre nicht vertrauenswürdigen Ressourcen, ob Bitmap, SVG oder irgendetwas anderes, von einer anderen Domain als Ihrer Hauptwebsite bereitzustellen: einer Domain, die keine vertraulichen Sitzungsinformationen (Cookie / Auth) enthält und keine Möglichkeit, Skripte in die Domäne Ihrer Hauptwebsite zu schreiben.

Wäre es auch empfehlenswert, ein kleines PNG (200 x 200 Pixel) für ein Miniaturbild zu generieren, oder ist es besser, nur das SVG selbst zu manipulieren mit einem Zoomfaktor oder so?

Das wäre eine nette Geste, aber Sie müssten einige Abhängigkeiten ziehen, um in Bitmap zu rendern, zum Beispiel Batik, wenn Sie Java verwenden. Das Einbringen einer neuen komplexen Bibliothek erhöht natürlich die Angriffsfläche. Es ist möglicherweise eine gute Idee, den Thumbnailer als separate Daemon-Task mit niedriger Berechtigung und niedriger Priorität auszuführen.

Laut dem [W3C-Wiki] (https://www.w3.org/wiki/SVG_Security) sollte die als Image eingebettete SVG-Datei keine Skripte ausführen dürfen.Haben Sie Erfahrung, wenn die Browser darauf folgen?
Ja, SVG-in-img ist in allen mir bekannten unterstützenden Browsern nicht beschreibbar.(Natürlich kann ein Angreifer den Browser trotzdem veranlassen, direkt zum SVG-Bild zu wechseln.)
Ich habe versucht, mich mit Google Drive und direkten Links zu SVG zu beschäftigen.Ich vermute, dass dies (und HTML) einer der vielen Gründe ist, warum googleusercontent.com existiert (im Gegensatz zu drive.google.com): Ich konnte nicht auf mein Google-Cookie oder wirklich * irgendetwas * zugreifen, da es offensichtlich aktiviert isteine andere Domain.Eine separate Domain für Benutzerinhalte (oder einfach die Verwendung eines CDN) kann dieses Risiko wahrscheinlich beseitigen.
rook
2012-02-04 23:52:47 UTC
view on stackexchange narkive permalink

Jede Aktion, die Ihre Webanwendung ausführt, ist möglicherweise gefährlich. Das Hochladen von Dateien ist eine der gefährlicheren Funktionen, da es zur Ausführung von Remotecode führen kann.

Das Problem beim Hochladen einer Datei auf den Server besteht darin, dass es sich möglicherweise nicht um die gewünschte Datei handelt. Ich weiß nicht, welche Plattform oder Methodik Sie verwenden, aber ich habe Dateiaufladungssysteme oft getäuscht, um eine PHP- oder ASP-Datei hochzuladen und auszuführen. Es hört sich nicht so an, als würden Sie die SVG-Datei auf der Serverseite rendern (das wäre sowieso etwas seltsam), daher spielt das unformatierte XML in der SVG-Datei für Ihren Server keine Rolle.

In Begriffen von # 2, ja Schwachstellen in Bezug auf SVG-Speicherbeschädigung sind häufig und ich bin zuversichtlich, dass weitere vorhanden sind. Aber auch dies gilt für nahezu jede Datei, die Sie hochladen. SVG-Images sind etwas neuer und der Großteil der Schwachstellen in SVG-Images wurde 2011 gefunden.

Die SVG-Maskierung wird verwendet, um Iframes bei einem Clickjacking-Angriff zu verschleiern. Ich glaube jedoch nicht, dass dieser Angriffsvektor für Ihr SVG-Upload-System gilt.

Ich möchte die hochgeladene SVG auf bestimmte Metadaten untersuchen. Ich mache mir Sorgen, dies könnte meine Website ausnutzen.
@polemon ja natürlich kann es. Jede Funktion, die sogar eine Nachricht an den Benutzer druckt, ist gefährlich. Das Hochladen von Dateien ist eine der gefährlicheren Funktionen. Dies kann jedoch auf sichere Weise erfolgen. Sie haben nichts über die Sprache oder Plattform gesagt, daher kann Ihnen niemand helfen. Vielleicht sollten Sie stackoverflow.com mit einem Sicherheitsetikett fragen.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...