[Critical] Potential data loss in OCI spec Flush() - file truncated before write
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
Direzione di ricerca
Inizia da internal/oci/spec_file.go, in particolare da fileSpec.Flush() e dalla chiamata esistente a flushTo() descritta nell’issue. Controlla come viene aperto e sostituito il file, poi cerca i test pertinenti sul flush della spec OCI. Il lavoro è completato quando una scrittura non riuscita lascia intatta la spec originale e un flush riuscito la aggiorna.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug Report
Severity
Critical
Description
In internal/oci/spec_file.go, the Flush() method truncates the OCI specification file using os.Create(s.path) before writing new content via flushTo().
If the write operation fails (e.g., disk full, I/O error, permission denied), the original OCI config.json is already destroyed and cannot be recovered.
Affected File
internal/oci/spec_file.go(lines 99-111)
Current Behavior
func (s fileSpec) Flush() error {
if s.Spec == nil {
return fmt.Errorf("no OCI specification loaded")
}
specFile, err := os.Create(s.path) // ← TRUNCATES FILE HERE
...
return flushTo(s.Spec, specFile) // ← IF THIS FAILS, DATA IS LOST
}
### Expected Behavior
Write to a temporary file first, then perform an atomic rename/replace only after the write succeeds. This prevents data loss if the write operation fails.
### Impact
- Container runtime configuration (OCI spec) can be permanently destroyed
- Containers using the affected OCI spec will fail to start
- No recovery mechanism if the write fails mid-operation
### Proposed Fix
1. Write modified spec to a temporary file in the same directory
2. If write succeeds, atomically rename temp file to target path
3. If write fails, original file remains intact
### Additional Context
This code path is executed when `nvidia-container-runtime-hook` or `nvidia-container-runtime` applies OCI spec modifications before starting a GPU container.
- Lingua principale
- Go
- Stelle
- 4.6k
- Fork
- 612
- Merge medio
- 2g 14h
- PR unite (30g)
- 41
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NVIDIA/nvidia-container-toolkit
-
[Bug]: Containers with NVIDIA_VISIBLE_DEVICES=all fail to start in jit-cdi mode when every GPU is bound to vfio-pciForse già presa @efegokdemir l’ha presa 11 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
NVIDIA/nvidia-container-toolkit#2163 ·
I maintainer di solito rispondono entro 1 giorno
-
Address TODO comments in internal/platform-support/dgpu/dgpu.goForse già presa @truongbo17 l’ha presa 37 giorni fa. Apertadsx-ws-0930 good-first-issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
NVIDIA/nvidia-container-toolkit#2114 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: nvidia-cdi-refresh.service fails at boot when NVreg_DeviceFileGID is non-zero: CapabilityBoundingSet lacks CAP_CHOWNForse già presa @akhil9tiet l’ha presa 2 giorni fa. Apertabug needs-triage
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
NVIDIA/nvidia-container-toolkit#2210 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Release NVIDIA Container Toolkit v1.20.2Forse già presa @cdesiniotis l’ha presa 2 giorni fa. Apertaneeds-triage release
NVIDIA/nvidia-container-toolkit#2209 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
NVIDIA/nvidia-container-toolkit#2197 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di NVIDIA/nvidia-container-toolkit
Issue simili
-
book-layout.spec fails when the similar-books rail holds other projects' booksForse già presa @praetorianer777 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
praetorianer777/GoTome#373 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
-
/shutdown/ready can fail to return an HTTP response when readiness takes longer than the server write timeoutForse già presa @floriankoch l’ha presa oggi. Apertatriage
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
envoyproxy/gateway#10562 ·
I maintainer di solito rispondono entro 1 giorno
-
Adding an LDAP group reports every search failure as "LDAP Group DN is not found"Forse già presa @Daksha1611 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno