Static HKDF salt "RATLS" with no key versioning
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- rust
- Domaine
- cryptography, security
Piste de recherche
Commencez par lire dstack/kms/src/main_service.rs et le code KDF à kdf.rs:28 afin de vérifier comment le salt statique est utilisé et si l’impact signalé s’applique. L’issue propose le versionnage, la rotation ou des salts aléatoires persistés, mais ne sélectionne pas de conception ; la finalisation nécessite une approche convenue de dérivation et de rotation des clés, avec la validation correspondante.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
The disk encryption key derivation in dstack/kms/src/main_service.rs uses a hardcoded, empty HKDF salt rather than a per-instance random salt, reducing HKDF's security margin and making all derived keys deterministic given the same input keying material.
Root Cause
The RA-TLS key derivation uses a hardcoded salt b"RATLS" for all HKDF operations. There is no key versioning mechanism and no support for key rotation. If the HKDF input keying material (IKM) is compromised at any point, all historically derived keys are also compromised because the salt is static and publicly known.
// kdf.rs:28
const SALT: &[u8] = b"RATLS";
Attack Path
- Attacker compromises the HKDF input keying material (e.g., via a KMS vulnerability)
- Because the salt is static and hardcoded, the attacker can re-derive all keys ever produced by this KDF
- No key versioning means there is no way to distinguish keys from different epochs
- Key rotation requires changing the IKM, but old keys remain derivable from old IKM + static salt
Impact
No forward secrecy in the key derivation hierarchy. Compromise of the IKM at any point reveals all past and future derived keys. The static salt provides no additional entropy or domain separation beyond what the IKM already provides.
Suggested Fix
- Include a version number in the salt or info parameter:
format!("RATLS-v{}", version) - Support key rotation by allowing the salt to be updated periodically
- Consider using a random salt persisted alongside the derived keys
Note: This issue was created automatically. The vulnerability report was generated by Claude and has not been verified by a human.
- Langage dominant
- Rust
- Étoiles
- 551
- Forks
- 97
- Merge moyen
- 19 h 22 min
- PR mergées (30 j)
- 109
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Dstack-TEE/dstack
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
Dstack-TEE/dstack#1301 ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
Dstack-TEE/dstack#1300 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
Dstack-TEE/dstack#1299 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
Dstack-TEE/dstack#1298 ·
-
P0
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
Dstack-TEE/dstack#1297 ·
Toutes les issues de Dstack-TEE/dstack
Issues similaires
-
bug github_actions
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
registrystack/registry-stack#1393 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
longbridge/gpui-kit#3223 ·
-
bug engine
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
rocky-data/rocky#2181 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
oasisprotocol/oasis-sdk#2523 ·
-
[indexer] [QA] Add a focused test for the new NonRetryableError / assertSocketAlive() behavior. Ouvertebot:ai-assisted component:indexer QA-roadmap status:untriaged
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
midnightntwrk/midnight-indexer#1557 ·