Security: App keys and decrypted env vars written with world-readable permissions
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 58/100
Rechercherichtung
Beginne in dstack-util/src/system_setup.rs beim AppKeys-Schreibvorgang um die Zeilen 1350–1351 und bei den Schreibvorgängen der entschlüsselten Umgebungsvariablen um die Zeilen 1409–1419. Lies, wie diese Dateien geöffnet und geschrieben werden, und überprüfe anschließend, dass neu geschriebene geheime Dateien auf den Besitzer beschränkt sind und nicht für alle lesbar sind. Erledigt ist die Aufgabe, wenn beide Schreibpfade restriktive Berechtigungen verwenden und die bestehenden Rust-Prüfungen erfolgreich sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- Rust
- Sterne
- 551
- Forks
- 97
- Ø Merge
- 1 T. 8 Std.
- Gemergte PRs (30 T.)
- 182
Entwicklungsumgebung
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus Dstack-TEE/dstack
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
Dstack-TEE/dstack#1384 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
Dstack-TEE/dstack#1301 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
Dstack-TEE/dstack#1300 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
Dstack-TEE/dstack#1299 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
Dstack-TEE/dstack#1298 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in Dstack-TEE/dstack
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
trailofbits/dylint#2107 ·
Maintainer antworten meist innerhalb von 1 Tag
-
area:cli bug good first issue priority:medium
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 90/100
rtk-ai/rtk#4289 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
arrays_zip with two same-named inputs fails with "ArrowArray struct has 2 children (expected 1)"Offenbug requires-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
apache/datafusion-comet#6251 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug false-positive harper-core linting
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Automattic/harper#4471 ·
Maintainer antworten meist innerhalb von 1 Tag