Commit 82041772 authored by Kourser's avatar Kourser
Browse files

Audit du dépôt public : une fixture qui ressemblait trop à une vraie clé

Le dépôt étant public, relecture de tout l'historique — 31 commits, 893 objets
— à la recherche de secrets, d'identifiants et de données personnelles.

Rien de réel n'a été trouvé. Un seul point méritait correction : la clé
d'essai du contrôle de chiffrement s'écrivait « sk_live_… ». Ce n'est pas un
secret, mais les analyseurs de secrets des forges la signaleront comme une clé
Stripe — et une fausse alerte fait perdre confiance dans les vraies.

Les deux assertions qui s'appuyaient sur sa valeur littérale s'appuient
désormais sur la fixture elle-même : elles ne se casseront plus à la prochaine
substitution.

Signed-off-by: default avatarKourser <contact@kourser.bzh>
Co-Authored-By: default avatarClaude Opus 5 <noreply@anthropic.com>
parent 3e8f8942
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -19,10 +19,14 @@ export async function verifierCanaux(
): Promise<void> {
  // ── Le chiffrement des identifiants ──────────────────────────────────────
  r.titre("Secrets d'organisation");
  const cle = "sk_live_0123456789abcdefghijklmnop";
  // Volontairement sans ressemblance avec un format réel : les analyseurs de
  // secrets des forges signaleraient un « sk_live_… », et une fausse alerte
  // fait perdre confiance dans les vraies.
  const cle = "cle-dessai-sans-valeur-0123456789abcdef";
  const scelle = sceller(SECRET, cle);
  r.verifie("EA-06", "un identifiant scellé ne contient plus la clé en clair",
    !scelle.toString("latin1").includes("sk_live") && !scelle.toString("utf8").includes(cle));
    !scelle.toString("latin1").includes(cle.slice(0, 12))
      && !scelle.toString("utf8").includes(cle));
  r.verifie("EA-06", "il se rouvre avec le secret de l'instance", ouvrir(SECRET, scelle) === cle);
  await r.refuse("EA-06", "il ne se rouvre pas avec un autre secret",
    async () => ouvrir(`${SECRET}-autre`, scelle));
@@ -31,7 +35,7 @@ export async function verifierCanaux(
  r.verifie("EA-06", "deux scellements de la même valeur diffèrent",
    !sceller(SECRET, cle).equals(scelle));
  r.verifie("EA-06", "l'aperçu montre de quoi reconnaître la clé, pas de quoi la refaire",
    apercuSecret(cle).endsWith("mnop") && !apercuSecret(cle).includes("sk_live"));
    apercuSecret(cle).endsWith(cle.slice(-4)) && !apercuSecret(cle).includes(cle.slice(0, 8)));
  r.verifie("EA-06", "une clé courte ne montre rien du tout",
    apercuSecret("court") === "••••••••");