4 pontos por GN⁺ 2025-06-02 | 2 comentários | Compartilhar no WhatsApp
  • Oniux é uma ferramenta de isolamento em nível de kernel que força todo o tráfego de apps Linux a passar pela rede Tor, minimizando o risco de vazamento de dados
  • Usando namespaces do Linux, isola cada app em um ambiente de rede independente e implementa comunicação segura via Tor
  • Diferente do torsocks, funciona também com binários estáticos ou apps que não usam libc, bloqueando rotas diretas de exfiltração de dados por apps maliciosos
  • O Oniux é baseado no novo Arti e onionmasq e foi escrito em Rust, reforçando tanto a segurança quanto a extensibilidade
  • No momento, o Oniux é uma ferramenta experimental e, em termos de estabilidade, difere do torsocks já consolidado, mas vem chamando atenção como solução de próxima geração para isolamento de tráfego Tor

Apresentando o Oniux

O Oniux é um utilitário de linha de comando que eleva drasticamente o nível de proteção da privacidade por meio do isolamento da rede Tor no Linux. Ele foi projetado para que desenvolvedores, ativistas e pesquisadores possam bloquear completamente a possibilidade de vazamento de dados causada por configurações de proxy incorretas ou pequenos descuidos. O Oniux funciona sobre Arti e onionmasq, isolando qualquer app Linux em um namespace de rede separado e forçando todo o tráfego a passar apenas pela rede Tor.

O que são namespaces no Linux

  • Namespaces são um dos principais mecanismos de isolamento do kernel Linux
  • Eles separam logicamente parte dos recursos de uma aplicação do restante do sistema
  • Recursos diversos como rede, montagens e processos podem ser isolados com essa técnica
  • Cada namespace separa recursos do sistema operacional, sendo usado em ambientes de contêiner e para fins de segurança
  • Soluções de contêiner conhecidas, como o Docker, usam namespaces como princípio básico

O significado de combinar Tor e namespaces

  • Namespaces protegem o acesso à rede Tor de aplicações arbitrárias com isolamento completo
  • Cada app é colocado de forma independente em um namespace de rede, com exposição apenas de uma interface personalizada chamada onion0
  • Como o app não consegue acessar interfaces de rede globais do sistema operacional, como eth0, é possível maximizar a segurança
  • Ao contrário da abordagem de proxy baseada em SOCKS, não há risco de vazamento direto de tráfego por erro ou falha

Comparação entre Oniux e torsocks

  • O torsocks faz hook das funções de rede da libc usando a técnica de LD_PRELOAD para redirecioná-las ao proxy SOCKS do Tor
  • O Oniux opera com isolamento por namespace, impedindo 100% do vazamento de tráfego mesmo em binários estáticos ou apps feitos em Zig, por exemplo
  • Principais pontos de comparação
    • Oniux: não requer daemon Tor separado, usa namespaces, oferece suporte a todos os apps, bloqueia até syscalls raw de apps maliciosos, exclusivo para Linux, novo/experimental, baseado em Arti, escrito em Rust
    • Torsocks: requer daemon Tor, depende de hacking via ld.so, suporta apenas apps ligados à libc, syscalls raw podem vazar, multiplataforma, validado por mais de 15 anos, motor CTor, escrito em C

Como usar o Oniux

  • É necessário um sistema Linux com ambiente de desenvolvimento Rust configurado
  • Pelo terminal, é possível instalar e executar o oniux de forma simples

Principais exemplos de uso:

  • $ oniux curl https://icanhazip.com # Consultar o IP obtido via Tor
  • $ oniux bash # Executar um shell inteiro com isolamento via Tor
  • $ oniux hexchat # Também é possível forçar apps GUI a passar pelo Tor
  • $ RUST_LOG=debug oniux curl ... # Suporte a logging para depuração

Como funciona internamente

  • O Oniux usa a syscall clone(2) para criar um processo filho em namespaces independentes de rede, montagem, PID e usuário
  • O processo filho monta /proc separadamente e ajusta privilégios com mapeamento de UID/GID
  • Um arquivo temporário com informações de nameserver é montado por bind em /etc/resolv.conf, forçando o uso de um resolvedor de nomes baseado em Tor
  • O onionmasq cria uma interface TUN (onion0) e faz a atribuição e configuração do IP
  • O processo filho passa o fd da interface ao processo pai por meio de um socket de domínio Unix, minimizando privilégios
  • Por fim, ele usa recursos do Rust para executar o comando informado pelo usuário

O caráter experimental do Oniux

  • O Oniux é uma versão inicial construída sobre novas tecnologias como Arti e onionmasq
  • Neste momento ele funciona corretamente, mas ainda carece da longa experiência e maturidade acumuladas por ferramentas como o torsocks
  • Para garantir estabilidade e melhorar o desempenho, são necessários diversos feedbacks de uso real

Créditos e apoio

  • Agradecimentos a desenvolvedores como o smoltcp, uma pilha IP baseada em Rust, e 7ppKb5bW, que orientou sobre o uso de namespaces de usuário no desenvolvimento
  • O projeto oniux é mantido com apoio do The Tor Project e da comunidade, e recomenda-se apoio para o avanço da privacidade e do software livre

