4 points par GN⁺ 2025-06-02 | 2 commentaires | Partager sur WhatsApp
  • Oniux est un outil d’isolation au niveau du noyau qui force tout le trafic des applications Linux à transiter par le réseau Tor, afin de minimiser le risque de fuite de données
  • En s’appuyant sur les namespaces Linux, il isole chaque application dans un environnement réseau indépendant et met en œuvre des communications sécurisées via Tor
  • Contrairement à torsocks, il fonctionne aussi avec des applications sans libc ou des binaires statiques, bloquant ainsi les voies directes de fuite de données pour les applications malveillantes
  • Oniux repose sur les nouveaux composants Arti et onionmasq et est écrit en Rust, ce qui renforce à la fois la sécurité et l’extensibilité
  • À ce stade, Oniux reste un outil expérimental : il diffère donc de torsocks, éprouvé en matière de stabilité, mais attire l’attention comme solution de nouvelle génération pour l’isolation du trafic Tor

Présentation d’Oniux

Oniux est un utilitaire en ligne de commande qui améliore fortement le niveau de protection de la vie privée grâce à l’isolation réseau Tor sur Linux. Il est conçu pour permettre aux développeurs, activistes et chercheurs d’éliminer totalement les risques de fuite de données dus à une mauvaise configuration de proxy ou à un simple moment d’inattention. Oniux fonctionne au-dessus d’Arti et d’onionmasq, et isole n’importe quelle application Linux dans un namespace réseau distinct pour forcer tout son trafic à passer uniquement par le réseau Tor.

Qu’est-ce qu’un namespace Linux ?

  • Un namespace est l’un des principaux mécanismes d’isolation du noyau Linux
  • Il permet de séparer logiquement certaines ressources d’une application du reste du système
  • Divers types de ressources, comme le réseau, les points de montage ou les processus, peuvent être isolés avec cette technique
  • Chaque namespace sépare des ressources du système d’exploitation, ce qui permet un usage dans les environnements conteneurisés ou à des fins de sécurité
  • Des solutions de conteneurisation bien connues comme Docker s’appuient sur les namespaces comme principe de base

Ce que signifie la combinaison de Tor et des namespaces

  • Les namespaces permettent de protéger l’accès au réseau Tor d’une application arbitraire grâce à une isolation complète
  • Chaque application est placée de manière indépendante dans un namespace réseau, avec pour seule interface exposée une interface personnalisée appelée onion0
  • Comme l’application ne peut pas accéder aux interfaces réseau globales du système d’exploitation (par ex. eth0), il devient possible de maximiser la sécurité
  • Contrairement à une approche par proxy SOCKS, il n’existe aucun risque de fuite directe de trafic, même en cas d’erreur ou de défaut

Comparaison entre Oniux et torsocks

  • Torsocks intercepte les fonctions réseau de libc via la technique LD_PRELOAD afin de les rediriger vers le proxy SOCKS de Tor
  • Oniux fonctionne grâce à l’isolation par namespaces, ce qui empêche à 100 % les fuites de trafic, y compris avec des binaires statiques ou Zig
  • Principaux points de comparaison
    • Oniux : pas besoin de démon Tor séparé, utilisation des namespaces, prise en charge de toutes les applications, blocage aussi des appels système bruts des applications malveillantes, Linux uniquement, nouveau/expérimental, basé sur Arti, écrit en Rust
    • Torsocks : démon Tor requis, détournement via ld.so, prise en charge seulement des applications liées à libc, les appels système bruts peuvent fuir, multiplateforme, éprouvé depuis plus de 15 ans, moteur CTor, écrit en C

Utilisation d’Oniux

  • Un système Linux avec environnement de développement Rust configuré est nécessaire
  • Oniux peut être installé et exécuté simplement en ligne de commande

Exemples d’utilisation principaux :

  • $ oniux curl https://icanhazip.com # Vérifier l’IP obtenue via le routage Tor
  • $ oniux bash # Exécuter un shell entier avec isolation Tor
  • $ oniux hexchat # Forcer aussi une application GUI à passer par Tor
  • $ RUST_LOG=debug oniux curl ... # Prise en charge de la journalisation de débogage

Principe de fonctionnement interne

  • Oniux crée un processus enfant dans des namespaces réseau, montage, PID et utilisateur indépendants via l’appel système clone(2)
  • Le processus enfant monte /proc de manière distincte et ajuste les autorisations via le mappage UID/GID
  • Un fichier temporaire contenant les informations du serveur de noms est monté par liaison sur /etc/resolv.conf afin d’imposer l’usage d’un résolveur de noms basé sur Tor
  • onionmasq crée ensuite une interface TUN (onion0) et lui assigne une IP ainsi que sa configuration
  • Le processus enfant transmet ensuite le descripteur de fichier de l’interface au processus parent via un socket de domaine Unix, tout en réduisant au minimum les privilèges
  • Enfin, Oniux utilise des fonctionnalités de Rust pour exécuter la commande saisie par l’utilisateur

Le caractère expérimental d’Oniux

  • Oniux est une première version construite sur des technologies récentes comme Arti et onionmasq
  • Il fonctionne correctement à l’heure actuelle, mais manque encore du retour d’expérience accumulé pendant de longues années par un outil mature comme torsocks
  • Divers retours d’usage en conditions réelles sont nécessaires pour améliorer la stabilité et les performances

Crédits et soutien

  • Les auteurs remercient des développeurs comme 7ppKb5bW, qui ont contribué par leurs conseils sur smoltcp, la pile IP écrite en Rust, et sur l’utilisation des namespaces utilisateur
  • Le projet oniux est maintenu grâce au soutien du The Tor Project et de la communauté, et les dons sont encouragés pour faire progresser la vie privée et les logiciels open source

