
CQ, ein Code-Sicherheitsscanner
Code Query, ein universelles Tool zum Scannen von Code auf Sicherheitslücken.
CQ scannt Code auf Sicherheitslücken und andere Dinge, die für sicherheitsorientierte Code-Reviewer von Interesse sind. Es gibt Textdateien mit Referenzen auf gefundene Probleme in ein Ausgabeverzeichnis aus. Diese Ausgabedateien können dann überprüft, mit Unix-Kommandozeilen-Tools wie grep gefiltert oder als Mittel zum 'Springen' an die angegebene Datei:Zeile-Referenz im Codebase verwendet werden.
Eine beliebte Verwendungsweise besteht darin, die Ausgabedateien als 'TODO'-Liste zu betrachten, Referenzen beim Überprüfen zu löschen, wenn sie als falsch positiv eingestuft werden, oder die Referenzen in eine Berichtsdatei zu kopieren, um sie entweder im Detail zu prüfen oder als Grundlage für einen Fehlerbericht zu verwenden.
Das Tool ist äußerst einfach, weitgehend manuell, und setzt fundierte Kenntnisse über Sicherheitslücken in Anwendungen und Code-Review voraus. Es hat jedoch die Vorteile, relativ schnell und zuverlässig zu sein und auch dann zu funktionieren, wenn nur ein Teil des Codes verfügbar ist.
CQ steht für Code Query, oder Sécurité, oder CQD, oder "Seek You".
CQ ist für den Einsatz im Rahmen von Sicherheits-Code-Reviews durch menschliche Experten gedacht. Es ist nicht für den Einsatz in automatisierten Szenarien vorgesehen, auch wenn es in diesem Kontext angewendet werden könnte.
CQ gibt Klartextdateien aus, in der Regel mit einem Befund pro Zeile, unter Verwendung der Konvention voller Pfad:Zeilennummer, um Stellen im Codebase zu repräsentieren. Dieses Format ermöglicht eine einfache Bearbeitung mit den Standard-Unix-Kommandozeilen-Tools wie grep, wc, sed und ähnlichen sowie den zeilenbasierten Funktionen vieler Editoren wie vi, Sublime Text, Atom und Visual Studio Code.
Der Fokus darauf, alle interessanten Punkte zu melden, führt zu einem Tool, das in fast jedem Codebase viele interessante Stellen findet, aber auch eine große Anzahl 'falsch positiver Ergebnisse' meldet. Diese falsch positiven Ergebnisse können dank der zeilenbasierten Berichtsmethode entweder durch Sichtprüfung oder automatisiert aus den Ergebnissen entfernt werden.
Es wird kaum oder keine Erklärung der Probleme geliefert; es wird vorausgesetzt, dass Ihnen Kontext, Auswirkungen und Merkmale der gemeldeten Probleme bekannt sind.