
Hajiz: rootless Linux‑sandbox на Rust — namespaces, Landlock, seccomp‑BPF и eBPF‑аудит без sudo
hag19 5 минут назад Hajiz: rootless Linux‑sandbox на Rust — namespaces, Landlock, seccomp‑BPF и eBPF‑аудит без sudo Средний 8 мин 172 Rust * Linux * Из песочницы Привет, Хабр.Я написал с нуля инструмент для изоляции...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Значимый прорыв формирует отрасль ИИ: hag19 5 минут назад Hajiz: rootless Linux‑sandbox на Rust — namespaces, Landlock, seccomp‑BPF и eBPF‑аудит без sudo Средний 8 мин 172 Rust * Linux * Из песочницы Привет, Хабр. Я написал с нуля инструмент для изоляции Linux‑приложений на Rust — Hajiz. Это учебный проект по системной безопасности, который вырос во что‑то, чем можно реально пользоваться.
Хочу рассказать, как он устроен изнутри: почему порядок применения механизмов изоляции критичен, как работает eBPF‑аудит с privilege separation, и зачем всё это когда есть Docker. com/hag19/hajizИдея и постановка задачиЗадача: запустить недоверенный бинарь так, чтобы он не мог навредить системе. Без демона, без setuid‑хелпера, без kernel‑модуля, без sudo для типичного случая.
Технические детали
Думайте о Hajiz как о младшем брате bubblewrap и firejail — меньше, прозрачнее, с дополнительным режимом аудита, который сам учится что нужно бинарю и генерирует политику. Модель угроз:Доверяем: ядру, бинарю hajiz, файлам профилей. Не доверяем: изолируемому бинарю и всему, что он производит.
Защищаем от: побега из filesystem, повторного входа в namespace, утечки в сеть, злоупотребления capabilities, syscall‑эксплойтов, privilege escalation через exec(). Вне scope: side‑channel атаки (Spectre/timing), kernel‑эксплойты, аппаратные атаки, скомпрометированный сам hajiz. Что применяется под капотомHajiz собирает несколько механизмов безопасности ядра в одну связную систему с моделью default‑deny — всё запрещено, вы явно разрешаете только то, что нужно.
Linux NamespacesПри запуске создаются новые пространства имён:unshare(CLONE_NEWUSER | CLONE_NEWNS | CLONE_NEWIPC | CLONE_NEWUTS | CLONE_NEWNET) Пишется identity‑маппинг в /proc/self/uid_map и /proc/self/gid_map — UID снаружи совпадает с UID внутри, никаких скрытых привилегий. Затем корень перемонтируется как MS_PRIVATE, чтобы монтирования sandbox не утекали в хост. Три режима сети:РежимПоведениеnone (по умолчанию)Собственный netns без интерфейсов — полный офлайнloopbackСобственный netns с lo UP и 127.
Отраслевые последствия
1/8 — только локальные сервисыfullХостовая сеть; на kernel ≥ 6. 7 всё равно применяются Landlock port allowlists2. CapabilitiesЧетыре шага, и порядок важен:PR_CAPBSET_DROP для всего bounding set (нужен CAP_SETPCAP — он ещё есть)PR_CAP_AMBIENT_CLEAR_ALL — чистим ambient setcapset(0, 0, 0) — обнуляем effective/permitted/inheritableprctl(PR_SET_NO_NEW_PRIVS) — даже setuid‑бинарь не сможет повысить привилегии3.
Landlock (filesystem + TCP‑порты)Начиная с Linux 5. 13 — per‑path allowlists. 7 — ещё и ограничение TCP‑портов.
На старых ядрах правила пропускаются с предупреждением. # read-only /usr, writable /tmp hajiz --fs /usr:ro --fs /tmp:rw /usr/bin/python3 script.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





