top of page

Hacker News remet à l’honneur une astuce X11, mais FamilyWild échange la liaison à l’hôte contre la portabilité

Hacker News a remis en lumière une astuce d’autorisation X11 à un seul champ après qu’un développeur l’a documentée le 2 août 2026. FamilyWild permet à un même cookie X11 de fonctionner entre conteneurs, chroots et hôtes distants malgré des noms d’hôte incompatibles. Cette technique évite de désactiver le contrôle d’accès, mais elle étend aussi les contextes dans lesquels un cookie volé reste exploitable.

La modification est presque comiquement minime. Un administrateur réécrit le champ de famille de connexion d’un enregistrement .Xauthority en ffff, la valeur hexadécimale attribuée à FamilyWild. Le cookie reste intact, tandis que son association à un hôte donné disparaît.

Ce résultat remet en cause le choix habituel entre des identifiants fragiles, spécifiques à un hôte, et la commande permissive xhost +. Il ne crée toutefois pas d’isolation entre les clients X11 autorisés. La discussion sur Hacker News soulève donc une question plus aiguë : à quel moment une portabilité accrue des identifiants devient-elle un élargissement inacceptable de la confiance ?

La correction X11 qui a atteint Hacker News

FamilyWild modifie la manière dont un client X11 sélectionne un identifiant, pas ce que cet identifiant peut faire après l’authentification.

Le développeur Piotr Dobrowolski a publié l’article original sur FamilyWild le 2 août. L’article traite d’une erreur familière aux personnes qui exécutent des applications Linux graphiques en dehors de leur hôte de bureau.

Une application conteneurisée ou distante peut voir un fichier .Xauthority monté par liaison tout en recevant une erreur d’autorisation. Le fichier existe, ses permissions semblent correctes et le cookie attendu s’y trouve. L’échec provient de la manière dont le client recherche ce fichier.

Une entrée .Xauthority ne contient pas seulement un secret. Elle comprend aussi une famille de connexion, une adresse, un numéro d’affichage, une méthode d’autorisation et des données d’autorisation. Les clients X11 utilisent ces champs pour trouver une entrée correspondant à l’affichage qu’ils souhaitent contacter.

Cette recherche devient peu fiable au-delà des frontières d’exécution. Un conteneur possède souvent un nom d’hôte différent de celui de son hôte. Un chroot peut présenter un autre environnement, tandis qu’un socket partagé manuellement peut produire des détails de connexion différents de ceux enregistrés à la connexion.

Le cookie peut donc rester valide côté serveur tout en devenant invisible pour la logique de sélection du client. Le client ne le présente jamais, car les informations d’adresse associées ne correspondent pas. Le serveur indique alors qu’aucun protocole d’autorisation utilisable n’a été fourni.

FamilyWild supprime cette contrainte de sélection. La documentation officielle X11 lui attribue la valeur décimale 65535, représentée par ffff dans l’enregistrement numérique. Une entrée utilisant cette famille correspond à tous les affichages plutôt qu’à une seule famille de connexion et adresse.

L’exemple de Dobrowolski exporte une entrée existante avec xauth nlist, réécrit ses quatre premiers caractères hexadécimaux, puis importe le résultat dans un fichier d’autorité distinct. La valeur sous-jacente MIT-MAGIC-COOKIE-1 ne change pas.

Cette séparation est importante. Le fichier source peut rester intact et l’identifiant portable ne peut être monté que là où il est nécessaire. Le client dirige ensuite sa variable d’environnement XAUTHORITY vers le nouveau fichier.

La technique a recueilli 28 points et huit commentaires au début de la discussion sur Hacker News. Ces chiffres reflètent une conversation technique restreinte, et non une adoption généralisée. Les commentaires ont toutefois rapidement mis en évidence les distinctions de sécurité essentielles derrière cette astuce.

Plusieurs participants ont comparé le transport X11 direct au transfert SSH. D’autres se sont demandé si les serveurs Xorg modernes acceptent encore les connexions TCP par défaut. Un commentaire a mis en avant une forme plus restrictive de xhost, fondée sur les utilisateurs locaux.

Le débat était utile, car chaque alternative traite d’une frontière différente. FamilyWild résout la correspondance des enregistrements d’autorité. SSH protège le transport et peut créer des identifiants temporaires. Les entrées xhost fondées sur les utilisateurs contrôlent certaines identités locales lorsque le serveur le prend en charge.

