我正在嘗試弄清楚 gVisor 如何防止臟牛漏洞 PoC。所以我在 gVisor 中的哨兵中讀取了代碼,看起來哨兵中的 madvise() 已鎖定,因此哨兵可以避免競爭條件。在 pkg/sentry/mm/syscalls.go 中// Decommit implements the semantics of Linux's madvise(MADV_DONTNEED).func (mm *MemoryManager) Decommit(addr usermem.Addr, length uint64) error {...mm.mappingMu.RLock()defer mm.mappingMu.RUnlock()mm.activeMu.Lock()defer mm.activeMu.Unlock()...但我預計 gVisor 避免了臟牛漏洞會有結構性原因。所以我看了gVisor的幾個視頻和文檔,但它們只是證明了gVisor可以防止寫入只讀文件的情況??杀氖?,我找不到其他原因來說明他們如何保護只讀文件免受這些視頻中的利用代碼的影響。這是否意味著如果哨兵在同一點也有競爭條件,就會像普通碼頭工人一樣發生同樣的問題?如果是這樣,Sentry 將嘗試以 root 身份寫入文件,我認為也會出現同樣的問題。還是有我錯過的更根本的原因?
gVisor 如何保護主機免受臟牛 PoC 侵害?
慕碼人8056858
2023-07-31 14:52:22