Share
## https://sploitus.com/exploit?id=E1839031-F57F-5546-8183-9FB87FA91E67
# VoltaireExploit đ
**â ïž AVERTISSEMENT: Ce projet est uniquement Ă des fins Ă©ducatives et de recherche en sĂ©curitĂ©. Toute utilisation malveillante est strictement interdite.**
## Description
Démonstration d'une vulnérabilité cryptographique critique dans la plateforme Projet Voltaire. Ce projet expose comment une implémentation faible d'AES-128-CBC avec une clé statique permet de déchiffrer les exercices et réponses en temps réel.
## Vulnérabilité Identifiée
- **Type**: Vulnérabilité cryptographique
- **Chiffrement**: AES-128-CBC
- **Clé statique**: `Encrypt or obfus` (16 bytes)
- **IV statique**: `0x00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00`
- **Impact**: Déchiffrement complet des exercices et réponses
## Structure du Projet
```
.
âââ extension/ # Extension Chrome (mĂ©thode recommandĂ©e)
â âââ background.js # Service worker (interception + dĂ©chiffrement)
â âââ content.js # Script de page (highlighting)
â âââ popup.html/js # Interface utilisateur
â âââ manifest.json # Configuration extension
â âââ README.md # Documentation dĂ©taillĂ©e
â
âââ exploitation/ # Scripts Python alternatifs
â âââ voltaire_exploit.py # Script principal avec proxy MITM
â âââ simple_decrypt.py # DĂ©chiffrement simple
â âââ mitmproxy_addon.py # Addon pour proxy MITM
â âââ requirements.txt # DĂ©pendances Python
â
âââ encrypted_data/ # Ăchantillons de donnĂ©es chiffrĂ©es
```
## đ Installation Rapide - Extension Chrome
### Prérequis
- Google Chrome ou navigateur Chromium (Edge, Brave, etc.)
### Ătapes d'installation
1. **Cloner le repository**
```bash
git clone https://github.com/Robin-BRG/VoltaireExploit.git
cd VoltaireExploit
```
2. **Charger l'extension dans Chrome**
- Ouvrir Chrome et aller sur `chrome://extensions/`
- Activer le **"Mode développeur"** (coin supérieur droit)
- Cliquer sur **"Charger l'extension non empaquetée"**
- Sélectionner le dossier `extension/`
- L'icĂŽne de l'extension apparaĂźt dans la barre d'outils
3. **Utilisation**
- Cliquer sur l'icĂŽne de l'extension
- Activer le toggle (vert = activé)
- Se connecter sur https://www.projet-voltaire.fr
- Démarrer un exercice
- **Les mots avec erreurs sont automatiquement surlignĂ©s en vert** â
### Interface de l'extension

