
CQ, un scanner de sécurité de code
Code Query, un outil universel d'analyse de sécurité du code.
CQ analyse le code à la recherche de vulnérabilités de sécurité et d'autres éléments intéressants pour les relecteurs de code axés sur la sécurité. Il génère des fichiers texte contenant des références aux problèmes détectés, dans un répertoire de sortie. Ces fichiers de sortie peuvent ensuite être examinés, filtrés à l'aide d'outils de ligne de commande unix tels que grep, ou utilisés comme moyen de « sauter » dans la base de code à la référence file:line spécifiée.
Un mode d'utilisation courant consiste à considérer les fichiers de sortie comme une liste « todo », en supprimant les références au fur et à mesure qu'elles sont examinées et soit considérées comme des faux positifs, soit en copiant les références dans un fichier de rapport pour les examiner en détail ou servir de base à un rapport de bug.
L'outil est extrêmement basique, largement manuel, et suppose une connaissance approfondie des vulnérabilités de sécurité des applications et de la revue de code. Il a cependant l'avantage d'être relativement rapide et fiable, et de fonctionner même lorsque seul un code partiel est disponible.
CQ signifie Code Query, ou Sécurité, ou CQD, ou « Seek You ».
CQ est destiné à être utilisé dans un contexte de revue de code axée sur la sécurité par des experts humains. Il n'est pas conçu pour être utilisé dans des scénarios automatisés, bien qu'il puisse être appliqué dans ce contexte.
CQ génère des fichiers texte brut, avec généralement une constatation par ligne, en utilisant la convention chemin complet:numéro de ligne pour représenter les emplacements dans la base de code. Ce format est utilisé pour faciliter la manipulation à l'aide des utilitaires standard de ligne de commande unix, tels que grep, wc, sed et similaires, ainsi que des fonctionnalités basées sur les lignes de nombreux éditeurs tels que vi, Sublime Text, Atom et Visual Studio Code.
L'accent mis sur le signalement de tous les éléments intéressants donne un outil qui trouvera de nombreux points d'intérêt dans presque toute base de code, mais qui signalera également un grand nombre de « faux positifs ». Ces faux positifs peuvent être supprimés des résultats soit par inspection, soit de manière automatisée, grâce à la méthode de signalement basée sur les lignes.
Peu ou pas d'explication des problèmes n'est fournie ; il est supposé que vous êtes conscient du contexte, de l'impact et des caractéristiques des problèmes signalés.