Confondre ces couches peut conduire à des conclusions dangereuses. Une connexion réussie indique seulement que l’authentification et le transport étaient suffisants. Elle ne dit rien sur le fait qu’une application authentifiée mérite ou non un accès étendu à la session de bureau.

Pourquoi les cookies liés au nom d’hôte échouent dans les conteneurs

L’échec commence lors de la sélection des identifiants côté client, avant même que le serveur X ait l’occasion de valider le secret.

X11 a été conçu comme un système de fenêtrage transparent au réseau. L’application qui demande une fenêtre agit comme le client, tandis que la machine qui contrôle l’affichage et les périphériques d’entrée exécute le serveur. Cette terminologie semble inversée par rapport à l’infrastructure web moderne, mais elle reflète qui possède les ressources graphiques.

La transparence réseau a également façonné l’autorisation X11. Un même fichier d’autorité peut contenir des identifiants pour plusieurs affichages, familles de connexion et méthodes d’authentification. Le client doit choisir le bon enregistrement avant d’ouvrir la session.

Le format .Xauthority stocke les enregistrements sous forme de données binaires compactes. Chaque enregistrement commence par une valeur de famille sur deux octets. Des champs d’adresse et d’affichage préfixés par leur longueur suivent, avec le nom de l’autorisation et ses données privées.

Une entrée locale normale peut contenir FamilyLocal, un nom d’hôte, l’affichage zéro et un secret MIT-MAGIC-COOKIE-1. Le client interprète le nom d’hôte comme faisant partie de la portée de l’enregistrement. Il n’essaie pas simplement chaque secret jusqu’à ce que le serveur en accepte un.

Les conteneurs perturbent cette portée sans nécessairement modifier l’affichage sous-jacent. Prenons le cas d’une station de travail Linux qui expose son socket X de domaine Unix à un conteneur non privilégié. Le conteneur peut atteindre le socket, mais son nom d’hôte diffère du nom enregistré par la station de travail.

Monter le fichier .Xauthority de l’hôte ne corrige pas cette incompatibilité. La bibliothèque cliente recherche un enregistrement correspondant à la connexion qu’elle perçoit. Elle peut ignorer l’entrée de famille locale pourtant correcte, car l’adresse stockée appartient à un autre environnement.

Renommer le conteneur pour qu’il corresponde à l’hôte peut masquer le symptôme, mais cela lie les paramètres d’identité à l’accès graphique. Copier et modifier des enregistrements pour chaque nom d’hôte crée une surcharge opérationnelle. Désactiver les contrôles d’accès supprime l’incompatibilité en abandonnant entièrement la frontière de sécurité.

FamilyWild offre un mécanisme plus ciblé. Le manuel d’autorisation X11 indique que la valeur de famille 65535 permet à une entrée de correspondre à tous les affichages. La méthode d’autorisation et le secret restent des éléments de l’enregistrement.

Cette distinction rend l’approche attrayante pour les conteneurs éphémères. Un administrateur peut générer un fichier portable distinct, le restreindre au mode 0600 et le monter par liaison en lecture seule. La base de données d’autorité de la session d’origine n’a pas besoin de devenir spécifique au conteneur.

Le même mécanisme peut aider avec des chroots ou des sockets d’affichage partagés manuellement. Il peut également prendre en charge les connexions entre hôtes lorsque l’accessibilité réseau et la configuration du serveur X autorisent déjà ce chemin.

Toutefois, FamilyWild ne rend pas un serveur inaccessible accessible. Il n’active pas l’écoute TCP, n’ouvre pas de pare-feu et ne monte pas de socket Unix. Il ne chiffre pas non plus le trafic traversant un réseau.

Ces responsabilités relèvent toujours d’autres éléments du système. Un conteneur a toujours besoin du bon socket et de la bonne adresse d’affichage. Un hôte distant a toujours besoin d’un chemin de transport approuvé. Les permissions de fichiers doivent toujours protéger le cookie portable contre les utilisateurs et processus non concernés.

Cette vision en couches évite de faire de FamilyWild une réponse générique à tous les problèmes de connexion X11. Il corrige une incompatibilité précise : un cookie valide associé à une adresse qui ne correspond plus à l’environnement du client.

FamilyWild face au raccourci xhost +

