Releases: Calixteair/DevSecVault
Releases · Calixteair/DevSecVault
v1.0.0 — DevSecVault
DevSecVault v1.0.0 — Première release publique
DevSecVault est un coffre-fort web auto-hébergé pour les pros de la cybersécurité : centraliser ses snippets, ses payloads offensifs (chiffrés serveur), partager des secrets en bout-en-bout (zero-knowledge), et accéder à 23 utilitaires IT 100% client-side.
Démo publique : https://vault.calixteair.fr
Modules
| Module | Description |
|---|---|
| Dev Library | Bibliothèque de concepts regroupant un snippet par langage. Éditeur Monaco, templating {{VAR}} substitué côté client à la copie. |
| Cyber Toolbox | Catalogue de payloads / scripts pentest chiffrés AES-256-GCM en base. Catégories Reconnaissance / Exploitation / Privesc. Générateurs Nmap, MSFVenom. |
| Secure Bridge | Partage de secrets chiffré bout-en-bout via Web Crypto API. Clé dans le fragment URL (#key), jamais transmise au serveur. Burn-after-read en option. TTL max 10 min. |
| IT Tools | 23 outils 100% navigateur : hash, HMAC, bcrypt, JWT parser, TOTP, X.509, subnet IPv4, base converter, regex, JSON formatter, CVSS, chmod, etc. |
| Teams | Partage entre membres via lien d'invitation. Le lead a un droit d'unshare (soft, jamais de delete). |
| Admin | Modération a posteriori (DSA), gestion des tags officiels, fusion de tags, dashboard stats. |
Sécurité & confidentialité
- Auth : Keycloak 26.5 (OIDC), brute-force protection, anti-bot Altcha (proof-of-work, SPI custom Java 21 dans
keycloak-altcha-spi/). - Chiffrement serveur : payloads en
AES-256-GCM, clé via Symfony Secrets rotatable. - Chiffrement E2E : Web Crypto API navigateur, le serveur ne voit que le ciphertext.
- CSP stricte :
default-src 'self', polices auto-hébergées, zéro CDN tiers. - Rate-limit & quotas : limiteurs Symfony par endpoint sensible ; 100 concepts, 100 payloads, 50 vault items, 20 secret-links actifs, 10 PAT, 10 teams par user.
- Recherche scopée : Meilisearch interrogé directement par le navigateur avec un tenant token JWT signé, scopé par visibilité et par user.
- Index sains : les payloads ne sont jamais indexés en clair (seules les métadonnées) — protection contre l'AV de l'hébergeur sur les fichiers d'index.
- Headers : security headers nginx (HSTS, X-Frame-Options, etc.),
client_max_body_sizeetlimit_reqcôté API. - Conteneurs : PHP en non-root, scan Trivy en CI sur les images Docker, packages Alpine patchés (CVE-2026-27135).
- RGPD : suppression de compte immédiate et irréversible, IP des reports en HMAC-SHA256 salée, logs LCEN 1 an, purge auto via sidecar Ofelia.
- Reports : signalement abuse intégré, notif e-mail vers la mailbox dédiée, modération + ban kill-switch.
Stack technique
- Frontend — Angular 21 (Signals, Standalone, SSR + prerender des pages publiques)
- Backend — Symfony 8 / PHP 8.3 (contrôleurs REST manuels, Voters RBAC)
- Auth — Keycloak 26.5 + theme custom + SPI Altcha
- Recherche — Meilisearch (tenant tokens HMAC par user)
- BDD — PostgreSQL 16
- Secrets — OpenBao + bao-agent (tmpfs, zéro
.enven clair) - Build & deploy — Docker Compose, GitHub Actions, Docker Hub, deploy SSH pull
- Pages légales — CGU, Confidentialité RGPD, Mentions légales, Procédure DSA, SECURITY.md, CONTRIBUTING.md
Périmètre couvert dans cette v1
- Phases 1 → 8 complètes : Docker + Keycloak, Dev Library, IT Tools, Cyber Toolbox, Secure Bridge, Teams + RBAC, Tags + Admin, Polish (landing prerendue, SEO, footer legal, dashboard, search Cmd+K).
- Personal Access Tokens pour clients CLI.
- Captcha Altcha self-hosted sur le flow d'inscription Keycloak.
- Page de soutien (PayPal) et pages légales durcies.
- Suppression de compte libre-service (RGPD).
Démarrage rapide
git clone https://github.com/Calixteair/DevSecVault.git
cd DevSecVault
cp docker-compose.override.yml.dist docker-compose.override.yml
cp .env.example .env # à compléter (DB, Meili master key, Keycloak)
docker compose up -d
docker exec dsv-php php bin/console doctrine:migrations:migrate --no-interactionVoir le README.md pour le build du SPI Altcha et les seeds de démo.
Licence
Code source publié sous licence MIT.