Security: App keys and decrypted env vars written with world-readable permissions
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 58/100
Piste de recherche
Commencez dans dstack-util/src/system_setup.rs, au niveau de l’écriture de AppKeys vers les lignes 1350-1351 et des écritures des variables d’environnement déchiffrées vers les lignes 1409-1419. Lisez comment ces fichiers sont ouverts et écrits, puis vérifiez que les nouveaux fichiers secrets écrits sont accessibles uniquement par leur propriétaire plutôt que lisibles par tout le monde. C’est terminé lorsque les deux chemins d’écriture utilisent des permissions restrictives et que les vérifications Rust existantes réussissent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Note: This issue documents a vulnerability that was originally reported privately as the repository security advisory GHSA-535m-2x67-prhm by @pbeza.
Root Cause
fs::write() is used with default permissions (0o644) to write AppKeys to the filesystem. The AppKeys structure contains disk_crypt_key, env_crypt_key, and k256_key — all highly sensitive cryptographic secrets. Similarly, decrypted environment variables are written to files with default world-readable permissions.
// Default fs::write() creates files with 0o644 permissions
fs::write(&app_keys_path, serde_json::to_string(&app_keys)?)?;
Attack Path
- Any process inside the CVM can read
/path/to/app-keys.json - Attacker compromises any container workload (web vulnerability, dependency exploit, etc.)
- Compromised process reads
app-keys.jsonwithdisk_crypt_key,env_crypt_key,k256_key - Attacker can decrypt the disk, decrypt environment variables, and use the k256 signing key
Impact
Any compromised process inside the CVM can read all application cryptographic keys and decrypted environment variables. This includes the disk encryption key (enables offline disk reading), the env encryption key (decrypts all environment secrets), and the k256 key (enables signing as the CVM).
Suggested Fix
Set restrictive permissions before writing:
use std::os::unix::fs::OpenOptionsExt;
let mut file = std::fs::OpenOptions::new()
.write(true)
.create(true)
.truncate(true)
.mode(0o600)
.open(&app_keys_path)?;
file.write_all(serde_json::to_string(&app_keys)?.as_bytes())?;
Consider further restricting to 0o400 (read-only by owner) after the initial write.
Note: This finding was reported automatically as part of an AI/Claude-driven internal audit by the NEAR One MPC team. It has not been manually verified by a human to confirm whether it constitutes an actual security issue.
- Langage dominant
- Rust
- Étoiles
- 555
- Forks
- 99
- Merge moyen
- 1 j 3 h
- PR mergées (30 j)
- 195
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire 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 35/100
Dstack-TEE/dstack#1384 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
Dstack-TEE/dstack#1301 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
Dstack-TEE/dstack#1300 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
Dstack-TEE/dstack#1299 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
Dstack-TEE/dstack#1298 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de Dstack-TEE/dstack
Issues similaires
-
C-bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
rust-lang/rust-analyzer#23501 ·
Les mainteneurs répondent en général sous 1 jour
-
Streamable HTTP client: a 401 or 403 with a JSON-RPC error body and no WWW-Authenticate loses its HTTP statusPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertebug P2 ready for work T-security T-transport
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
modelcontextprotocol/rust-sdk#1339 ·
Les mainteneurs répondent en général sous 3 jours
-
French BIP39 wordlist starts with a UTF-8 BOM, so generated French mnemonics carry U+FEFF and derive a non-canonical seedPeut-être pris @Kshot3000 l’a pris aujourd’hui. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 91/100
ergoplatform/sigma-rust#976 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
[Bug]: Web chat input doesn't regain focus after a reply finishesPeut-être pris @GaijinSystems l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
zeroclaw-labs/zeroclaw#11658 ·
Les mainteneurs répondent en général sous 2 jours