2 comentários

 
ndrgrd 2025-06-03

O Tor parece não ser ruim para privacidade, mas não tenho certeza se é uma ferramenta adequada para anonimato. Também há relatos de que os nós de saída já estão sob controle de órgãos estatais.

 
GN⁺ 2025-06-02
Comentários do Hacker News
  • Há cerca de 10 anos, quando namespaces de rede estavam em alta, tive uma conversa com um desenvolvedor do Tor sobre esse tema. O feedback que recebi na época foi que o isolamento via namespaces fazia as pessoas se sentirem seguras, mas ainda assim muita informação identificável podia vazar, então lembro que acabaram não levando isso adiante.
    • Acho que foi um erro estratégico da equipe do Tor enfatizar tanto esse ponto. Faz sentido dizer que pessoas expostas a ameaças sérias devem usar o Tor Browser e também se preocupar com outros vetores de vazamento, mas se o Tor tivesse se tornado o padrão para todo mundo, a vigilância em massa em si teria ficado muito mais difícil. Hoje, o simples fato de alguém usar Tor já vira alvo de vigilância, mas se todo mundo usasse essa informação perderia o sentido.
    • torsock e torify também cumprem basicamente o mesmo papel, mas passam uma sensação menor de robustez.
  • Do jeito que está no guia de instalação, não funciona. É preciso mudar o número da versão de 0.4.0 para 0.5.0
    cargo install --git https://gitlab.torproject.org/tpo/core/oniux oniux@0.5.0
  • Eu inicialmente achei que, como no torsocks, o tráfego sairia por um daemon local do tor. Mas mesmo desligando o daemon local do tor, o oniux continua funcionando normalmente, enquanto torify e torsocks não funcionam. Pela documentação, é realmente assim que funciona. Um fato bem curioso. Também funcionou bem no docker, mas precisei usar a opção --privileged, e tive a experiência de simplesmente copiar o binário para um contêiner debian:12 e tudo funcionar normalmente
    docker run -it --rm --privileged -v "$PWD/oniux:/usr/bin/oniux" debian:12
  • Fico me perguntando se tudo isso se aplica só a TCP. Ou seja, será que tráfego não-TCP também fica protegido?
    • Não sei os detalhes, mas vendo https://gitlab.torproject.org/tpo/core/onionmasq, parece ser uma tentativa de criar uma pilha de rede em espaço de usuário que suporta não só TCP, mas também UDP, encaminhando para a rede Tor.
    • Fico curioso sobre como quem usa o Tor Browser lida com YouTube, DNS e HTTP/3.
    • Tráfego não-TCP não é roteado; a transmissão simplesmente falha.
  • O Oniux parece ser uma ferramenta oficialmente suportada. É parecido com o orjail, mas o orjail não teve commits em 4 anos e ainda assim continua funcionando bem como script de shell junto com ferramentas iptables/iproute
    O orjail também tem uma opção de isolamento adicional com firejail, algo que o Oniux ainda não tem
    https://github.com/orjail/orjail/blob/master/usr/sbin/orjail
  • Agora fiquei curioso se dá para acessar sites .tor pelo chrome.
    • Dá para fazer, mas eu recomendaria não fazer isso. O chrome não tem as várias estratégias de anti-fingerprinting que existem no Tor Browser. Ao usar um navegador comum, você acaba se destacando ainda mais.
    • Na verdade, isso já era possível faz tempo, bastando configurar corretamente a variável de ambiente de proxy (ou a própria configuração). A porta padrão do daemon tor é 9050. Também é relativamente fácil escrever diretamente para um proxy socks e rotear o tráfego. Por exemplo, dá para enviar tráfego de algo como o syncthing por um proxy socks5
      https://github.com/acheong08/syndicate
  • O exemplo usa hexchat, mas se ele aproveitar as configurações de perfil do usuário, será que o nome de usuário do IRC não vaza?
    Ao iniciar um navegador, coisas como cookies também podem vazar.
    • A separação de papéis é importante. O Tor realmente faz muito esforço para evitar fingerprinting, mas no fundo o objetivo do Tor e do Oniux é impedir o rastreamento do IP de origem. O mesmo problema existe se você entrar no Gmail via Tor (a menos que HTTPS não esteja sendo usado).
    • Fico curioso sobre o que exatamente significa “vazar o nome de usuário”. Na prática, isso só revela que aquele nome de usuário está usando Tor. Se o mesmo nome de usuário continuar acessando o mesmo host IRC, dá para inferir que é a mesma pessoa. IRC é um meio bem arriscado se a intenção for anonimato. Muita gente registra logs relacionando isso a eventos como quedas de conexão, então há risco de exposição por correlação.
  • A parte de DevEx (experiência de desenvolvimento) está muito bem feita, a ponto de parecer praticamente à prova de idiotas. Quero aplaudir a equipe de desenvolvimento.
    • Na verdade, acho que não completamente. Idiotas sempre são criativos, e garantir anonimato exige uma operação muito cuidadosa, num nível difícil de esperar da maioria dos usuários.
  • Se reescreverem o código em C, eu usaria com prazer.
    • Já foi escrito em Rust. Fico curioso por que alguém iria querer especificamente uma versão em C.