Aller au contenu principal

OASIS

Ollama Automated Security Intelligence Scanner pour sécuriser votre code avec Ollama

Notions théoriques​

L'intelligence artificielle (IA) est devenue un outil puissant dans le domaine de la cybersécurité.

L'IA permet d'analyser de grandes quantités de données pour détecter des anomalies et des vulnérabilités dans le code.

Qu'est-ce que OASIS ?​

OASIS est un projet open-source qui utilise l'IA pour aider les développeurs à sécuriser leur code.

OASIS, ou Open-source Application Security Intelligence System, est une plateforme qui intègre des techniques d'apprentissage automatique pour identifier les failles de sécurité dans le code source. Il fonctionne en analysant le code pour détecter des motifs susceptibles d'être exploités par des attaquants. Par exemple, OASIS peut repérer des injections SQL, des cross-site scripting (XSS), et d'autres types de vulnérabilités courantes.

L'utilisation d'OASIS présente plusieurs avantages:

  • il permet de réduire le temps nécessaire pour effectuer des audits de sécurité manuels,
  • il peut détecter des vulnérabilités qui pourraient être négligées par des revues de code humaines
  • et il peut être intégré dans les pipelines de développement pour automatiser les vérifications de sécurité.

Comment fonctionne OASIS ?​

OASIS repose sur la plateforme Ollama, qui utilise des modèles d'IA avancés pour analyser le code.

Ollama est une plateforme qui permet de créer et d'exécuter des modèles d'IA de manière efficace. OASIS utilise ces modèles pour analyser le code source et identifier les vulnérabilités potentielles.

OASIS fonctionne en plusieurs étapes :

  1. Analyse du code : OASIS examine le code source pour identifier les motifs et les structures de données.
  2. Détection des vulnérabilités : Il compare ces motifs à une base de données de vulnérabilités connues pour identifier les problèmes potentiels.
  3. Génération de rapports : OASIS produit un rapport détaillant les vulnérabilités détectées, accompagnées de recommandations pour les corriger.
  4. Intégration continue : OASIS peut être intégré dans les pipelines CI/CD pour automatiser les vérifications de sécurité à chaque étape du développement.
attention

Notez que l'IA n'est pas infaillible.

L'IA doit être utilisée en complément des pratiques de sécurité traditionnelles.

Les développeurs doivent toujours :

  • rester vigilants
  • et comprendre les résultats fournis par OASIS pour prendre des décisions éclairées.

Exemple pratique​

Analyser un script Python avec OASIS

Il est possible d’utiliser OASIS pour analyser un petit script Python et détecter d’éventuelles failles. Cet exemple se base sur un script simple qui demande une entrée utilisateur et l’affiche.

Pour commencer, installer OASIS en suivant les instructions du dépôt GitHub. Exécuter ces commandes dans un terminal :

git clone https://github.com/psyray/oasis.git
cd oasis
pipx install --editable .

Préparer ensuite un script Python, comme celui-ci :

# script.py
user_input = input("Entrez votre nom : ")
print("Bonjour, " + user_input + "!")

Ce code semble basique, mais une entrée mal contrôlée pourrait poser des risques. Pour analyser ce fichier, lancer OASIS avec cette commande :

oasis -i script.py

OASIS va examiner le script et produire un rapport.

Ce rapport peut indiquer, par exemple, un risque lié à l’utilisation directe de l’entrée utilisateur sans vérification.

Une fois le rapport obtenu, il est nécessaire :

  • d'interpréter les résultats pour comprendre les failles signalées,
  • de corriger ensuite le code, par exemple en ajoutant une sanitisation des entrées,
  • puis de relancer l’analyse pour vérifier les améliorations.

Test de mémorisation/compréhension​


Quelle est la signification de l'acronyme OASIS ?


Quel est le rôle principal de OASIS ?


Sur quelle plateforme d’IA OASIS repose-t-il ?


Quel type de vulnérabilité OASIS peut-il détecter ?


Quelle commande permet de cloner le dépôt OASIS ?


Quel avantage clé offre OASIS ?


Que produit OASIS après avoir analysé le code ?


Quels langages OASIS peut-il analyser ?


Pourquoi la sécurité est-elle essentielle dans le code ?


Quelle commande lance l’analyse d’un fichier ?


Que faire après avoir reçu le rapport d’OASIS ?


Quel type de vulnérabilité OASIS peut-il détecter ?


Pourquoi utiliser OASIS dans le développement de logiciels ?


Quelle commande permet de cloner le dépôt OASIS depuis GitHub ?


Comment installer les dépendances nécessaires pour OASIS ?


Quelle commande permet d'exécuter OASIS sur un projet de code ?


Que génère OASIS après l'analyse du code ?


Pourquoi est-il important de comprendre les résultats fournis par OASIS ?


Quel est l'un des avantages de l'utilisation d'OASIS ?


Pourquoi l'IA n'est-elle pas infaillible dans la détection des vulnérabilités ?


TP pour réfléchir et résoudre des problèmes​

