1 points par GN⁺ 2023-08-09 | 1 commentaires | Partager sur WhatsApp
  • Un utilitaire de bascule automatique entre les modes clair/sombre sur macOS s’est transformé, après son rachat fin 2022, en outil intégrant l’appareil de l’utilisateur à un botnet sans son consentement
  • L’acquéreur, TPE.FYI LLC, s’appuie sur les conditions d’utilisation pour exploiter l’appareil comme passerelle de trafic Internet, sans possibilité de désactiver cette fonction même après avoir quitté l’application
  • Lors de l’installation, un launch agent fonctionnant avec les privilèges root est enregistré et s’exécute automatiquement au démarrage, sans possibilité de désactivation depuis l’application
  • Un démon présenté comme une « mise à jour automatique » lance un proxy HTTP local et ouvre un tunnel SSH vers un serveur externe afin de faire transiter du trafic via la connexion Internet de l’utilisateur
  • Le SDK Pawns d’IPRoyal, vendeur de proxies résidentiels, est utilisé pour revendre la bande passante Internet de l’utilisateur à des fins d’étude de marché

Nature et dérive de l’application NightOwl

  • NightOwl est une application existant depuis 2018, qui permet de basculer automatiquement entre les modes clair et sombre du système d’exploitation
    • Une alternative qui compensait la limite du mode automatique intégré à macOS, lequel ne bascule que lorsque l’utilisateur s’absente
  • Après son rachat par TPE.FYI LLC fin 2022, les appareils des utilisateurs ont été intégrés de force à un botnet destiné aux études de marché, sans information claire ni consentement explicite
    • Aucune notification distincte en dehors de petites lignes dans les conditions affichées sur la page de téléchargement
    • Cette fonction ne peut pas être désactivée, même lorsque l’application est fermée
  • Ce comportement est mentionné dans les conditions d’utilisation (TOS)
    • Modification des paramètres réseau de l’appareil pour partager le trafic Internet et utiliser l’appareil comme passerelle
    • Les clients visés pour ces passerelles incluent des entreprises actives dans les études web et de marché, le SEO, la protection de marque, la diffusion de contenu ou la cybersécurité
  • NightOwl a été contacté pour commentaire, sans réponse

Méthode de suppression

  • Même si l’application n’est pas en cours d’exécution, si elle est installée, il faut lancer les commandes de suppression dans le terminal
    • sudo killall NightOwl
    • launchctl unload ~/Library/LaunchAgents/NightOwlUpdater.plist
    • sudo killall AutoUpdate
    • sudo rm -rf /Applications/NightOwl.app/ ~/Library/LaunchAgents/NightOwlUpdater.plist
    • sudo zsh -c "rm /Users/*/Library/LaunchAgents/NightOwlUpdater.plist"

Analyse du fonctionnement technique

  • Lors de l’installation, enregistrement d’un launch agent nommé org.nightowl.autoupdater.com
    • Il démonise le processus /Applications/NightOwl.app/Contents/Helpers/AutoUpdate pour l’exécuter au démarrage avec les privilèges root
    • Désactivation impossible via l’application, opération menée discrètement sans information ni consentement de l’utilisateur
  • L’avertissement affiché par l’application se limite à la collecte de statistiques via Google Analytics
    • Présentée comme un suivi des données sur l’usage des fonctionnalités et l’analyse des bugs
    • Mention explicite que le paramètre anonymizeIp masque la dernière partie de l’IP afin de garantir une collecte de données anonymisée
    • Il est indiqué qu’il est possible de refuser ce suivi en décochant « Send Statistics » dans les réglages
    • Toutefois, même en désactivant l’envoi de statistiques, le launch agent n’est pas désactivé
  • Le démon de « mise à jour automatique » effectue trois tâches
    • Vérification des mises à jour de l’application via Sparkle
    • Rapport de crash via Sentry
    • Exécution d’un proxy HTTP local sur le port 40701 (modifiable via un fichier json de configuration dans le bundle de l’application)
    • Ce dernier point est inattendu pour une application se présentant comme un simple auto-updater
  • Structure du proxy et du tunnel SSH

    • Le démon utilise sudo pour passer de root au compte utilisateur principal, puis exécute nightowl_t.dylib
      • Il s’agit d’une copie de tinyproxy, sous licence GPLv2, avec suspicion de violation car aucune mention de la licence GPL n’est incluse
      • Fonctionne comme proxy HTTP(S)
    • Une connexion SSH est ensuite établie à l’aide d’un fichier autossh renommé nightowl_a.dylib (sans licence)
      • Cible : testconnectuser2023@proxy-gw1-europe.squidyproxy.com, port 2043
      • Utilisation d’une clé publique déposée dans /tmp avec l’extension .uu, et de l’option -R pour tunneliser un port distant vers le local
      • La clé est récupérée via une requête HTTPS vers proxy-api1.squidyproxy.com
      • Ce domaine a été enregistré chez GoDaddy en avril 2022, et son IP est hébergée par Microsoft
    • Ce serveur SSH a l’accès shell activé
    • Une fois la connexion établie, le trafic HTTP est acheminé vers l’utilisateur puis redirigé vers l’extérieur via sa connexion Internet
  • Tentative d’ouverture de ports via UPnP

    • Tentative d’ouverture d’un port forwarding UPnP sur le routeur, mais échec à cause de noms de clés incohérents
      • La requête SOAP envoyée contient l’action AddPortMapping et la valeur ip royal paws