2 commentaires

 
ndrgrd 2025-06-03

Tor n’est pas mal pour la vie privée, mais je ne sais pas vraiment si c’est un outil adapté à l’anonymat. On entend aussi dire que les nœuds de sortie sont déjà sous le contrôle des autorités étatiques.

 
GN⁺ 2025-06-02
Avis Hacker News
  • Il y a une dizaine d’années, quand les espaces de noms réseau étaient un sujet brûlant, j’en avais discuté avec un développeur de Tor. Le retour que j’avais eu à l’époque, c’est que l’isolation via les namespaces risquait de donner aux gens un faux sentiment de sécurité alors que beaucoup d’informations identifiables pouvaient encore fuiter, et je crois me souvenir que c’est pour cela que le sujet n’a pas été poussé plus loin.
    • Je pense que le fait que l’équipe Tor ait autant insisté là-dessus était une erreur stratégique. Pour les personnes exposées à des menaces graves, il est vrai qu’il faut utiliser le navigateur Tor et faire attention aux autres canaux de fuite d’information, mais si Tor était devenu la norme pour tout le monde, la surveillance de masse elle-même serait devenue bien plus difficile. Aujourd’hui, le simple fait d’utiliser Tor est un signal surveillé ; si tout le monde l’utilisait, cette information perdrait tout intérêt.
    • torsock et torify remplissent globalement le même rôle, mais je les trouve moins robustes.
  • Dans l’état, cela ne fonctionne pas si l’on suit la commande du guide d’installation telle quelle. Il faut remplacer le numéro de version de 0.4.0 par 0.5.0
    cargo install --git https://gitlab.torproject.org/tpo/core/oniux oniux@0.5.0
  • Au départ, je pensais que, comme torsocks, le trafic passait par un démon tor local. Pourtant, même si l’on coupe le démon tor local, oniux continue de fonctionner parfaitement, alors que torify et torsocks ne marchent plus. La documentation confirme d’ailleurs que c’est bien ainsi que cela fonctionne. C’est assez fascinant. Cela marche aussi très bien dans Docker, mais j’ai dû utiliser l’option --privileged, et simplement copier le binaire dans un conteneur debian:12 a aussi fonctionné sans problème
    docker run -it --rm --privileged -v "$PWD/oniux:/usr/bin/oniux" debian:12
  • Je me demande si tout cela ne concerne que TCP. Autrement dit, est-ce que le trafic non TCP est aussi protégé ?
    • Je n’en sais pas assez, mais en regardant https://gitlab.torproject.org/tpo/core/onionmasq, on dirait qu’ils essaient de construire une pile réseau en espace utilisateur qui prend en charge non seulement TCP mais aussi UDP, puis redirige le tout vers le réseau Tor.
    • Je me demande comment les utilisateurs du navigateur Tor gèrent YouTube, le DNS et HTTP/3.
    • Le trafic non TCP n’est pas routé et l’envoi échoue simplement.
  • Oniux semble être un outil officiellement pris en charge. C’est similaire à orjail, sauf que orjail n’a pas eu de commit depuis 4 ans, même si cela continue de bien fonctionner comme script shell avec les outils iptables/iproute
    orjail a aussi une option pour ajouter une isolation supplémentaire via firejail, ce que Oniux n’a pas encore
    https://github.com/orjail/orjail/blob/master/usr/sbin/orjail
  • Je me demande maintenant s’il est possible d’accéder aux sites en .tor avec Chrome.
    • C’est possible, mais je le déconseille. Chrome n’a pas les différentes stratégies anti-fingerprinting intégrées au navigateur Tor. En utilisant un navigateur classique, vous devenez encore plus identifiable.
    • En réalité, c’est possible depuis longtemps dans des navigateurs comme Chrome si l’on configure correctement les variables d’environnement du proxy (ou les réglages). Le port standard du démon tor est 9050. Il est aussi assez facile d’écrire directement un proxy SOCKS pour router le trafic. Par exemple, on peut envoyer le trafic d’un outil comme syncthing via un proxy socks5
      https://github.com/acheong08/syndicate
  • hexchat est pris comme exemple, mais si l’on conserve les réglages du profil utilisateur, est-ce que le pseudonyme IRC ne fuit pas ?
    En lançant un navigateur, il y a aussi le risque de fuite de choses comme les cookies.
    • La séparation des rôles est importante. Tor fait beaucoup d’efforts pour limiter le fingerprinting, mais fondamentalement, l’objectif de Tor et d’Oniux est d’empêcher la traçabilité de l’IP d’origine. Si vous vous connectez à Gmail via Tor, vous avez le même problème (sauf si HTTPS n’est pas appliqué).
    • Je me demande ce que signifie exactement « faire fuiter le nom d’utilisateur ». En pratique, cela ne révèle guère plus que le fait que ce nom d’utilisateur utilise Tor. Si le même pseudonyme se connecte régulièrement au même hôte IRC, cela peut au moins révéler qu’il s’agit toujours de la même personne. L’IRC est donc un moyen assez risqué si l’on vise l’anonymat. Beaucoup de gens conservent des journaux liés à des événements comme les coupures réseau, donc cela peut exposer des corrélations.
  • La partie DevEx (expérience développeur) est vraiment très réussie, au point de sembler presque inratable. J’aimerais applaudir l’équipe.
    • En fait, je ne pense pas que ce soit totalement le cas. Les idiots sont toujours créatifs, et garantir l’anonymat exige une discipline d’utilisation extrêmement rigoureuse, à un niveau qu’il est difficile d’attendre de la plupart des utilisateurs.
  • Si quelqu’un le réécrivait en C, je l’utiliserais volontiers.
    • C’est déjà écrit en Rust. Je me demande vraiment pourquoi tu voudrais spécifiquement une version C.