Ce TP s'inspire de l'exemple pratique, mais propose une activité différente, centrée sur l'analyse et la sécurisation d’un script JavaScript manipulant des données utilisateur dans une petite application web.

Dans ce TP, vous allez analyser et sécuriser une petite application Web en JavaScript à l’aide d’OASIS.

L’application est un formulaire simple qui permet à un utilisateur de soumettre un commentaire, lequel est ensuite affiché sur la page.

Votre tâche consiste à :

  • cloner le projet depuis un dépôt GitHub public,
  • installer OASIS,
  • analyser le code pour détecter les vulnérabilités,
  • interpréter le rapport généré,
  • corriger les failles identifiées,
  • puis valider vos corrections en relançant l’analyse.

Enfin, vous rédigerez un rapport expliquant vos démarches et soumettrez le code corrigé.

Étape 1 : Cloner le projet​

Commencez par récupérer le code source de l’application à analyser. Le projet est disponible sur un dépôt GitHub public. Ouvrez un terminal et exécutez les commandes suivantes :

git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp/sample-projects/comment-box

Note : Pour cet exercice, nous utilisons une version simplifiée et fictive d’un projet de commentaire, supposé être dans le dossier sample-projects/comment-box. Dans un contexte réel, vous devriez vérifier que ce dossier contient un fichier index.html et un fichier script.js. Si nécessaire, adaptez les chemins en fonction de la structure réelle du dépôt.

info

Cloner le projet depuis GitHub permet de travailler sur une copie locale du code source.

La commande git clone https://github.com/freeCodeCamp/freeCodeCamp.git télécharge l’ensemble du dépôt freeCodeCamp, qui est un projet open-source bien connu et accessible publiquement.

Ensuite, la commande cd freeCodeCamp/sample-projects/comment-box vous positionne dans le sous-dossier contenant l’application de commentaire.

Si ce dossier spécifique n’existe pas dans le dépôt réel, vous pouvez créer un projet similaire avec un fichier HTML et un fichier JavaScript pour simuler l’exercice.

L’objectif est d’obtenir un environnement de travail prêt pour l’analyse avec OASIS.

Étape 2 : Installer OASIS​

Pour analyser le code, vous devez installer OASIS. Rendez-vous sur le dépôt officiel d’OASIS et suivez les instructions d’installation. Dans un terminal, exécutez les commandes suivantes :

git clone https://github.com/psyray/oasis.git
cd oasis
pipx install --editable .

Assurez-vous que pipx est installé sur votre système (vous pouvez l’installer avec pip install pipx si nécessaire). Une fois l’installation terminée, vérifiez que OASIS est fonctionnel en tapant oasis --version dans le terminal.

info

L’installation d’OASIS est une étape cruciale pour permettre l’analyse de sécurité.

La commande git clone https://github.com/psyray/oasis.git récupère le code source d’OASIS depuis son dépôt officiel.

Ensuite, cd oasis vous place dans le dossier cloné, et pipx install --editable . installe OASIS en mode éditable, ce qui signifie que les modifications locales au code d’OASIS (si nécessaires) seront prises en compte sans réinstallation.

L’utilisation de pipx garantit que OASIS est isolé dans un environnement virtuel, évitant les conflits avec d’autres dépendances Python.

La vérification avec oasis --version confirme que l’outil est correctement installé et prêt à être utilisé.

Étape 3 : Lancer l’analyse avec OASIS​

Placez-vous dans le dossier du projet (freeCodeCamp/sample-projects/comment-box) et lancez l’analyse sur l’ensemble des fichiers avec la commande suivante :

oasis -i .

Cette commande indique à OASIS d’examiner tous les fichiers du répertoire courant. Une fois l’analyse terminée, un rapport sera généré (souvent sous forme de fichier texte ou HTML, selon la configuration par défaut d’OASIS).

info

La commande oasis -i . lance l’analyse de sécurité sur le répertoire courant, représenté par le point (.). OASIS parcourt récursivement les fichiers, y compris script.js, pour identifier les vulnérabilités potentielles, comme des problèmes de cross-site scripting (XSS) ou des mauvaises pratiques de manipulation des entrées utilisateur. Le rapport généré contiendra une liste des problèmes détectés, avec des détails sur leur emplacement dans le code et des suggestions de correction. Si aucun rapport n’apparaît, vérifiez que la commande a été exécutée dans le bon dossier et que OASIS est correctement installé.

Étape 4 : Interpréter le rapport​

Ouvrez le rapport généré par OASIS (par exemple, report.txt ou report.html) avec un éditeur de texte ou un navigateur, selon son format. Étudiez les vulnérabilités signalées. Par exemple, si le rapport mentionne un risque de XSS dans script.js lié à l’ajout direct de commentaires utilisateur dans le DOM, notez l’emplacement exact (numéro de ligne) et la description du problème.

info

Le rapport d’OASIS est une mine d’informations pour comprendre les failles de sécurité.

Supposons que le fichier script.js contienne une ligne comme document.getElementById('comments').innerHTML += comment;, où comment est une entrée utilisateur non sanitizée.

Le rapport pourrait indiquer un risque de XSS, car un attaquant pourrait injecter du code malveillant (ex. <script>alert('hack');</script>).