Mécanisme de revente de bande passante (Pawns / IPRoyal)

  • L’application semble utiliser le SDK Pawns
    • Pawns est une application qui rémunère les utilisateurs 0,20 $ par Go de bande passante Internet partagée
  • Le service Pawns est exploité par IPRoyal
    • Une société de proxies qui vend des connexions via proxies résidentiels 1,75 $ par Go
    • Elle les présente comme des « IP obtenues de manière 100 % éthique »

Qui est « TPE.FYI LLC » ?

  • TPE (ou Keeping Tempo, Tempo AI) travaille sur un modèle de tarification permettant aux salles de spectacle d’ajuster le prix des billets à la demande réelle des artistes, à partir d’analyses de vues de vidéos YouTube, de données de popularité régionales, etc.
    • Sans lien avec Tempo AI Calendar ou Tempo AI Gym
  • Les informations disponibles sont limitées, avec presque aucune trace après 2018
  • Au moment de la rédaction, les installations observées tentaient de se connecter à plusieurs reprises à https://stubbs.frontgatetickets.com/
    • Ce site vend des billets pour des concerts live organisés dans un restaurant à Austin, au Texas
  • L’entreprise a été fondée en septembre 2018 à Austin, Texas, puis dissoute en mars 2023 par « Jarod Stirling »
    • Adresse : The Muse at SoCo, 1007 South Congress Avenue, Apartment 443, Austin, Texas, 78704

