Ich las vor kurzem ein Papiertitel "All You Ever Wanted to Know about Dynamic Taint Analysis and Forward Symbolic Execution (but Might Have Been Afraid to Ask)" von Dr. EJ Schwartz. In dem Artikel sprach er hauptsächlich über ihre Anwendungen im Zusammenhang mit binären Sicherheitskontexten.Was sind die Lücken zwischen symbolischer Ausführung und Taint-Analyse?
Ich bin neugierig auf den genauen Unterschiede zwischen dynamischer taint Analyse und vorwärts symbolischer Ausführung.
Von dem, was ich sehe, verfolgen taint Analyseinformationen von Objekt x fließen (Quelle) y (sink) zum Objekt, immer dann, wenn Information in x gespeichert übertragen wird y zu widersprechen. Das Hauptanliegen ist also, welches Objekt transitiv von der Quelle betroffen sein kann. Während die symbolische Ausführung einige Eingaben als symbolische Werte behandelt, versucht , andere Variablen mit symbolischen auszudrücken. dabei antwortet es , unter welchen Bedingungen der symbolische Eingang die nachfolgenden Programme beeinflusst.
Ich kann sehen, dass auf der Binär-Ebene, Taint-Analyse wird oft mit der Sicherheitslücke durch Rückkehr Adresse überschrieben; während symbolische Ausführung mit mehr Arten von gefährdeten Themen wie Integer-Überlauf, Laufzeitfehler Assertion, Leck Ressource (z.B. Speicherverlust, Datei-Öffnen/Schließen), Pufferüberlauf umgehen kann.
aber es scheint, dass moderne taint Analyse nicht nur beinhaltet Datenflussanalyse wird verfolgen die meisten von ihnen die Steuerfluss Bedingungen; und in mehreren Schwachstellenerkennungsszenarien wird die behaftete Eingabe auch als symbolischer Wert dargestellt und wie die symbolische Ausführung weitergegeben. Auf der anderen Seite können symbolische Ausführungs-Engines aufgrund der Einschränkungen der zugrundeliegenden Constraint-Solver und der Laufzeitumgebung nicht vollständig symbolische Werte verwenden, die durch unterschiedliche Pfadbedingungen getrennt sind. Dadurch können sie nicht den hohen Zweig oder Pfad Abdeckung wie erwartet erreichen.
So im Allgemeinen Fällen können wir sagen, dass taint Analyse ist eine Art grober symbolischer Ausführung oder symbolischer Ausführung ist eine Art präziser taint Analyse?
Es könnte einen Versuch wert sein, diese Frage bei StackExchange Computer Science oder StackExchange Reverse Engineering zu stellen. – stackoverflowwww