FamilyWild conserve la possession d’un secret comme condition d’admission, tandis que `xhost +` supprime cette exigence pour les clients pouvant atteindre le serveur.

La solution de contournement la plus tentante face à un échec d’autorisation X11 est aussi la plus large. Exécuter xhost + désactive les restrictions d’accès fondées sur l’hôte. Un processus qui peut atteindre l’affichage peut se connecter sans présenter le cookie qui avait initialement échoué.

Ce comportement permet aux démonstrations de fonctionner rapidement. Il peut aussi masquer la différence entre l’authentification et l’isolation des applications. Le serveur X a historiquement été conçu autour de la coopération entre des clients de confiance partageant un même affichage.

Le modèle de sécurité X.Org en explique directement la conséquence. Dès qu’un client du protocole de base est accepté, il peut obtenir un accès étendu aux ressources du serveur, aux périphériques et aux autres clients. Cet accès peut inclure la surveillance des entrées et l’envoi de messages.

Le danger ne se limite donc pas à l’apparition d’une fenêtre indésirable à l’écran. Un client connecté peut observer l’activité du clavier, inspecter le contenu graphique, manipuler les entrées ou perturber d’autres applications. Les possibilités exactes dépendent de la configuration du serveur et des extensions.

xhost + étend l’exposition en fonction de l’accessibilité. Si seul un socket de domaine Unix local protégé est disponible, le risque réseau immédiat est plus limité. Chaque identité locale capable d’atteindre ce socket peut néanmoins devenir pertinente.

Si le serveur écoute sur TCP, la frontière réseau devient critique. Les règles de pare-feu, les liaisons aux interfaces et les contrôles de réseau privé déterminent qui peut tenter une connexion. Désactiver le contrôle d’accès amplifie alors chaque erreur dans ces couches environnantes.

FamilyWild conserve la vérification du cookie. Une application doit atteindre le serveur et obtenir l’enregistrement d’autorité portable. Un processus non lié disposant seulement d’un accès réseau ne satisfait pas ces deux exigences.

C’est une amélioration importante, mais elle ne doit pas être exagérée. Le joker fait passer la portée de correspondance de l’identifiant d’un contexte d’affichage particulier à tous les affichages. Toute personne qui lit le fichier peut réutiliser son secret partout où ce secret est accepté.

La documentation officielle décrit MIT-MAGIC-COOKIE-1 comme une valeur partagée de 128 bits. Le serveur autorise une connexion lorsque le client présente une valeur correspondante. Le protocole lui-même ne chiffre pas cette valeur lors de sa transmission sur le réseau.

Par conséquent, un fichier FamilyWild doit être traité comme un identifiant de session actif. Il n’a pas sa place dans une image de conteneur, un dépôt de code source, un répertoire d’artefacts partagé ou une sauvegarde de longue durée. Un montage en lecture seule empêche la modification, mais pas la divulgation.

Le modèle le plus défendable consiste à créer une copie dédiée pour une tâche définie. La copie reçoit des permissions restrictives, n’entre que dans l’environnement requis et disparaît lorsque cet environnement prend fin. La rotation des identifiants limite davantage la valeur d’une copie oubliée.

Une expression xhost plus restrictive peut parfois convenir aux flux de travail locaux. La forme localuser interprétée par le serveur autorise un compte local nommé plutôt que tous les utilisateurs locaux. Cette option repose sur la capacité du serveur à identifier de manière sûre les identifiants des processus locaux.

Elle ne traite pas non plus les hôtes distants arbitraires de la même manière. Les conteneurs peuvent compliquer le mappage des identités, en particulier lorsque les espaces de noms utilisateur transforment les identifiants utilisateur. Un processus peut apparaître sous une identité différente de celle à laquelle un administrateur souhaitait accorder sa confiance.

La comparaison principale n’est donc pas « sécurisé » contre « non sécurisé ». Il s’agit d’une admission fondée sur un secret avec une correspondance plus large, face à une admission fondée sur l’accessibilité sans cookie. FamilyWild préserve généralement la barrière la plus robuste, mais son secret accorde toujours un accès aux conséquences importantes.

Le transfert SSH protège une frontière différente

SSH sécurise le transport et peut restreindre les clients X11, tandis que FamilyWild ne modifie que la correspondance des enregistrements d’autorité.