Chaque entrée du rapport inclut généralement une description, un emplacement (fichier et ligne), et une recommandation, comme l’ajout d’une sanitisation.

Analysez chaque problème pour planifier les corrections nécessaires.

Étape 5 : Corriger les failles​

Modifiez le code en fonction du rapport. Par exemple, si une vulnérabilité XSS est détectée dans script.js, utilisez une bibliothèque comme DOMPurify pour sanitiser les entrées utilisateur. Voici un exemple de code avant et après correction :

Avant :

// script.js
document.getElementById('comments').innerHTML += comment;

Après (en supposant que DOMPurify est inclus via un CDN dans index.html) :

// script.js
const sanitizedComment = DOMPurify.sanitize(comment);
document.getElementById('comments').innerHTML += sanitizedComment;

Pour ajouter DOMPurify, insérez cette ligne dans index.html avant la balise <script> qui charge script.js :

<script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.4.0/purify.min.js"></script>

Enregistrez les modifications.

info

La correction des failles repose sur les recommandations du rapport.

Dans cet exemple, le problème est l’utilisation de innerHTML avec une entrée utilisateur non filtrée, ce qui expose à des attaques XSS.

En ajoutant DOMPurify (via le CDN <script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.4.0/purify.min.js"></script> dans index.html), vous pouvez utiliser DOMPurify.sanitize(comment) pour supprimer tout code malveillant avant de l’insérer dans le DOM.

Cette approche préserve la fonctionnalité (afficher les commentaires) tout en éliminant le risque de sécurité.

Testez localement en ouvrant index.html dans un navigateur pour vérifier que les commentaires s’affichent correctement après sanitisation.

Étape 6 : Relancer l’analyse​

Retournez dans le dossier du projet et relancez OASIS avec la même commande :

oasis -i .

Comparez le nouveau rapport avec l’ancien pour confirmer que les vulnérabilités signalées ont été résolues. Si des problèmes persistent, revenez à l’étape 5 pour ajuster vos corrections.

info

Relancer l’analyse avec oasis -i . permet de vérifier l’efficacité des corrections.

Le nouveau rapport devrait indiquer que le risque de XSS (ou toute autre vulnérabilité corrigée) n’est plus présent.

Si des problèmes subsistent, cela peut signifier une erreur dans l’implémentation (par exemple, DOMPurify mal intégré) ou une autre vulnérabilité non adressée.

Cette étape itérative garantit que le code est sécurisé avant la soumission.

Comparez les rapports ligne par ligne pour valider chaque correction.

Étape 7 : Rédiger un rapport​

Rédigez un document (par exemple, rapport.md) décrivant :

  1. Les vulnérabilités détectées dans le rapport initial (nom, description, emplacement).
  2. Les corrections apportées, avec des extraits de code avant/après.
  3. Les résultats de la seconde analyse, prouvant que les failles sont résolues.
  4. Une conclusion sur l’importance de l’analyse automatisée dans le développement sécurisé.

Utilisez un format clair, avec des sections et des sous-sections.

info

Le rapport doit être structuré et informatif. Voici un exemple de contenu pour rapport.md :

# Rapport d’analyse et de sécurisation

## Vulnérabilités détectées
- **Type** : Cross-site scripting (XSS)
- **Description** : Utilisation non sécurisée de `innerHTML` avec entrée utilisateur dans `script.js`, ligne 10.
- **Impact** : Permet l’exécution de code JavaScript malveillant.

## Corrections apportées
- **Avant** : `document.getElementById('comments').innerHTML += comment;`
- **Après** : Ajout de DOMPurify via CDN et modification en `const sanitizedComment = DOMPurify.sanitize(comment); document.getElementById('comments').innerHTML += sanitizedComment;`.

## Résultats de la seconde analyse
La nouvelle analyse avec `oasis -i .` ne signale plus de vulnérabilité XSS à la ligne 10, confirmant la résolution.

## Conclusion
L’utilisation d’OASIS a permis d’identifier et de corriger rapidement une faille critique, soulignant l’importance des outils automatisés pour renforcer la sécurité des applications web.

Ce rapport documente le processus de manière professionnelle et sert de preuve de votre travail.

Étape 8 : Envoyer votre travail​

Soumettez les éléments suivants :

  • Le code corrigé (dossier comment-box avec index.html et script.js modifiés).
  • Le rapport rédigé (rapport.md). Assurez-vous que le code fonctionne (testez-le dans un navigateur) et que le rapport est complet.
info

La soumission comprend le dossier du projet mis à jour (avec DOMPurify intégré et script.js corrigé) et le fichier rapport.md. Pour tester, ouvrez index.html dans un navigateur, soumettez un commentaire comme <script>alert('test');</script>, et vérifiez qu’il est affiché comme texte brut, pas exécuté. Le rapport doit refléter toutes les étapes du TP, démontrant votre maîtrise de l’analyse de sécurité avec OASIS.

Compressez le dossier et le rapport dans une archive (ex. tp.zip) et envoyer le à votre enseignant.