Moment: Anfälliger regulärer Ausdruck

Erstellt am 8. Sept. 2017  ·  24Kommentare  ·  Quelle: moment/moment

Der folgende reguläre Ausdruck zum Analysieren von als Zeichenfolgen angegebenen Daten ist für ReDoS anfällig:

/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i

Die Verlangsamung ist mäßig gering: Für 50.000 Zeichen ca. 2 Sekunden Übereinstimmungszeit. Ich würde jedoch immer noch eine der folgenden Möglichkeiten vorschlagen:

  • Entfernen Sie die Regex,
  • den regulären Ausdruck verankern,
  • Begrenzen Sie die Anzahl der Zeichen, die durch die Wiederholung abgeglichen werden können.
  • Begrenzen Sie die Eingabegröße.

Bei Bedarf kann ich ein aktuelles Beispiel für die Verlangsamung bereitstellen.

Bug Up-For-Grabs

Hilfreichster Kommentar

Wir würden uns freuen, wenn das Update hierfür beschleunigt werden kann, da es in nsp angemeldet wurde und unsere Builds fehlschlagen.

Alle 24 Kommentare

Zur Verdeutlichung ist dies in dem matchWord regex, in /src/lib/parse/regex.js hier .

Hier ist ein Eisenbahndiagramm des regulären Ausdrucks . Daraus können wir ersehen, dass die Gruppierung mit Wiederholung mit dem Parsen arabischer Zeichen zusammenhängt. Es wäre hilfreich, wenn jemand, der sowohl reguläre Ausdrücke als auch die arabische Sprache versteht, eine Pause einlegen könnte.

Eine Übersicht über ReDoS ist ebenfalls hilfreich.

Ich nehme an, das hat noch niemand begonnen

@hamiltondanielb alles deine :)

@cristianstaicu
Bei Bedarf kann ich ein aktuelles Beispiel für die Verlangsamung bereitstellen.

Ich würde gerne ein Beispiel sehen, wenn es möglich ist :)

@ Drag0s hat es auf Ihrer privaten E-Mail gesendet.

Zu Ihrer Information, dies wurde zu NSP hinzugefügt (siehe hier ), so dass dies wahrscheinlich bald anfangen wird, die Builds der Leute zu brechen.

@hamiltondanielb - Hast du irgendwo

Hatte gerade unsere Build-Pause 👯

Es ist traurig, dass das Problem öffentlich werden musste, bevor es behoben wurde. Die Ausgabe wurde am 8. September eröffnet. Das NSP-Advisory wurde heute veröffentlicht. @cristianstaicu Vielleicht hättest du die Betreuer an die Offenlegungsfrist erinnern sollen, um dies in Schwung zu bringen.

@mattgrande es gibt eine Meta-Ness dazu: Es stellt sich heraus, dass die Version von nsp, an die wir angeheftet wurden (2.8.1), vom Moment abhängt (via joi), sodass eine Sicherheitslücke in Abhängigkeit von ihrer eigenen Abhängigkeit gemeldet wurde:

1__bash

Ein Upgrade auf nsp 3.1.0 hat dieses Problem behoben, da die Abhängigkeit nicht mehr vorhanden ist. Achten Sie also darauf, wenn Sie nicht direkt vom Moment abhängen.

Gibt es dafür schon eine Lösung?

Bitte geben Sie einen verfügbaren Fix an.

Es wurde noch kein Fix veröffentlicht.

Wenn Sie an Updates von den Betreuern interessiert sind, abonnieren Sie Benachrichtigungen für Updates zu diesem Problem, indem Sie in der rechten Spalte auf "Abonnieren" klicken.

Fügen Sie eine .nsprc -Datei hinzu, um eine nsp -Ausnahme hinzuzufügen:

{
  "exceptions": [
     "https://nodesecurity.io/advisories/532"
  ]
}

Danke @ westy92 ! Habe meinen Build gespeichert.

Hi @ westy92 und @ jacob-go. Ich habe den folgenden Code.
var taskMethods = require ('gulpfile-ninecms');
gulp.task ('nsp', taskMethods.nsp);
Die Ausnahme der .nsprc-Datei wird nicht erfasst. Es gibt mir für den Moment immer wieder den Schwachstellenfehler.
Ich habe die Datei im Stammverzeichnis des Projekts hinzugefügt. Fehlt mir etwas?

@Dexterslab Wir verwenden gulp-nsp , was gut funktioniert, wenn sich .nsprc im Projektverzeichnis befindet (gleiche Ebene wie package.json ). Vielleicht versuchen Sie es mit gulp-nsp direkt?

@cristianstaicu @mattgrande passiert das auch in Luxon?

Wir würden uns freuen, wenn das Update hierfür beschleunigt werden kann, da es in nsp angemeldet wurde und unsere Builds fehlschlagen.

Kann ich den Betreuern vorschlagen, diese Convo zu sperren?
Für alle, die auf eine Lösung warten, klicken Sie einfach auf die Schaltfläche "Abonnieren" und Sie werden benachrichtigt.

Wenn jemand das Problem beheben möchte, können Sie eine PR eröffnen.

Hierfür gibt es bereits eine PR https://github.com/moment/moment/pull/4326

Muss jemand nsp benachrichtigen, dass dies gepatcht wurde? https://nodesecurity.io/advisories/532

Dies wurde in Version 2.19.3 behoben. Bitte entsprechend aktualisieren.

Ich bin nicht sicher, wie ich NSP benachrichtigen soll - @cristianstaicu könnten Sie oder andere hier helfen?

Ich habe eine E-Mail an [email protected] gesendet :

Hallo,

Das derzeit ausstehende moment.js Verwundbarkeit (https://nodesecurity.io/advisories/532) wurde kürzlich gepatchte und das Update veröffentlicht in v.2.19.3.

Wie werden Statusaktualisierungen für Advisories gemeldet? Diese E-Mail-Adresse ist die beste Straße, die ich finden konnte.

Vielen Dank!

Ich habe gerade eine Antwort erhalten, dass die NSP-Datenbank mit 2.19.3 als fester Version aktualisiert werden sollte.

Ich habe auf meiner Seite überprüft, dass 2.19.3 keine Warnungen mehr enthält.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen