gVisor
| Тип | пісочниця для контейнерів |
|---|---|
| Розробник | |
| Перший випуск | 2 травня 2018 |
| Операційна система | Linux |
| Мова програмування | Go |
| Ліцензія | Apache License 2.0 |
| Репозиторій | https://github.com/google/gvisor |
| Вебсайт | gvisor |
gVisor (gVisor) — відкрита пісочниця для контейнерів, яку розробила Google. Наголос зроблено на безпеці, ефективності й простоті використання.[1][2] Вона дає ізоляцію, подібну до віртуалізації, і водночас зберігає ощадливість звичайних контейнерів. gVisor перехоплює системні виклики застосунку і реалізує велику частину ABI системних викликів Linux у просторі користувача. Це додатковий захист порівняно зі звичайними контейнерами, які працюють просто на ядрі Linux і відділені лише просторами імен.[3][4] На відміну від ядра Linux, gVisor написано мовою Go, безпечною щодо пам’яті, щоб уникати типових помилок програм на C.[5] Серед новіших можливостей — контрольна точка й відновлення, а також підтримка графічних процесорів Nvidia з CUDA і TPU Google Cloud для навантажень штучного інтелекту.[2][6][7]
За даними Google[8] і Бреда Фіцпатрика,[9] gVisor широко використовують у промисловому середовищі Google, зокрема в стандартному середовищі App Engine, у Cloud Functions і в Google Cloud Run.[10] Його також вбудовано в Google Kubernetes Engine (GKE Sandbox), тож поди Kubernetes можна ізолювати для випадків на зразок SaaS і багатоквартирності.[11] У жовтні 2026 року Google оголосила, що передає gVisor до Cloud Native Computing Foundation (CNCF) як проєкт пісочниці.[12]
Поза Google gVisor використовують Ant Group, DigitalOcean (для App Platform), Cloudflare (для збирань Cloudflare Pages), Snowflake і інструмент Dangerzone від Freedom of the Press Foundation. OpenAI і Anthropic запускають у gVisor ненадійний або згенерований штучним інтелектом код. Docker (у Docker Desktop для Mac) і Tailscale використовують бібліотеку netstack для мережі в просторі користувача.[13] У липні 2026 року OpenAI повідомила команді gVisor про проблему пісочниці. Команда сказала, що випустила виправлення наступного тижня і що для експлуатації потрібна нестандартна конфігурація, від якої документація відраджує.[14]
gVisor працює як ядро застосунку: перехоплює системні виклики й відмови сторінок самої пісочниці, а не передає їх ядру Linux хоста.[15]
runsc— виконуваний файл середовища виконання контейнерів OCI. Він стикується з Docker, containerd і Kubernetes, щоб запускати пісочниці й керувати ними.[15]- Sentry — ядро gVisor у просторі користувача, написане мовою Go. Воно реалізує велику підмножину інтерфейсу системних викликів Linux, а також керування процесами, сигнали й мережу через власний стек netstack.[16] Логіка виконується в коді gVisor, безпечному щодо пам’яті, а не в ядрі хоста.[15]
- Gofer — необов’язковий окремий процес із трохи більшими правами. Він посередникує доступ до файлової системи хоста і спілкується з Sentry протоколом LISAFS, який замінив 9P. Типово, коли ввімкнено directfs, Gofer передає Sentry файлові дескриптори монтувань контейнера, і той сам робить обмежені системні виклики відносно дескриптора. Якщо directfs вимкнено, усі файлові операції йдуть через Gofer.[15][17][18]
Щоб зменшити поверхню атаки на хост, Sentry працює під жорстким фільтром seccomp і в ізольованих просторах імен користувача й монтування. Навіть невеликий набір системних викликів хоста, які йому дозволено, сильно обмежено.[15] Це другий шар захисту: самої вади в Sentry не досить, щоб вийти на хост.[15][19] Як і інші пісочниці, gVisor загалом не захищає від апаратних атак бічними каналами, зокрема Spectre. Їх має пом’якшувати ядро хоста або обладнання.[15][20]
gVisor має перехопити системні виклики застосунку в пісочниці й спрямувати їх у Sentry. Це приховано за інтерфейсом «платформи». Зараз їх дві.
- Systrap використовує можливість
SECCOMP_RET_TRAPпідсистеми seccomp-bpf: системний виклик у пісочниці породжує сигналSIGSYS, і керування переходить до gVisor. Апаратна віртуалізація не потрібна, тож платформа працює навіть усередині віртуальних машин і є найпереноснішою. У середині 2023 року Systrap замінив старішу платформу ptrace як типову.[21] - KVM використовує KVM ядра: Sentry водночас є гостьовим ядром і монітором віртуальної машини. На «голому» залізі це найшвидший варіант, але вкладена віртуалізація його уповільнює, а без відповідних розширень віртуалізації він недоступний.[21]
Початкова платформа ptrace на основі PTRACE_SYSEMU лишається в коді, але більше не підтримується.[21]
- Контрольна точка й відновлення.
runscможе зберегти на диск стан ядра й пам’яті працюючої пісочниці і відновити його в новому контейнері, зокрема для навантажень на графічних процесорах CUDA через утилітуcuda-checkpointвід NVIDIA.[22] - Прокидання GPU і TPU. Драйвери nvproxy і tpuproxy перехоплюють виклики
ioctlіmmapна віртуальних файлах прискорювача, перекладають вказівники й файлові дескриптори з адресного простору пісочниці і передають дозволену підмножину викликів драйверам прискорювача на хості. Ці виклики обробляє драйвер ядра хоста, а не емуляція в Sentry, тож вади тих драйверів лишаються частиною поверхні атаки.[6][7]
Оскільки Sentry перехоплює системні виклики в просторі користувача, накладні витрати найбільші на навантаженнях із багатьма системними викликами і вводом-виводом і майже не помітні на обчисленнях, які виконуються у власному адресному просторі. Документація зазначає, що після встановлення відображень саме виконання на процесорі, доступ до пам’яті й дисковий ввід-вивід не мають істотних структурних накладних витрат.[23] Щоб зменшити витрати на файлову систему, gVisor типово вмикає записуваний кореневий оверлей tmpfs і directfs, щоб не ходити щоразу до Gofer.[17][18]
- ↑ Lacasse, Nicolas (2 травня 2018). Open-sourcing gVisor, a sandboxed container runtime. Google Cloud Blog (англ.). Процитовано 21 жовтня 2026.
- 1 2 The Container Security Platform. gvisor.dev (англ.). Процитовано 21 жовтня 2026.
- ↑ Updates in container isolation. LWN.net (англ.). Процитовано 18 лютого 2019.
- ↑ Sandboxing with gVisor (англ.). 17 червня 2018. Процитовано 18 лютого 2019.
- ↑ Cutler, Cody; Kaashoek, M. Frans; Morris, Robert T. (2018). The benefits and costs of writing a POSIX kernel in a high-level language (англ.). с. 89—105. ISBN 978-1-939133-08-3.
- 1 2 GPU Support. gvisor.dev (англ.). Процитовано 20 жовтня 2026.
- 1 2 TPU Support. gvisor.dev (англ.). Процитовано 20 жовтня 2026.
- ↑ GKE Sandbox: Bring defense in depth to your pods. Google Cloud Blog (англ.). Архів оригіналу за 21 травня 2019. Процитовано 28 травня 2019.
- ↑ @bradfitz (4 травня 2018). Brad Fitzpatrick Twitter (Твіт) (англ.). Процитовано 18 лютого 2019 — через Твіттер.
- ↑ Container runtime contract. Google Cloud (англ.). Процитовано 10 квітня 2019.
- ↑ GKE Sandbox. Google Cloud Documentation (англ.). Процитовано 27 жовтня 2026.
- ↑ gVisor is being donated to CNCF. gvisor.dev (англ.). 2 жовтня 2026. Процитовано 20 жовтня 2026.
- ↑ Who's Using gVisor. gvisor.dev (англ.). Процитовано 20 жовтня 2026.
- ↑ Emerson Redding (23 жовтня 2026). Exclusive: gVisor says OpenAI's sandbox issue required a discouraged configuration. RuntimeWire (англ.). Процитовано 29 жовтня 2026.
- 1 2 3 4 5 6 7 Introduction to gVisor security. gvisor.dev (англ.). Процитовано 25 червня 2026.
- ↑ Networking Guide. gvisor.dev (англ.). Процитовано 20 жовтня 2026.
- 1 2 Filesystem. gvisor.dev (англ.). Процитовано 20 жовтня 2026.
- 1 2 Faster filesystem access with Directfs. gvisor.dev (англ.). 27 червня 2023. Процитовано 20 жовтня 2026.
- ↑ Security and Vulnerability Reporting. gvisor.dev (англ.). Процитовано 20 жовтня 2026.
- ↑ Security Model. gvisor.dev (англ.). Процитовано 20 жовтня 2026.
- 1 2 3 Platform Guide. gvisor.dev (англ.). Процитовано 25 червня 2026.
- ↑ Checkpoint/Restore. gvisor.dev (англ.). Процитовано 20 жовтня 2026.
- ↑ Performance Guide. gvisor.dev (англ.). Процитовано 20 жовтня 2026.