Frage

Durchlesen diese Frage Bei Multithread-Javascript habe ich mich gefragt, ob es Auswirkungen auf die Sicherheit haben würde, wenn Javascript das Erzeugen mehrerer Threads zulassen würde.Besteht zum Beispiel das Risiko, dass ein bösartiges Skript wiederholt einen Thread nach dem anderen erzeugt, um das Betriebssystem oder den Interpreter zu überfordern und den Eintritt in „undefiniertes Verhaltensland“ auszulösen, oder ist das so gut wie kein Problem?Gibt es andere Möglichkeiten, wie ein Angriff eine hypothetische Javascript-Implementierung ausnutzen könnte, die Threads unterstützt, gegen die eine Nicht-Threading-Implementierung immun wäre?

Aktualisieren: Beachten Sie, dass das Sperren eines Browsers nicht dasselbe ist wie das Erstellen eines Exploits für undefiniertes Verhalten.

War es hilfreich?

Lösung

Nein, mehrere Threads würden in einer perfekten Implementierung keine zusätzlichen Sicherheitsprobleme verursachen.Threaded-Javascript würde den Javascript-Interpreter komplexer machen, was die Wahrscheinlichkeit erhöht, dass er einen ausnutzbaren Fehler aufweist.Aber Threads allein werden keine Sicherheitsprobleme verursachen.

Threads sind in Javascript nicht vorhanden, weil „Threads scheiße“ sind – lesen Sie mehr vom Sprachdesigner (http://weblogs.mozillazine.org/roadmap/archives/2007/02/threads_suck.html)

Andere Tipps

Nun, Sie können bereits einen Browser sperren und ernsthaft Verlangsamen Sie ein System mit schlecht benommenem JS.Aufgeklärte Browser haben Überprüfungen für solche Dinge implementiert und werden sie stoppen, bevor sie außer Kontrolle geraten.

Ich gehe eher davon aus, dass Threads auf ähnliche Weise behandelt werden.


Vielleicht könnten Sie dann erklären, was Sie unter „undefiniertem Verhalten“ verstehen?Ein Interpreter, der es nicht vertrauenswürdigen Skripten ermöglichte direkt Steuern Sie die Anzahl der ausgeführten Betriebssystem-nativen Threads unglaublich naiv – ich weiß nicht, wie Gears die Dinge betreibt, aber da ist die API darauf ausgerichtet Workerist drin WorkerPools, ich wäre sehr überrascht, wenn sie die Gesamtzahl der verwendeten nativen Threads nicht auf eine sehr niedrige Zahl beschränken würden.

Nun, ich denke, dass das einzige große Beispiel für Multithread-Javascript Googles Chrome ist (WÜRDEN SIE ES BEREITS VERÖFFENTLICHEN, JEEZ), und wenn ich es verstehe, führt Javascript nur einen Prozess pro Tab durch. Wenn es also nicht anfängt, Tabs (Popups) zu erzeugen, würde ich davon ausgehen Das wäre kein Problem, aber ich denke, dass Google das ohnehin geheim hält und das gesamte Javascript in einer Sandbox ausführt.

Auch hier müssen wir zwischen 1) Multithread-Unterstützung in der Sprache (was meiner Meinung nach nicht ernsthaft diskutiert wird) und 2) der Verwendung mehrerer Threads in der JavaScript-Engine/dem JavaScript-Interpreter im Browser unterscheiden.

Was Nr. 2 betrifft, kann ich mir nicht vorstellen, wie dies tatsächlich zu möglichen Sicherheitsbedenken für die Engine/den Interpreter führen kann, es sei denn, die Implementierung weist Mängel auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top