1 commentaires

 
GN⁺ 2023-08-09
Avis sur Hacker News
  • Je sais que ce genre de choses arrive assez souvent, mais je me demande à quelle fréquence les entreprises mettent à jour leurs conditions d’utilisation avec ce type de formulation.
    L’idée même de conditions à renouvellement automatique régissant définitivement tout usage aurait dû, à mon avis, être interdite légalement depuis longtemps.
    La formulation actuelle de NightOwl indique qu’ils peuvent modifier les conditions et les tarifs à tout moment, que cela prend effet dès la publication sur le site web, et que NightOwl décide seul si un changement est « substantiel ».
    Annoncer un changement des conditions d’une app installée localement via une mise à jour du site web… faut-il aussi s’abonner à leurs flux sociaux pour vérifier ?

    • Un ami qui avait signé il y a quelques années un contrat Internet/téléphone professionnel avec Comcast a vu une formulation similaire, et il n’y avait même pas d’URL réelle.
      À l’instinct, ça me semblait inapplicable et abusif, mais je me dis aussi que l’équipe juridique de Comcast a dû l’examiner.
      Je me demande s’il y a un avocat qui sait si ce type de clause est valable quand les changements de contrat sont publiés sur un site web, surtout en l’absence de notification séparée.
    • Je me demande si maps.me n’est pas dans une situation similaire.
      C’était autrefois un bon front-end pour OpenStreetMap, mais, si j’ai bien compris, l’app a été rachetée par une société d’investissement pour être monétisée.
      Je me demande dans quel état est l’app aujourd’hui, si son modèle économique ressemble à celui décrit ici, et quelle app utiliser comme alternative.
    • Ce genre de clause a déjà été invalidé, et il est très probable qu’elle le soit de nouveau si quelqu’un est prêt à engager une action en justice : https://arstechnica.com/tech-policy/2007/07/court-says-no-to..., https://scholar.google.com/scholar_case?case=592583419165850...
      Dans l’affaire Safeway, le tribunal a estimé qu’un consommateur ne peut pas accepter des conditions futures qui n’existent pas encore, et que s’il n’a pas reçu de notification de modification des conditions, le simple fait de continuer à utiliser le service ne peut pas être considéré comme une acceptation des conditions modifiées.
    • Je me demande s’il y a eu récemment un changement de politique ou de fonctionnalités similaire pour l’extension Chrome The Great Suspender.
      Il me semble que les navigateurs l’ont signalée comme non sûre.
  • Le fait que l’app établisse beaucoup de connexions vers des sites de vente de billets de concerts est un usage courant des proxys résidentiels.
    Les revendeurs de billets utilisent les appareils d’utilisateurs infectés pour contourner les blocages d’hôtes de datacenters ou les limitations d’accès en masse, et augmenter leurs chances d’obtenir des billets qui pourront être revendus plus tard avec profit.
    Il arrive que des extensions de navigateur gratuites, des apps VPN, etc., dans lesquelles une porte dérobée a été introduite par le créateur, par quelqu’un ayant compromis le dépôt, ou comme ici par un acquéreur, transforment les appareils des utilisateurs en ce type de proxy.

    • NordVPN utilise aussi ce procédé.
      Google et Amazon possèdent de larges plages d’adresses IP pour leurs services cloud, ce qui rend les bots basés sur AWS ou Google Cloud relativement faciles à détecter.
      En revanche, Verizon dispose aussi de grandes plages d’IP attribuées à ses clients résidentiels, et NordVPN exploite le fait que des services comme Netflix ou Amazon ne veulent pas bloquer toute la plage d’IP de Verizon pour faire passer son trafic pour du trafic résidentiel.
  • Je déteste vraiment les acquisitions silencieuses.
    C’est horrible, car il est très courant que des acteurs malveillants rachètent aussi des extensions Chrome destinées aux développeurs, puis les transforment en malware.

    • En tant que gestionnaire d’une extension Chrome assez populaire, je recevais tellement de propositions de rachat que j’ai commencé à les regrouper publiquement pour que tout le monde puisse les voir.
      https://chrome.google.com/webstore/detail/hover-zoom%20/pccc...
      https://github.com/extesy/hoverzoom/discussions/670
    • L’idée d’une app qui surveillerait les propriétaires des apps paraît plutôt bonne.
      Elle pourrait envoyer une grosse notification si le propriétaire change du jour au lendemain.
    • C’est là le problème des apps gratuites.
      Presque personne ne veut faire de don, et les entreprises correctes ne cherchent pas à acheter ces apps pour les monétiser ; au final, seules les pires entreprises, celles qui veulent exploiter les utilisateurs, rachètent les extensions et les apps.
      Ces apps gratuites ont de la valeur, mais comme elles ne génèrent pas de revenu pour les développeurs, ceux-ci finissent par chercher une autre voie.
    • Ça me rappelle le rachat de ActionDash par Sensor Tower.
      Une app très intrusive, qui avait forcément besoin d’autorisations énormes pour fournir des fonctions au niveau système, a été transférée sans accroc à une entreprise de publicité et de vente de données : ça n’a aucun sens.
    • Je ne vois pas ce qu’il y a de silencieux.
      C’est écrit noir sur blanc dans les conditions d’utilisation que l’utilisateur a acceptées en utilisant le logiciel ; au fond, c’est une histoire de principe de responsabilité de l’acheteur.
  • L’explication selon laquelle le mode automatique intégré à macOS ne basculerait que lorsque l’utilisateur s’éloigne de l’ordinateur me paraît étrange.
    Si l’on configure Night Shift avec un horaire/une position et que l’on met le mode sombre en automatique, il change immédiatement ; et si l’on utilise un lanceur ou Spotlight, on peut aussi le basculer avec une ligne d’AppleScript comme tell application "System Events" to tell appearance preferences to set dark mode to not dark mode.

    • Chez moi, ce n’est pas le cas.
      Je dirais que la probabilité que le mode sombre s’active au coucher du soleil est d’environ 25 %.
      Cela dure depuis des années, jusqu’à Ventura inclus, et je me demande si chez les autres ça a toujours fonctionné parfaitement.
    • En 2018, quand NightOwl est sorti, certaines de ces commodités, voire toutes, n’existaient pas encore.
  • Apple semble avoir révoqué le certificat développeur
    Je me demande s’il existe un journal public indiquant quand il a été révoqué
    Le chargement de l’app était bloqué, mais les deux dylib tournaient encore ; je me suis demandé si c’était parce que cela s’était produit après le début de la révocation du certificat
    Même après une déconnexion puis reconnexion, elles continuaient à tourner, donc il est possible que cela persiste au-delà d’une simple fermeture de session
    Le pare-feu macOS a aussi affiché une invite demandant s’il fallait autoriser le binaire AutoUpdate mentionné à recevoir des connexions, donc tout cela semble avoir été déployé ces derniers jours
    Après redémarrage, la boîte de dialogue “NightOwl” will damage your computer. You should move it to the Trash. est apparue, et même en l’autorisant, /Users/*/Library/LaunchAgents/NightOwlUpdater.plist ainsi que les fichiers de préférences habituels restaient en place, donc le nettoyage n’était pas complet
    Pour les utilisateurs non techniques peu à l’aise avec le terminal, il vaudrait mieux leur conseiller de redémarrer

  • Dans mon environnement, macOS a désactivé l’app et refusé de l’ouvrir
    Je suis passé à NightFall à la place : https://github.com/r-thomson/Nightfall

    • On peut aussi mettre directement les réglages d’affichage dans la barre de menus avec le réglage suivant
      Settings > Control Center > Display > Always Show in Menu Bar
      Il faut certes un clic de plus pour activer et désactiver le mode sombre, mais on peut aussi utiliser Night Shift et c’est 100 % natif
    • On peut aussi créer soi-même quelque chose de très simple avec l’app Automator intégrée
      Ouvrez Automator, créez une nouvelle application, choisissez « change system appearance », puis sélectionnez le basculement entre mode clair et mode sombre
      Après l’avoir enregistrée, il suffit d’ouvrir le nom de cette app depuis Spotlight pour changer de mode, et cela doit aussi être possible avec Shortcuts
    • Si vous avez seulement besoin de basculer de mode, BetterTouchTool le fait directement
      J’ai configuré un raccourci global avec clic droit + Option + Command, et ça fonctionne très bien
  • Il faudrait sans doute une loi applicable à ce genre de cas
    Il devrait exister un contrat implicite selon lequel un logiciel fait ce qu’il dit faire et ne fait rien de complètement différent, avec de lourdes sanctions en cas de violation

    • Nous devrions nous aussi rédiger chacun notre EULA et considérer que l’autre partie l’a implicitement accepté
      À chaque requête vers un gros site web, on enverrait un fichier EULA de 10 Mo, et on continuerait jusqu’à ce qu’il soit accepté : cela pourrait devenir un « DDoS par EULA »
    • Les licences courantes sont délibérément formulées clairement pour éviter qu’un tel contrat soit implicite
      La clause en majuscules de la MIT License commence en indiquant que le logiciel est fourni « en l’état », sans garantie explicite ou implicite de qualité marchande ou d’adéquation à un usage particulier, et l’article 15 de la GPL contient une formulation quasiment identique
      https://opensource.org/license/mit/
      https://www.gnu.org/licenses/gpl-3.0.html#section15
    • Les clauses contractuelles implicites prévues par la loi existent bel et bien
      Au Royaume-Uni, sous l’influence de la directive européenne sur les droits des consommateurs, le droit des contrats de consommation a été étendu en 2015 jusqu’aux contenus numériques, et inclut des clauses implicites selon lesquelles les biens doivent être d’une qualité satisfaisante et les services continus comme Netflix, Spotify ou les logiciels avec mises à jour ne doivent pas changer radicalement par rapport à ce qui était fourni au départ
      https://www.legislation.gov.uk/ukpga/2015/15/part/1/chapter/...
      La plupart des juridictions disposent de règles similaires, et les pays de l’UE doivent avoir des lois transposant la directive sur les droits des consommateurs
      Mais cela s’applique lorsqu’il y a eu paiement ; NightOwl étant gratuit, les attentes juridiques qui encadrent la vente de biens et de services ne s’appliquent pas telles quelles
      Le fait qu’une entreprise soit rachetée et que le produit intègre ensuite un spyware est problématique, mais il ne serait pas souhaitable non plus qu’un adolescent ou un développeur amateur ayant publié un projet open source gratuit ou un freeware pour apprendre à coder soit poursuivi par une grande entreprise pour avoir fait quelque chose du genre left-pad
      Le poids de la régulation technologique devrait peser bien plus lourdement sur des acteurs comme Google, Microsoft ou Apple que sur de petits développeurs qui créent des utilitaires gratuits pour la barre de menus ou des extensions Chrome
      Empêcher les petites apps gratuites et open source de devenir des vecteurs d’attaque de la chaîne d’approvisionnement reste difficile ; cela nécessite des améliorations lentes et imparfaites, comme un meilleur sandboxing et des permissions au niveau des apps, une surveillance réseau et une détection d’anomalies par app, ainsi que l’établissement de la confiance dans les processus de packaging et de distribution, et il est très probable que les procès ne soient pas la solution
  • La partie disant que l’app essaie d’ouvrir une redirection de port UPnP mais échoue parce que les noms de clés sont mélangés sur le routeur devrait en fait échouer sur n’importe quel routeur
    parce que l’UPnP devrait être désactivé

    • L’UPnP est certes une spécification médiocre, mais c’est un palliatif qui restaure une capacité de base que les appareils connectés à Internet devraient avoir dans un environnement résidentiel
      Toutes les applis P2P comme Tailscale doivent temporairement se comporter comme des serveurs et accepter du trafic entrant
      Sans cette fonction, elles deviennent en quelque sorte des citoyens de seconde zone, et cela revient à traiter les utilisateurs comme des enfants
      Bien sûr, on peut ouvrir des ports soi-même, mais l’UX difficile à trouver, incohérente et complexe la rend inaccessible à la grande majorité des utilisateurs, et la plupart ne savent même pas ce qu’est un port
    • Il suffit de penser aux membres de la famille qui utilisent un Mac « parce qu’ils ne veulent pas des tracas d’un ordinateur portable Windows »
      Ils ne veulent pas non plus des tracas liés à la désactivation de l’UPnP, et il y a de fortes chances que ce réglage soit activé, que vous pensiez savoir mieux qu’eux ou non
    • Désactiver l’UPnP rend plus sûr, mais tant qu’on ne désactive pas aussi tous les NAT ALG du routeur, on reste exposé
      La plupart des routeurs n’auront probablement pas ce réglage ; donc, si un appareil compromis fait partie de votre modèle de sécurité, il est prudent de considérer qu’à cause des attaques NAT slipstream, le NAT est en pratique complètement neutralisé
      Un appareil compromis peut modifier la table NAT du routeur pour se comporter en pratique comme de l’UPnP, mais sans fournir d’interface que l’utilisateur puisse auditer
      Si vous utilisez uniquement IPv6 sans NAT, désactiver l’UPnP peut être une mesure de sécurité acceptable si vous êtes prêt à gérer manuellement toutes les exceptions du pare-feu, mais pour la plupart des gens aujourd’hui, seul le pare-feu de l’hôte est une protection fiable
    • Je ne sais pas si l’idée est de nier complètement la nécessité même de l’UPnP
      C’est assez déroutant
  • Les conditions indiquent que l’app « modifie les paramètres réseau de l’appareil de l’utilisateur afin de partager le trafic Internet en utilisant l’appareil comme passerelle de trafic Internet, et que les clients de NightOwl incluent des entreprises de recherche web/de marché, de SEO, de protection de marque, de diffusion de contenu et de cybersécurité »
    C’est vraiment le genre de chose qu’il faudrait brûler au lance-flammes

    • Je pensais généralement que plus une chose était louche, plus on cherchait à la cacher
      Mais je me demande sincèrement pourquoi ils ont écrit cela dans les conditions d’utilisation
      Une organisation capable d’intégrer une fonction aussi louche me semblerait aussi vouloir cacher activement le fait qu’elle le fait ; je me demande donc s’il existe une raison pour laquelle le fait de l’inscrire dans les conditions protège juridiquement NightOwl
      Par exemple, je ne sais pas si c’est le genre de chose pour laquelle ils auraient pu être poursuivis avec succès à l’origine, mais qui devient acceptable si c’est dans les conditions, ou si ce comportement louche est techniquement légal dès lors qu’il figure dans les conditions
    • Il semble que l’autorisation de « modifier les paramètres réseau de l’appareil » était déjà incluse dans les permissions accordées pour la fonction initiale, à savoir basculer en mode sombre
      Si c’est le cas, c’est assez décevant, et il serait souhaitable que les permissions des apps soient plus granulaires
    • Le fait d’utiliser ici le terme « enables » donne l’impression qu’on présente cela comme une opportunité, plutôt que comme une atteinte à la liberté et à la vie privée
    • Il faut nommer publiquement le développeur et l’entreprise pour leur faire honte
  • Little Snitch aide à détecter les IP et adresses auxquelles une app se connecte, et à bloquer ces connexions

    • Il y a aussi LuLu
    • J’ai payé Little Snitch chaque fois que possible
      J’espère vraiment qu’ils n’envisageront jamais de vendre