SAST - PHP CodeSniffer orienté sécurité dans Visual Studio (sous Debian)

18 Juillet 2022

Un article concernant l'installation de PHP_CodeSniffer sous Windows est également disponible ici.

PHP Code Sniffer est un outil qui permet d'analyser le code source PHP d'une application pour détecter des mauvaises pratiques de développement en se basant sur un ensemble de règles. Ces règles concernent principalement la qualité du code, mais il est également possible d'en ajouter pour détecter des failles de sécurité.

Installation

  1. La première étape est d'installer l'outil grâce au gestionnaire de paquets apt :

$ sudo apt-get install php-codesniffer
Lecture des listes de paquets... Fait
Dépaquetage de php-codesniffer (3.6.2-1)

L'exécutable est présent dans le répertoire /usr/bin/ :

$ which phpcs
/usr/bin/phpcs

et les règles sont dans le dossier /usr/share/php/PHP/CodeSniffer/src/ :

$ ls -l /usr/share/php/PHP/CodeSniffer/src
total 228
-rw-r--r--  1 root root 66054 Jun 18 16:57 Config.php
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Exceptions
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Files
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Filters
-rw-r--r--  1 root root 23868 Jun 18 16:57 Fixer.php
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Generators
-rw-r--r--  1 root root 13445 Jun 18 16:57 Reporter.php
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Reports
-rw-r--r--  1 root root 50807 Jun 18 16:57 Ruleset.php
-rw-r--r--  1 root root 31532 Jun 18 16:57 Runner.php
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Sniffs
drwxr-xr-x 10 root root  4096 Jul 19 00:42 Standards
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Tokenizers
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Util

2. Récupérer le jeu de règles (ruleset) orienté sécurité présent dans le dossier "Security" sur le dépôt Github suivant : https://github.com/FloeDesignTechnologies/phpcs-security-audit et le déposer dans le dossier /src/ :

$ sudo cp -R /tmp/Security /usr/share/php/PHP/CodeSniffer/src/
$ ls -l
total 232
-rw-r--r--  1 root root 66054 Jun 18 16:57 Config.php
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Exceptions
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Files
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Filters
-rw-r--r--  1 root root 23868 Jun 18 16:57 Fixer.php
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Generators
-rw-r--r--  1 root root 13445 Jun 18 16:57 Reporter.php
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Reports
-rw-r--r--  1 root root 50807 Jun 18 16:57 Ruleset.php
-rw-r--r--  1 root root 31532 Jun 18 16:57 Runner.php
drwxr-xr-x  3 root root  4096 Jul 19 00:48 Security
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Sniffs
drwxr-xr-x 10 root root  4096 Jul 19 00:42 Standards
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Tokenizers
drwxr-xr-x  2 root root  4096 Jul 19 00:42 Util

3. Dans Visual Studio Code, installer l'extension phpcs :

4. Configurer l'extension de la façon suivante (éditer le fichier settings.json pour plus de facilité) :

L'extension est maintenant bien configurée et fonctionnelle. Par exemple, ici la détection de l'utilisation de shell_exec() dans l'application bWAPP menant à une injection de commande :

Références

Dernière mise à jour