BUG: API key agent stockée en clair dans agent-state.json #21
Labels
No labels
bug
chore
design
dx:ci
dx:database
dx:dotnet
dx:infra
dx:security
dx:tests
dx:ui
etape-1
etape-2
etape-3
etape-4
etape-5
etape-6
etape-7
feature
priority-high
priority-low
priority-medium
security
spec
tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nonobis/Heimdall#21
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🎯 Contexte
L'API key de l'agent est persistée en clair dans
agent-state.json(0600). Si le fichier est lu (root, backup, compromission du volume), la clé est exposée.📚 Référence spec (MASTER_SPECIFICATION.md v2.0)
4.3 Sécurité : API Keys HMACSHA256 P0 ; secrets jamais en clair
Règle
.opencode-local/heimdall-agent-pitfalls.md: « AgentState : API key jamais en clair sur disque (IDataProtector) »🔍 État actuel (vérifié dans le code)
AgentState.Persist()écrit l'API key brute dans agent-state.json (permissions 0600). Le commentaire de code assume et recommande TPM/keystore en production.🧩 À faire
🧪 Critères d'acceptation
📁 Fichiers concernés
src/Heimdall.Agent/Services/AgentState.cs, src/Heimdall.Agent/Program.cs
Fix implémenté : PR #116 — chiffrement de l'API key au repos via IDataProtector (key ring
{StateDirectory}/dp-keys, 0700), migration auto des fichiers legacy en clair, fail-fast si protector absent. Tests Agent 197/197 ✅. Échecs Infrastructure/Integration constatés en suite complète = préexistants sur main (fixture Testcontainers), vérifié sur baseline.