SAST
Notions théoriques
Un outil SAST (Static Application Security Testing) est un logiciel qui analyse le code source d'une application à la recherche de vulnérabilités de sécurité potentielles, sans exécuter le programme, afin de les identifier avant que le code ne soit mis en production.
L'avantage d'un outil SAST, c'est qu'il est rapide, exhaustif et ne nécessite pas d'interaction avec le code en fonctionnement.
A la différence d'un outil DAST (Dynamic Application Security Testing) qui teste une application en cours d'exécution, un outil SAST (Static Application Security Testing) analyse le code source d'une application sans exécuter le programme.
Exemple simple
Prenons un exemple simple : vous venez d'écrire une fonction pour vous connecter à une base de données.
L'outil SAST va passer en revue votre code et vérifier si, par exemple, il n'y a pas un risque d'injection SQL si vous n'avez pas correctement paramétré vos requêtes.
function connectToDatabase(username, password) {
// Une connexion à la base de données qui pourrait être vulnérable aux injections SQL
const connection = `SELECT * FROM users WHERE username = '${username}' AND password = '${password}'`;
// ...
}
Outils utilisés
Voici 2 outils professionnels utilisés dans l'industrie logicielle pour analyser le code source :
*. SonarQube - Un outil open source pour la qualité continue du code qui effectue des inspections automatiques pour détecter les bugs, et les vulnérabilités dans le code source dans plus de 20 langages de programmation.
*. Codacy - Une plateforme automatisée de révision de code qui identifie les problèmes de sécurité, de duplication, de complexité ainsi que les erreurs de style dans plus de 30 langages de programmation.
N'oubliez pas, la sécurité est un processus continu.
Test de mémorisation/compréhension
TP - Analyse de sécurité avec Codacy
- Ouvrez le site https://www.codacy.com/
- Cliquez sur Login
- Cliquez sur l'icône de GitHub
- Connectez vous avec vos identifiants GitHub
- Cliquez sur le bouton "Authorize Codacy Production"
- Lancez l'analyse sur l'un de vos dépôts.
TP - Analyse de sécurité avec SonarQube
Objectif
L'objectif de ce TP est d'utiliser SonarQube pour identifier les failles potentielles dans un morceau de code JavaScript.
Vous avez reçu un bout de code suspect d'un de vos collègues, dans un fichier nommé auth.js
:
// Code à analyser
function authenticateUser(username, password) {
const query = "SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "'";
// Exécution de la requête (simulée pour l'exemple)
return executeQuery(query);
}
Votre mission est d'utiliser SonarQube pour trouver les failles potentielles et proposer des corrections.
Le code fourni présente une vulnérabilité classique d'injection SQL.
Vous allez configurer et utiliser SonarQube pour analyser ce code et identifier les problèmes de sécurité :
- Identifiez les vulnérabilités potentielles.
- Proposez une version corrigée du code.
- Expliquez pourquoi votre version est plus sécurisée.
Prérequis
- Avoir Docker installé sur votre machine.
- Avoir accès à un éditeur de code pour modifier et sauvegarder le fichier JavaScript.