Le fil de discussion sur The Hacker News contenait des affirmations selon lesquelles l’utilisation directe de X11 sur un réseau privé semblait plus rapide que le transfert SSH. Ces témoignages constituent des observations utiles, mais non des benchmarks contrôlés. La latence, les chiffrements, la compression, le comportement des applications et la topologie réseau peuvent tous modifier le résultat.

Le transfert SSH reste l’option habituelle pour lancer une application distante sur un affichage local. Avec ssh -X, le client SSH configure un affichage transféré, fait passer le trafic X11 par le canal chiffré et installe à distance les informations d’autorisation appropriées.

OpenSSH traite cet accès avec prudence. Son manuel SSH avertit que toute personne capable de contourner les permissions du fichier d’autorité distant peut accéder à l’affichage local via la connexion transférée. Il distingue également le transfert non fiable du transfert fiable.

Le mode -X applique par défaut les restrictions de l’extension X11 SECURITY. Le mode -Y demande un transfert fiable, qui supprime ces restrictions. La différence est bien plus importante que ne le laisse entendre ce simple changement d’une lettre en ligne de commande.

La spécification SECURITY de X11 définit des contrôles pour les clients non fiables. Ces contrôles limitent les opérations sensibles sur le clavier, l’accès aux ressources et les extensions non sécurisées. Ils visent à réduire les interférences avec les applications fiables.

FamilyWild n’attribue pas à lui seul un statut non fiable. Il modifie l’entrée .Xauthority sélectionnée par le client. Si le cookie sélectionné représente une session pleinement fiable, l’application connectée hérite de ce niveau d’accès.

C’est là le compromis central de l’article. FamilyWild peut préserver la rapidité et la simplicité d’un chemin de socket existant, en particulier au sein d’une même machine. En revanche, il ne fournit ni le chiffrement du transport ni le traitement explicite de la confiance que SSH peut offrir.

Pour un conteneur non privilégié sur le même hôte, chiffrer le trafic sur un socket Unix local peut apporter peu de valeur pratique. Les contrôles importants sont l’exposition du socket, les privilèges du conteneur, le secret du fichier d’autorité et la fiabilité de l’application.

Pour un hôte distant, le calcul change. Une connexion X11 TCP en clair peut exposer à la fois le trafic de l’application et le contenu du cookie aux observateurs du réseau. Un tunnel privé ou un overlay de confiance peut réduire cette exposition, mais l’administrateur doit vérifier les protections qu’il apporte.

Cette distinction affecte aussi le dépannage. Un identifiant FamilyWild ne peut pas réparer un délai d’expiration du transfert SSH. Il ne peut pas rendre un serveur X compatible avec les clients non fiables. Inversement, le transfert SSH ne corrige pas tous les décalages de fichier d’autorité monté dans un conteneur local.

Les développeurs devraient commencer par identifier la frontière qui a échoué. Une incohérence de nom d’hôte renvoie à la sélection de l’enregistrement. Un socket inaccessible renvoie au transport ou à la configuration des espaces de noms. Le rejet d’une application non fiable peut indiquer le comportement de l’extension SECURITY.

Les comparaisons de performances exigent la même rigueur. Les applications X11 interactives échangent de nombreux petits messages, de sorte qu’une latence supplémentaire peut devenir visible. Un socket local direct devrait se comporter différemment d’un itinéraire chiffré passant par une autre machine.

Toutefois, un retour plus rapide ne justifie pas automatiquement une relation de confiance plus large. Un hôte de build distant, un conteneur de développement et une station de travail personnelle présentent des modèles de menace différents. La provenance de l’application compte autant que le trajet.

Les équipes qui documentent ces systèmes ont besoin de configurations reproductibles. Une collection consultable de notes de sécurité locales peut empêcher qu’un contournement d’urgence ne devienne une infrastructure non documentée. Une approche consiste à utiliser une base de connaissances technique qui conserve les commandes avec leurs hypothèses et leurs limites.

Cette documentation devrait identifier le transport d’affichage, la source d’autorité, le mappage d’identité du conteneur et la procédure de nettoyage. Sans ces détails, une recette FamilyWild copiée peut survivre au scénario restreint qui l’avait initialement justifiée.

Le cookie générique élargit toujours le périmètre d’exposition

FamilyWild évite l’accès anonyme, mais il transforme la portée des noms d’hôte en portée de distribution de fichiers.

