Ich verwende Tools, um bei der Suche nach Schwachstellen zu helfen, aber man kann nicht einfach irgendeinen Test abfeuern und annehmen, dass alles in Ordnung ist. Wenn ich ein Projekt prüfe, sehe ich mir den Code an und versuche, ein Gefühl für den Stil und die Fähigkeiten des Programmierers zu bekommen. Wenn der Code unordentlich aussieht, dann ist er wahrscheinlich ein Anfänger und wird wahrscheinlich Anfängerfehler machen.
Es ist wichtig, sicherheitsrelevante Funktionen in einem Projekt zu identifizieren und sie manuell zu prüfen. Tamperdata ist sehr hilfreich für die manuelle Prüfung und die Entwicklung von Exploits, da Sie benutzerdefinierte http-Anfragen erstellen können. Ein gutes Beispiel für die manuelle Prüfung von PHP ist: Verwenden sie mysql_real_escape_string($var)
oder verwenden sie htmlspecialchars($var,ENT_QUOTES)
um Sql-Injection zu stoppen? (ENT_QUOTES verhindert keine Backslashes, die genauso gefährlich sind wie Anführungszeichen für mysql, mssql ist eine andere Geschichte). Sicherheitsfunktionen sind auch Orte, an denen "Logikfehler" auftauchen können, und kein Tool wird in der Lage sein, dies zu erkennen; dies erfordert eine manuelle Prüfung.
Wenn Sie Webanwendungen testen, dann Acunetix ist das beste Testwerkzeug, das Sie verwenden können. Wapiti ist eine sehr gute Open-Source-Alternative. Allerdings kann jedes Tool unsachgemäß verwendet werden. Bevor Sie eine Webanwendung testen, stellen Sie sicher, dass die Fehlerberichterstattung eingeschaltet ist, und stellen Sie auch sicher, dass Sie keine Sql-Fehler unterdrücken, z. B. mit einem try/catch.
Wenn Sie eine automatisierte statische Codeanalyse für Schwachstellen wie Buffer Overflows durchführen, dann Coverity ist das beste Werkzeug, das Sie verwenden können (Fortify ist fast identisch mit Coverity). Coverity kostet Zehntausende von Dollar, aber große Namen wie das Department of Homeland Security verwenden es. RATTEN ist eine quelloffene Alternative, obwohl Coverity ein weitaus komplexeres Werkzeug ist. Beide Tools produzieren eine Menge falsch positiver und falsch negativer Ergebnisse. RATS sucht nach unangenehmen Funktionsaufrufen, prüft aber nicht, ob sie noch sicher sind. So meldet RATS jeden Aufruf von strcpy(), strcat(), sprintf(), die aber sicher sein können, wenn Sie z. B. nur statischen Text kopieren. Das bedeutet, dass man sich durch eine Menge Mist wühlen muss, aber wenn man eine Peer Review macht, hilft RATS sehr, indem es die manuelle Suche einschränkt. Wenn Sie versuchen, eine einzelne ausnutzbare Schwachstelle in einer großen Codebasis wie Linux zu finden, dann wird Rats nicht viel helfen.
Ich habe Coverity benutzt und das Verkaufsteam behauptet, dass es "****ALL**** Schwachstellen in Ihrem Code aufspürt". Aber ich kann Ihnen aus erster Hand sagen, dass ich Vanilla-Stack-basierte Pufferüberläufe gefunden habe mit Pfirsich die Coverity nicht entdeckt hat. (RATS hat diese Probleme jedoch erkannt, zusammen mit 1.000+ anderen Funktionsaufrufen, die sicher waren...) Wenn Sie eine sichere Anwendung wollen oder einen ausnutzbaren Pufferüberlauf finden wollen, dann ist Peach das Plattform-Tool, das Sie verwenden können, um die Werkzeuge zu bauen, die Sie brauchen.
Wenn Sie nach exotischeren Speicherkorruptionsproblemen wie z.B. Dangling Pointers suchen, dann Valgrind wird helfen.
0 Stimmen
Beantwortet nicht Ihre Frage ... aber ein gutes Papier suif.stanford.edu/papers/usenixsec05.pdf