Как gVisor может защитить хост от грязного PoC коровы? - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь выяснить, как gVisor может предотвратить уязвимость PoC для грязной коровы.

, поэтому я читаю код в sentry в gVisor, и кажется, что madvise () в sentry имеет блокировку, поэтому часовой может избежать состояния гонки.

в 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 попытается записать в файл как корень, и я думаю, что возникнет та же проблема.

Или есть более фундаментальная причина, по которой я пропустил?

1 Ответ

0 голосов
/ 15 октября 2019

Из списка рассылки gVisor:

gVisor блокирует диспетчер памяти, чтобы избежать состояния гонки DirtyCow. Тем не менее, нет ничего фундаментального в gVisor Sentry, который защищает его от потенциально опасных условий гонки, кроме хороших методов кодирования и тестирования.

Более фундаментальная защита gVisor заключается в том, что Sentry имеет два уровня изоляции от хоста. Он запускается как процесс пользовательского пространства в заблокированном контейнере Linux. Таким образом, даже если злоумышленник обнаружит ошибку, позволяющую ему выполнить код в Sentry, злоумышленнику потребуется независимая ошибка на небольшой поверхности атаки Linux, которая доступна в контейнере Linux. Эта защита применяется ко многим типам проблем безопасности, а не только к DirtyCow.

- https://groups.google.com/d/msg/gvisor-users/ze-6LpPoDcQ/Y1jScf32CQAJ

...