- **Toggle activé/désactivé**: ContrÎle de l'extension
- **Exercice actuel**: Affiche en temps réel la phrase, l'erreur et la correction
- **Statistiques**:
- RequĂȘtes interceptĂ©es
- Niveaux déchiffrés
- Exercices trouvés
- **Actions**:
- "Voir les réponses": Ouvre un nouvel onglet avec toutes les réponses déchiffrées
- "Effacer": Supprime les données stockées
## Comment ça fonctionne ?
### 1. Interception automatique
L'extension intercepte les requĂȘtes vers `content-prd.projet-voltaire.fr/levels/*.json` via le service worker.
### 2. Déchiffrement
Les fichiers JSON chiffrés sont déchiffrés en utilisant la clé statique hardcodée dans le code source du site.
```javascript
const AES_KEY = 'Encrypt or obfus'; // 16 bytes
const AES_IV = new Uint8Array(16); // IV de zéros
const key = await crypto.subtle.importKey(
'raw',
new TextEncoder().encode(AES_KEY),
{ name: 'AES-CBC', length: 128 },
false,
['decrypt']
);
const decrypted = await crypto.subtle.decrypt(
{ name: 'AES-CBC', iv: AES_IV },
key,
encryptedData
);
```
### 3. Extraction des réponses
Le JSON déchiffré contient la structure complÚte des exercices:
```json
{
"rules": [
{
"exercises": [
{
"hasMistake": true,
"sentence": [
{ "text": "Il", "mistake": false },
{ "text": "faut", "mistake": true },
{ "text": "partir", "mistake": false }
],
"corrections": [
[{ "text": "fallait", "correction": true }]
]
}
]
}
]
}
```
### 4. Highlighting intelligent
Le content script:
- Détecte la phrase affichée à l'écran
- Normalise le texte (accents, tirets spéciaux, casse)
- Filtre les éléments d'interface
- Match la phrase avec l'exercice correspondant
- Surligne uniquement le(s) mot(s) avec l'erreur en vert
```javascript
function normalize(text) {
return text.toLowerCase()
.normalize('NFD').replace(/[\u0300-\u036f]/g, '') // Enlever accents
.replace(/[\u2010-\u2015\u2212]/g, '-') // Normaliser tirets
.replace(/[^a-z0-9]/g, ''); // Garder seulement lettres et chiffres
}
```
## đ FonctionnalitĂ©s
### â
Ce que l'extension fait
- Interception automatique des requĂȘtes
- Déchiffrement en temps réel
- Highlighting précis des erreurs
- Affichage de la phrase et correction actuelles
- Stockage local des réponses
- Export de toutes les réponses
### â Ce que l'extension ne fait PAS
- Soumettre automatiquement les réponses
- Modifier les requĂȘtes vers le serveur
- Contourner la détection cÎté serveur
- Fonctionner hors ligne (nĂ©cessite les requĂȘtes rĂ©seau)
## đ ïž Alternative: Scripts Python
Si vous préférez utiliser un proxy MITM avec Python:
```bash
cd exploitation/
pip install -r requirements.txt
python voltaire_exploit.py
```
Voir [INSTALLATION_EXTENSION.md](INSTALLATION_EXTENSION.md) pour plus de détails.
## đ DĂ©tails Techniques
### Architecture de l'extension
```
Navigateur
â
[Service Worker: background.js]
âââ Intercepte requĂȘtes vers content-prd.projet-voltaire.fr
âââ Fetch les donnĂ©es chiffrĂ©es
âââ DĂ©chiffre AES-128-CBC
âââ Extrait erreurs et corrections
âââ Stocke dans chrome.storage.local
âââ Envoie au content script
â
[Content Script: content.js]
âââ Observe le DOM avec MutationObserver
âââ DĂ©tecte la phrase affichĂ©e
âââ Normalise et match avec les exercices
âââ Applique le highlighting
â
Interface utilisateur avec mots surlignés
```
### Structure des données déchiffrées
Chaque exercice extrait contient:
- `sentence`: La phrase complĂšte
- `error`: Le(s) mot(s) avec l'erreur
- `correction`: La correction proposée
- `hasMistake`: Boolean indiquant si la phrase a une erreur
## đĄïž Recommandations de SĂ©curitĂ©
### Pour Projet Voltaire
#### Court Terme (Urgent)
1. â
**Rotation immédiate de la clé AES**
- Générer une clé aléatoire unique par session
- Transmettre la clé de maniÚre sécurisée (ex: lors de l'authentification)
2. â
**Utiliser un IV aléatoire**
- Générer un IV unique pour chaque chiffrement
- Préfixer les données chiffrées avec l'IV
3. â
**Passer Ă AES-256-GCM**
- Authentification intégrée (AEAD)
- Protection contre les attaques par modification
#### Moyen Terme
4. â
**Validation cÎté serveur uniquement**
- Ne jamais envoyer les réponses au client
- Valider chaque réponse soumise cÎté serveur
5. â
**Livraison progressive des exercices**
- Envoyer les exercices un par un
- Invalider les exercices non utilisés
6. â
**Rate limiting**
- Limiter le nombre de requĂȘtes par utilisateur
- Détecter les patterns suspects
#### Long Terme
7. â
**Architecture zero-trust**
- Aucune donnée sensible cÎté client
- Chiffrement de bout en bout pour les données utilisateur
8. â
**Monitoring et détection**
- Logs des anomalies (temps de réponse, taux de réussite)
- Alertes sur comportements suspects
## đ Divulgation Responsable
Ce projet a été développé dans le cadre d'une divulgation responsable:
```
2026-01-28 Découverte de la vulnérabilité
2026-01-XX Contact de l'équipe Projet Voltaire
2026-02-XX Ăchanges techniques et correction
2026-04-XX Délai de correction (90 jours)
2026-04-XX Divulgation publique (si non corrigé)
```
## đ Rapport DĂ©taillĂ©
Pour une analyse technique complĂšte, voir [RAPPORT_PENTEST.md](RAPPORT_PENTEST.md).
## đ DĂ©pannage
### L'extension ne fonctionne pas
1. Vérifier que l'extension est activée (toggle vert)
2. VĂ©rifier que vous ĂȘtes sur https://www.projet-voltaire.fr
3. Ouvrir la console (F12) et chercher les logs `[Voltaire PoC]`
4. Recharger l'extension: `chrome://extensions/` â cliquer sur le bouton recharger
### Les mots ne sont pas surlignés
1. Attendre 2-3 secondes (détection automatique)
2. VĂ©rifier que des exercices ont Ă©tĂ© dĂ©chiffrĂ©s (popup â stats)
3. Recharger la page Projet Voltaire
### "Aucun exercice détecté" dans le popup
- Les exercices sont déchiffrés à la volée
- Démarrer au moins un exercice pour capturer les données
- Le popup affiche uniquement l'exercice actuel
## đ§ Contact
Pour toute question concernant ce projet:
- **GitHub**: [@Robin-BRG](https://github.com/Robin-BRG)
- **Issues**: https://github.com/Robin-BRG/VoltaireExploit/issues
## đ Licence
Ce projet est distribué à des fins éducatives et de recherche en sécurité uniquement.
L'auteur décline toute responsabilité en cas d'utilisation malveillante ou non autorisée.
---
**Développé par Robin BRG - Janvier 2026**
**Divulgation Responsable - Usage Ăducatif Uniquement**