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

![Extension Interface](https://via.placeholder.com/350x500?text=Extension+Interface)

- **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**