Le billet original l’explique clairement. Toute personne pouvant atteindre le socket X et lire le fichier d’autorité portable peut se connecter. Le joker n’élimine pas le cookie, mais il supprime une condition qui limitait auparavant les emplacements où ce cookie correspondait.

L’association à un nom d’hôte n’est pas, à elle seule, une barrière de sécurité solide. Les noms d’hôte peuvent changer, se chevaucher ou être manipulés dans des environnements isolés. Néanmoins, supprimer une condition doit être considéré comme une extension délibérée de la confiance.

Le cas d’usage le plus solide est un environnement local étroitement contrôlé. Un administrateur possède la station de travail, lance un conteneur connu, expose un socket d’affichage et monte un fichier de cookie temporaire. Les autres utilisateurs ne peuvent ni lire le fichier ni entrer dans le conteneur.

Même dans ce cas, l’application dans le conteneur devient un client X11 disposant d’un accès significatif au bureau. L’isolation du conteneur n’inverse pas cette relation. Donner à une application isolée un socket X de confiance crée un canal de retour vers la session graphique.

Ce canal mérite davantage d’attention que l’étiquette du conteneur. Un processus peut être non privilégié dans son espace de noms tout en détenant un identifiant accepté par l’affichage de l’hôte. Le serveur X évalue la connexion selon l’autorisation X11, non selon la description marketing du conteneur.

Les machines partagées augmentent encore les enjeux. Des permissions de fichier définies sur 0600 empêchent les lectures ordinaires par d’autres comptes, mais les processus privilégiés et les administrateurs peuvent les contourner. Des copies accidentelles peuvent aussi hériter de permissions plus faibles.

L’automatisation introduit une autre voie de fuite. Les journaux de build, les sorties de débogage, le traçage du shell et la collecte d’artefacts peuvent exposer des secrets sans modifier le fichier d’origine. Un script ne devrait jamais afficher la valeur du cookie ni archiver le fichier d’autorité.

La même prudence s’applique aux systèmes d’orchestration. Intégrer un enregistrement d’autorité dans une image donne à chaque instance de conteneur le même secret réutilisable. Le placer dans un magasin de secrets largement accessible peut étendre l’accès au-delà de la station de travail prévue.

La rotation doit avoir un déclencheur défini. L’identifiant devrait être remplacé après une suspicion d’exposition, une utilisation sur un hôte partagé ou un environnement dont le nettoyage est incertain. Une nouvelle session de bureau produit souvent de nouvelles données d’autorisation, mais les administrateurs devraient confirmer le comportement de leur gestionnaire d’affichage.

L’accessibilité doit également être vérifiée. De nombreuses configurations Xorg modernes n’écoutent pas les connexions TCP par défaut. Un socket Unix local peut réduire considérablement l’exposition, même si tout processus recevant ce socket demeure à l’intérieur de la frontière de confiance.

Wayland modifie l’architecture environnante, mais n’efface pas le risque X11. Xwayland assure la compatibilité des applications X11 au sein d’une session Wayland. Son isolation effective dépend du compositeur, de l’agencement des instances Xwayland et du chemin suivi par l’application.

Cela signifie que « j’utilise Wayland » ne suffit pas à démontrer qu’un socket X11 partagé est inoffensif. La question pertinente est de savoir quel serveur a accepté la connexion et quels autres clients partagent ce serveur.

Les objections formulées sur The Hacker News révèlent aussi une importante lacune de vérification. Le billet montre la transformation de l’enregistrement et explique le comportement de correspondance attendu. Il ne présente pas de tests indépendants couvrant chaque serveur X, runtime de conteneur ou distribution.

La documentation officielle confirme la sémantique de FamilyWild. Toutefois, les résultats opérationnels peuvent varier, car les chemins de socket, la résolution des noms d’hôte, les options de serveur, les extensions de sécurité et les gestionnaires de session varient. Les équipes devraient tester leur environnement exact plutôt que de généraliser à partir d’une seule commande.

Un examen de sécurité pratique devrait donc poser quatre questions. Qui peut atteindre l’affichage, qui peut lire le cookie, à quoi un client accepté peut-il accéder, et quand l’identifiant expire-t-il ? FamilyWild modifie la portée géographique de la deuxième question, non les conséquences de la troisième.

Ce que les développeurs devraient surveiller après le débat sur The Hacker News

