Команда разработчиков проекта Tor Project представила открытое решение под названием oniux для изоляции Tor на уровне ядра для любого приложения Linux. Исходный код проекта написан на Rust и опубликован под лицензией MIT.
«При запуске критически важных для конфиденциальности приложений и служб разработчики хотят быть уверены, что каждый пакет действительно проходит только через Tor. Одна неправильно набранная настройка прокси‑сервера или один системный вызов вне оболочки SOCKS — и ваши данные внезапно оказываются под угрозой. Вот почему сегодня мы рады представить oniux: небольшую утилиту командной строки, обеспечивающую сетевую изоляцию Tor для сторонних приложений, использующих пространства имен Linux. Созданная на основе Arti и onionmasq, oniux помещает любую программу Linux в собственное сетевое пространство имён для маршрутизации ее через Tor и устраняет потенциальную возможность утечки данных. Если ваша работа или исследование требуют надёжной изоляции трафика, oniux её обеспечивает.
Мы помещаем каждое приложение в сетевое пространство имён, которое не предоставляет доступ к общесистемным сетевым интерфейсам (например, eth0), а вместо этого предоставляет настраиваемый сетевой интерфейс onion0. Это позволяет нам изолировать произвольное приложение через Tor наиболее безопасным способом с точки зрения программного обеспечения, а именно, полагаясь на примитив безопасности, предлагаемый ядром операционной системы. В отличие от SOCKS, приложение не может случайно слить данные, не установив какое‑либо соединение через настроенный SOCKS, что может произойти из‑за ошибки разработчика»,
— пояснили в Tor Project.
Разработчики пояснили, что уже есть инструмент с похожей целью, известный как torsocks, который работает путём перезаписи всех сетевых функций libc таким образом, чтобы маршрутизировать трафик через прокси-сервер SOCKS, предлагаемый Tor. У этого проекта есть заметный недостаток, заключающийся в том, что приложения, выполняющие системные вызовы не через динамически связанную libc, как со злым умыслом, так и без него, могут позволять утечку данных. Также там исключена поддержка чисто статических двоичных файлов и приложений из экосистемы Zig.
Базовое сравнение oniux и torsocks
Проект oniux порождает дочерний процесс с помощью системного вызова clone(2), который изолирован в своей собственной сети от PID и пространства имён пользователя. Затем этот процесс монтирует свою собственную копию /proc, за которой следуют сопоставления UID и GID с соответствующими UID и GID родительского процесса. После этого он создаёт временный файл с записями сервера имён, который затем будет смонтирован в /etc/resolv.conf, так что приложения, работающие внутри, будут использовать пользовательский преобразователь имён, поддерживающий преобразование через Tor. Затем дочерний процесс oniux использует onionmasq для создания интерфейса TUN с именем onion0, за которым следуют некоторые операции rtnetlink(7), необходимые для настройки интерфейса, такие как назначение IP-адресов. Затем дочерний процесс oniux отправляет дескриптор файла интерфейса TUN через сокет домена Unix родительскому процессу, который ждал этого сообщения с момента выполнения начального clone(2). После этого дочерний процесс oniux теряет все свои возможности, которые были приобретены в качестве корневого процесса в пространстве имён пользователя. Наконец, команды в oniux, выполняются с использованием средств, предоставляемых стандартной библиотекой Rust.
«oniux является экспериментальной опцией. Хотя это не должно отговаривать вас от использования oniux, вы должны помнить, что это относительно новая функция, которая использует новое программное обеспечение Tor, такое как Arti и onionmasq. Хотя на данный момент всё работает так, как и ожидалось, такие инструменты, как torsocks, существуют уже более 15 лет, что дает им больше опыта на поле боя. Но мы хотим достичь похожего состояния с oniux, поэтому, пожалуйста, продолжайте тестировать этот инструмент или начните это делать», — подытожили в Tor Project.
Источник: habr.com