Patterns suspects détectés mais non bloqués (log only)
✅ Corrigé
MEDIUM
CORS
Middlewares/securityHeadersMiddleware.js:78
Access-Control-Allow-Origin: * sur /cdn-files/
⚠️ À vérifier
MEDIUM
Session
server.js:80-91
Secret régénéré à chaque restart, store en mémoire
⚠️ À vérifier
HIGH
Secrets
models/Passport-ActiveDirectory.js:18
LDAP password dans setup.json
⚠️ À vérifier
LOW
CSP
Middlewares/securityHeadersMiddleware.js:15
unsafe-inline dans script-src
⚠️ À vérifier
Corrections appliquées au code
Path Traversal (CRITICAL/HIGH) : Remplacement de path.join() + startsWith() par path.resolve() + vérification de préfixe avec path.sep. Ajout de lstatSync() pour détecter et ignorer les symlinks dans les opérations fichiers.
XSS (HIGH/MEDIUM) : Ajout d'une fonction escapeAttr() pour échapper les caractères HTML dans les attributs onerror, onclick et les templates innerHTML.
Input Validation (MEDIUM) : Le middleware bloque désormais les requêtes contenant des patterns suspects (XSS, SQLi, path traversal) au lieu de simplement les logger.
Montée de version
Avant : 1.2.2-beta
Après : 1.2.3-beta
Vérifications effectuées
Audit dépendances passé (0 CVE)
Analyse SAST effectuée (manuelle, Grep/Read)
Corrections de code appliquées (8 fichiers)
Build vérifié (npm non disponible sur la machine d'audit)
Tests fonctionnels à valider
Points d'attention (à vérifier manuellement)
CORS wildcard sur /cdn-files/ : intentionnel pour un CDN mais expose les fichiers privés à tout domaine
Session secret régénéré au restart : considérer SESSION_SECRET en variable d'environnement
LDAP/OAuth credentials dans setup.json : migrer vers des variables d'environnement
CSP unsafe-inline : nécessaire pour le fonctionnement actuel, migration vers nonces recommandée
Rate limiting localhost bypass : acceptable en dev, à restreindre en production
Input validation : le blocage peut causer des faux positifs sur des chemins légitimes contenant ../ — à surveiller en production
## Rapport de sécurité — 2026-03-12
### Vulnérabilités dépendances (CVE)
✅ **Aucune vulnérabilité détectée** — Toutes les dépendances sont à jour.
### Vulnérabilités code source (SAST)
| Sévérité | Type | Fichier:Ligne | Description | Statut |
|----------|------|---------------|-------------|--------|
| CRITICAL | Path Traversal | routes/Dpanel/API/DeleteFile.js:167 | startsWith() sans path.resolve(), bypass via symlink | ✅ Corrigé |
| CRITICAL | Path Traversal | routes/Dpanel/API/DeleteFileFolder.js:30 | Aucune validation de chemin, suppression arbitraire via symlink | ✅ Corrigé |
| HIGH | Path Traversal | routes/Dpanel/API/RenameFile.js:149 | startsWith() sans path.resolve(), renommage hors répertoire | ✅ Corrigé |
| HIGH | XSS (DOM) | public/js/dashboard.js:688,800 | onerror avec user.name non échappé | ✅ Corrigé |
| HIGH | XSS (Event) | public/js/dashboard.js:700,811 | onclick avec itemName/userId non échappés | ✅ Corrigé |
| MEDIUM | Path Traversal | routes/attachments.js:27-55 | findFileInDir suit les symlinks sans validation | ✅ Corrigé |
| MEDIUM | XSS (DOM) | public/js/paramadminsettingsetup.script.js:321-326 | innerHTML avec ${value} non échappé | ✅ Corrigé |
| MEDIUM | Input Bypass | Middlewares/inputValidationMiddleware.js:187 | Patterns suspects détectés mais non bloqués (log only) | ✅ Corrigé |
| MEDIUM | CORS | Middlewares/securityHeadersMiddleware.js:78 | Access-Control-Allow-Origin: * sur /cdn-files/ | ⚠️ À vérifier |
| MEDIUM | Session | server.js:80-91 | Secret régénéré à chaque restart, store en mémoire | ⚠️ À vérifier |
| HIGH | Secrets | models/Passport-ActiveDirectory.js:18 | LDAP password dans setup.json | ⚠️ À vérifier |
| LOW | CSP | Middlewares/securityHeadersMiddleware.js:15 | unsafe-inline dans script-src | ⚠️ À vérifier |
### Corrections appliquées au code
- **Path Traversal (CRITICAL/HIGH)** : Remplacement de `path.join()` + `startsWith()` par `path.resolve()` + vérification de préfixe avec `path.sep`. Ajout de `lstatSync()` pour détecter et ignorer les symlinks dans les opérations fichiers.
- **XSS (HIGH/MEDIUM)** : Ajout d'une fonction `escapeAttr()` pour échapper les caractères HTML dans les attributs `onerror`, `onclick` et les templates `innerHTML`.
- **Input Validation (MEDIUM)** : Le middleware bloque désormais les requêtes contenant des patterns suspects (XSS, SQLi, path traversal) au lieu de simplement les logger.
### Montée de version
- **Avant** : 1.2.2-beta
- **Après** : 1.2.3-beta
### Vérifications effectuées
- [x] Audit dépendances passé (0 CVE)
- [x] Analyse SAST effectuée (manuelle, Grep/Read)
- [x] Corrections de code appliquées (8 fichiers)
- [ ] Build vérifié (npm non disponible sur la machine d'audit)
- [ ] Tests fonctionnels à valider
### Points d'attention (à vérifier manuellement)
- **CORS wildcard** sur `/cdn-files/` : intentionnel pour un CDN mais expose les fichiers privés à tout domaine
- **Session secret** régénéré au restart : considérer `SESSION_SECRET` en variable d'environnement
- **LDAP/OAuth credentials** dans `setup.json` : migrer vers des variables d'environnement
- **CSP unsafe-inline** : nécessaire pour le fonctionnement actuel, migration vers nonces recommandée
- **Rate limiting localhost bypass** : acceptable en dev, à restreindre en production
- **Input validation** : le blocage peut causer des faux positifs sur des chemins légitimes contenant `../` — à surveiller en production
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Rapport de sécurité — 2026-03-12
Vulnérabilités dépendances (CVE)
✅ Aucune vulnérabilité détectée — Toutes les dépendances sont à jour.
Vulnérabilités code source (SAST)
Corrections appliquées au code
path.join()+startsWith()parpath.resolve()+ vérification de préfixe avecpath.sep. Ajout delstatSync()pour détecter et ignorer les symlinks dans les opérations fichiers.escapeAttr()pour échapper les caractères HTML dans les attributsonerror,onclicket les templatesinnerHTML.Montée de version
Vérifications effectuées
Points d'attention (à vérifier manuellement)
/cdn-files/: intentionnel pour un CDN mais expose les fichiers privés à tout domaineSESSION_SECRETen variable d'environnementsetup.json: migrer vers des variables d'environnement../— à surveiller en productionView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.