Les prochaines preuves devraient provenir de tests reproductibles, de frontières d’isolation plus claires et de pratiques de cycle de vie des identifiants, plutôt que de nouvelles corrections en une ligne.

Le premier signal est une reproduction indépendante sur les configurations de conteneurs courantes. Les tests devraient couvrir Docker ou Podman rootless, LXC non privilégié, les espaces de noms utilisateur et les sessions Xwayland. Chaque test devrait consigner le chemin du socket, le serveur X, la valeur d’affichage et le mappage d’identité.

Le simple lancement réussi ne suffit pas. Les reproductions devraient aussi déterminer ce que l’application autorisée peut observer ou manipuler. Si l’accès atteint des fenêtres et des entrées sans rapport, le test devrait l’indiquer clairement.

Des preuves d’instances Xwayland à portée étroite renforceraient l’argument en faveur d’un partage contrôlé. Des preuves montrant que les applications accèdent habituellement à un même affichage de confiance renforceraient l’avertissement concernant l’isolation des clients. La topologie du serveur décide de bien plus que l’enregistrement générique.

Le deuxième signal est l’adoption, par les outils, de fichiers d’autorité temporaires et spécifiques à une tâche. Les lanceurs de conteneurs et les scripts de développement peuvent créer des identifiants au démarrage, appliquer des permissions restrictives, les monter en lecture seule et les supprimer lors du démontage.

Ce flux de travail rendrait FamilyWild moins dépendant du nettoyage manuel. Il séparerait également l’identifiant portable de la base .Xauthority principale de l’utilisateur. Un comportement de rotation clair renforcerait encore cette approche.

À l’inverse, la copie généralisée d’un même fichier générique dans des environnements persistants affaiblirait l’argument de sécurité. Un identifiant qui survit entre projets, hôtes et sessions devient plus difficile à inventorier. Sa fenêtre d’exposition augmente à chaque réutilisation.

Le troisième signal est le choix des développeurs entre sockets directs et transfert protégé. Les conteneurs locaux ont un cas d’usage plausible pour l’accès direct via socket Unix. Les machines distantes nécessitent une justification plus solide pour contourner SSH ou un autre tunnel chiffré.

Des mesures de latence fiables seraient utiles. Les benchmarks devraient distinguer les sockets locaux, le TCP sur LAN, les overlays chiffrés, le transfert ssh -X et le transfert fiable ssh -Y. Ils devraient aussi identifier l’application, car les schémas de messages X11 varient.

Les résultats de sécurité doivent accompagner les chiffres de performance. Un itinéraire plus rapide qui expose une session de bureau fiable à un réseau partagé n’est pas une alternative équivalente. Un itinéraire plus lent assorti de restrictions pour clients non fiables offre un modèle de protection différent.

Pour l’instant, l’interprétation la plus défendable reste limitée. FamilyWild est une fonctionnalité X11 documentée qui répare la sélection d’identifiants liée au nom d’hôte sans ouvrir anonymement l’affichage. C’est plus sûr que de recourir par réflexe à xhost +.

Ce n’est ni un sandbox, ni un tunnel chiffré, ni une frontière de permissions entre clients acceptés. Le joker rend le cookie plus facile à utiliser entre environnements, ce qui rend aussi chaque copie plus lourde de conséquences.

Avant d’adopter la technique de The Hacker News, cartographiez le chemin de connexion complet et consignez la décision de confiance. L’application peut-elle utiliser un affichage dédié, un identifiant SSH non fiable ou une règle d’utilisateur local plus restrictive ? Si FamilyWild reste la solution appropriée, générez un fichier temporaire, limitez ses lecteurs et supprimez-le lorsque la charge de travail se termine.

La prochaine étape intéressante n’est pas une nouvelle commande ingénieuse. C’est une configuration reproductible montrant que la portabilité, la sécurité du transport et l’isolation des clients ont été évaluées séparément. Laquelle de ces trois frontières votre flux de travail X11 actuel protège-t-il réellement ?

 
 

Commencez pour Gratuit

Un premier assistant IA local avec gestion des connaissances personnelles

Pour une meilleure expérience IA,

remio ne supporte que Windows 10+ (x64) et M-Chip Macs actuellement.

Votre partenaire IA au travail
Faites-en plus avec remio

Planifiez. Créez. Livrez.
Tout au même endroit.

bottom of page