Diese Studie konzentriert sich auf die Schwachstelle für Prototypverschmutzung, eine "neue" Art der Sicherheitsanfälligkeit, die erstmals 2018 entdeckt wurde und die nicht ausführlich untersucht wurde. Die Verwundbarkeit nutzt das prototyporientierte Design von JavaScript. Durch die Änderung des Prototyps native Objekte wie Objekte, aus dem die meisten anderen Objekte Eigenschaften und Methoden erben, ist dies abhängig von der Logik der spezifischen Anwendung möglich, um zu fast jeder anderen Webanfälligkeit zu eskalieren.
Wir haben JavaScript -Code gesammelt, das Beispiele für Verwundbarkeit von Real Word -Prototypenverschmutzung enthält, die nach Anfälligkeitsdatenbanken wie GitHub Advisory und anderen Quellen suchen. Um sicherzustellen, dass die gesammelten Beispiele tatsächlich anfällig sind, haben wir für jede verletzliche Funktion einen einfachen Proof of Concept Exploit geschrieben. Wir haben die statischen Analyse -Tools durchgeführt, die gegen die schutzbedürftigen Anwendungen berücksichtigt wurden. Unter dem Datensatz der Verwundbarkeit haben wir einige Fallstudien ausgewählt, die wir ausführlich analysiert haben, um verschiedene Codemuster zu erklären, die zur Verwundbarkeit führen. Diese Fallstudien wurden ausgewählt, um interessante Ergebnisse zu zeigen, die es uns ermöglichten, die Stärken und Einschränkungen jedes Tools hervorzuheben.
ODGEN/OBJLUPANSYS Neuer Ansatz, der auf dem Objektabhängigkeitsgraphen basiert und die auf der Prototyp -Kette basierende Objekt -Suchaussuchungen basierend modellieren, können fast alle Fälle von Anfälligkeit erkennen. Die aktuelle experimentelle Implementierung wird jedoch durch Fehler beeinflusst, wenn sie auf einige Codemuster stößt. Es leidet auch unter schwerwiegenden Leistungsproblemen bei der Analyse großer Pakete oder bestimmter Muster. Außerdem ist es sehr anfällig, falsch positive Ergebnisse zu kennzeichnen, wenn sie gegen eine gepatschte Version von vorangegangenen Funktionen ausgeführt wird.
Die SEMGREP -Regeln decken nicht alle Fälle wie direkte Aufträge ab, da die Ilfluation in diesem Fall ohne sehr hohe falsch positive Rate einbezogen wird. Die SEMGREP -Engine bietet nur begrenzte intraprocedurale Datenflussanalyse und kann wie erwartet keine Anfälligkeit erkennen, die über verschiedene Funktionen hinweg verteilt sind (z. B. indirekte rekursive Aufrufe). Die Regeln kennzeichnen viele falsche positive Ergebnisse, wenn sie gegen eine gepatschte Version von vordessen verletzlichen Funktionen ausgeführt werden, da die meisten Minderungstechniken nicht einmal berücksichtigt werden.
CodeQL kann fast alle gesammelten Anfälligkeitsbeispiele identifizieren. Die angesehenen Fragen scheinen gut geschrieben zu sein. Für diejenigen, die falsche Postives betrifft, werden die meisten Minderungstechniken berücksichtigt, sodass CODEQL -Abfragen erheblich besser abschneiden als andere Tools.
Weitere Details in der These PDF