1 pontos por GN⁺ 2023-08-09 | 1 comentários | Compartilhar no WhatsApp
  • O utilitário de alternância automática entre modos claro/escuro no macOS se transformou, após a aquisição no fim de 2022, em uma ferramenta que incorpora o dispositivo do usuário a uma botnet sem consentimento
  • A empresa compradora, TPE.FYI LLC, usa os dispositivos dos usuários como gateways para tráfego de internet com base nos termos de uso, e esse recurso não pode ser desativado mesmo ao encerrar o app
  • Na instalação, é registrado um launch agent que roda com privilégios de root e é executado automaticamente na inicialização, sem possibilidade de desativação pelo aplicativo
  • Um daemon disfarçado de "atualização automática" inicia um proxy HTTP local e abre um túnel SSH para um servidor externo, desviando tráfego pela conexão de internet do usuário
  • É usado o Pawns SDK da empresa de venda de proxies residenciais IPRoyal, em uma estrutura que revende a largura de banda de internet do usuário para pesquisas de mercado

O que é o app NightOwl e como ele foi deturpado

  • O NightOwl existe desde 2018 e oferece a função de alternar automaticamente entre os modos claro/escuro do sistema operacional
    • Era uma alternativa para contornar a limitação do modo automático nativo do macOS, que só alternava quando o usuário se afastava do computador
  • Após ser adquirido pela TPE.FYI LLC no fim de 2022, passou a incorporar à força os dispositivos dos usuários em uma botnet para pesquisa de mercado, sem ciência nem consentimento explícito
    • Não há aviso separado além dos termos em letras miúdas na página de download
    • Mesmo com o app encerrado, esse recurso não pode ser desativado
  • Esse comportamento está descrito nos termos de uso (TOS)
    • Ele altera as configurações de rede do dispositivo para compartilhar tráfego de internet e usar o aparelho do usuário como gateway
    • Os clientes atendidos por esses gateways incluem empresas de web e pesquisa de mercado, SEO, proteção de marca, entrega de conteúdo e cibersegurança
  • Houve contato com a equipe do NightOwl, mas não houve resposta

Como remover

  • Mesmo que o app não esteja em execução, se estiver apenas instalado, é necessário executar no Terminal os comandos de remoção
    • 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"

Análise do funcionamento técnico

  • Na instalação, é registrado um launch agent com o nome org.nightowl.autoupdater.com
    • Ele transforma em daemon o processo /Applications/NightOwl.app/Contents/Helpers/AutoUpdate, executando-o com privilégios de root na inicialização do sistema
    • Não pode ser desativado pelo aplicativo e opera silenciosamente, sem ciência nem consentimento do usuário
  • O aviso exibido pelo app se limita à coleta de estatísticas do Google Analytics
    • Ele informa que rastreia dados para analisar como os recursos são usados e para investigar bugs
    • Declara que a configuração anonymizeIp oculta a parte final do IP para garantir coleta de dados anonimizados
    • Também informa que é possível desativar o rastreamento desmarcando a opção "Send Statistics" nas configurações
    • Porém, mesmo desligando o envio de estatísticas, o launch agent não é desativado
  • O daemon de "atualização automática" executa três tarefas
    • Verifica atualizações do app usando Sparkle
    • Envia relatórios de crash usando Sentry
    • Executa um proxy HTTP local na porta 40701 (alterável por um arquivo json de configuração dentro do bundle do app)
    • O último item é um comportamento inesperado em um aplicativo que se apresenta como atualizador automático
  • Estrutura do proxy e do túnel SSH

    • O daemon usa sudo para sair do root e mudar para a conta principal do usuário antes de executar nightowl_t.dylib
      • Trata-se de uma cópia do tinyproxy, sob licença GPLv2, mas sem incluir o aviso de licença GPL, o que pode configurar violação
      • Atua como proxy HTTP(S)
    • A conexão SSH é aberta por um arquivo renomeado de autossh para nightowl_a.dylib (sem licença)
      • O destino é testconnectuser2023@proxy-gw1-europe.squidyproxy.com, porta 2043
      • Usa uma chave pública gravada em /tmp com extensão .uu, com a opção -R para tunelar uma porta remota para o ambiente local
      • A chave é obtida por requisição HTTPS a proxy-api1.squidyproxy.com
      • Esse domínio foi registrado na GoDaddy em abril de 2022, e o IP é hospedado pela Microsoft
    • Esse servidor SSH está com acesso shell habilitado
    • Após a conexão ser bem-sucedida, o tráfego HTTP é encaminhado para o lado do usuário e então desviado para fora pela conexão de internet do próprio usuário
  • Tentativa de encaminhamento de porta via UPnP

    • Há uma tentativa de abrir encaminhamento de porta via UPnP no roteador, mas ela falha por causa de nomes de chave embaralhados
      • A requisição SOAP enviada inclui a ação AddPortMapping e o valor ip royal paws

Estrutura de revenda de largura de banda (Pawns / IPRoyal)

  • O app aparentemente usa o Pawns SDK
    • O Pawns é um app que paga US$ 0,20 por GB pela largura de banda de internet compartilhada pelo usuário
  • O serviço Pawns é operado pela IPRoyal
    • É uma empresa de proxies que vende conexões de proxy residencial por US$ 1,75 por GB
    • Alega comercializar "IPs obtidos de forma 100% ética"

Quem é a "TPE.FYI LLC"

  • A TPE (ou Keeping Tempo, Tempo AI) estaria desenvolvendo um modelo de precificação para que casas de shows definam preços de ingressos com base na demanda real de artistas, usando análises de visualizações de vídeos no YouTube, popularidade por região e outros dados
    • Não tem relação com Tempo AI Calendar nem Tempo AI Gym
  • Há poucas informações disponíveis, e quase não existem registros desde 2018
  • No momento da redação, as instalações verificadas tentavam se conectar repetidamente a https://stubbs.frontgatetickets.com/
    • Esse site vende ingressos para apresentações de música ao vivo em um restaurante de Austin, Texas
  • A empresa foi fundada em setembro de 2018 em Austin, Texas, e dissolvida em março de 2023 por "Jarod Stirling"
    • O endereço registrado era The Muse at SoCo, 1007 South Congress Avenue, Apartment 443, Austin, Texas, 78704

1 comentários

 
GN⁺ 2023-08-09
Opiniões no Hacker News
  • Sei que esse tipo de coisa acontece com certa frequência, mas fico me perguntando com que frequência as empresas atualizam seus Termos de Uso com esse tipo de redação
    A própria ideia de termos com renovação automática que regem permanentemente todo uso já deveria ter sido barrada legalmente há muito tempo
    A redação atual do NightOwl diz que eles podem alterar os termos e as informações de preço a qualquer momento, que isso entra em vigor assim que for publicado no site, e que o próprio NightOwl decide sozinho se uma alteração é “substancial”
    Avisar mudanças nos termos de um app instalado localmente por meio de atualização no site... é para assinar até os feeds sociais para acompanhar?

    • Um amigo que fechou um contrato de internet/telefone empresarial com a Comcast alguns anos atrás viu uma redação parecida, e nem havia uma URL real
      Minha intuição dizia que era uma cláusula inexequível e abusiva, mas também imagino que o jurídico da Comcast tenha analisado isso
      Fico curioso se há algum advogado que saiba se esse tipo de redação é válido quando mudanças contratuais são publicadas em um site, especialmente sem notificação separada
    • Talvez o maps.me também esteja em uma situação parecida
      Antes era um bom front-end para o OpenStreetMap, mas, pelo que sei, foi adquirido por uma firma de investimento para monetização
      Fico curioso sobre o estado atual do app, se o modelo de receita é parecido com o descrito aqui, e quais seriam boas alternativas
    • Cláusulas desse tipo já foram invalidadas antes, e há uma boa chance de que isso aconteça de novo se alguém estiver disposto a processar: https://arstechnica.com/tech-policy/2007/07/court-says-no-to..., https://scholar.google.com/scholar_case?case=592583419165850...
      No caso da Safeway, o tribunal decidiu que consumidores não podem concordar com termos futuros que ainda não existem, e que, se não receberam notificação de mudanças nos termos, não se pode considerar que concordaram com os termos modificados apenas por continuarem usando o serviço
    • Fico curioso se houve alguma mudança de política ou funcionalidade parecida recentemente na extensão do Chrome The Great Suspender
      Parece que os navegadores a marcaram como insegura
  • O fato de o app criar muitas conexões com sites de venda de ingressos de música ao vivo é um uso comum em proxies residenciais
    Cambistas de ingressos usam os dispositivos de usuários infectados para contornar bloqueios de hosts de datacenter ou limites de acesso em massa, aumentando a chance de conseguir ingressos com valor de revenda depois
    Extensões gratuitas de navegador, apps de VPN etc. que recebem backdoors por meio do criador, de invasores do repositório ou, como neste caso, de um comprador podem transformar os dispositivos dos usuários nesse tipo de proxy

    • A NordVPN também usa esse tipo de abordagem
      Google e Amazon possuem grandes faixas de IP para seus serviços de nuvem, então bots baseados na AWS ou no Google Cloud são relativamente fáceis de detectar
      Por outro lado, a Verizon também tem grandes faixas de IP que distribui a clientes residenciais, e a NordVPN se aproveita do fato de que serviços como Netflix ou Amazon não querem bloquear toda a faixa de IPs da Verizon para fazer o tráfego parecer residencial
  • Eu realmente detesto aquisições silenciosas
    Também é horrível como é muito comum agentes maliciosos comprarem extensões do Chrome para desenvolvedores e depois transformá-las em malware

    • Como mantenedor de uma extensão do Chrome com alguma popularidade, passei a receber tantas propostas de aquisição que comecei a reuni-las publicamente para todo mundo ver
      https://chrome.google.com/webstore/detail/hover-zoom%20/pccc...
      https://github.com/extesy/hoverzoom/discussions/670
    • A ideia de um app que monitore os donos de apps parece boa
      Bastaria enviar um alerta bem chamativo se o proprietário mudar da noite para o dia
    • O problema dos apps gratuitos está aqui
      Quase ninguém quer doar, e empresas decentes também não querem comprar o app para monetizá-lo, então, no fim, só as piores empresas, que querem explorar os usuários, acabam comprando extensões e apps
      Esses apps gratuitos têm valor, mas isso não se converte em renda para o desenvolvedor, que acaba procurando outro caminho
    • Isso me lembra a aquisição do ActionDash pela Sensor Tower
      Era um app muito invasivo que inevitavelmente precisava de permissões enormes para oferecer recursos no nível do sistema, e não faz sentido ele ter passado tranquilamente para uma empresa de publicidade e venda de dados
    • Não entendo o que há de silencioso nisso
      Está escrito exatamente nos Termos de Uso com os quais o usuário concordou ao usar o software, então no fim vira algo como o princípio de responsabilidade do comprador
  • A explicação de que o modo automático integrado do macOS só alterna quando o usuário se afasta do computador é estranha
    Se você configurar o agendamento/localização do Night Shift e deixar o modo escuro no automático, ele muda imediatamente; e, se usar um launcher ou o Spotlight, também dá para alternar com uma linha de AppleScript como tell application "System Events" to tell appearance preferences to set dark mode to not dark mode

    • No meu caso, não é assim
      Eu diria que a probabilidade de o modo escuro ligar ao pôr do sol é de cerca de 25%
      Isso vem acontecendo há anos, até o Ventura, e fico curioso se para outras pessoas sempre funcionou perfeitamente
    • Em 2018, quando o NightOwl foi lançado, algumas ou todas essas conveniências ainda não existiam
  • A Apple parece ter revogado o certificado de desenvolvedor
    Fiquei curioso se existe algum log público que mostre quando ele foi revogado
    O carregamento do app foi bloqueado, mas as duas dylib ainda estavam em execução; imaginei que talvez isso tivesse acontecido depois que a revogação do certificado já tinha começado
    Mesmo depois de fazer logout e entrar de novo, elas continuavam em execução, então pode ser algo que persiste além do logout
    Também apareceu um prompt no firewall do macOS perguntando se eu queria permitir que o binário AutoUpdate mencionado recebesse conexões, então parece que tudo isso foi distribuído nos últimos dias
    Ao reiniciar, apareceu a caixa de diálogo “NightOwl” will damage your computer. You should move it to the Trash. e, mesmo permitindo, /Users/*/Library/LaunchAgents/NightOwlUpdater.plist e o arquivo de preferências comum permaneceram, então a limpeza não foi completa
    Para usuários não técnicos que não têm familiaridade com o Terminal, parece melhor orientar a reiniciar

  • No meu ambiente, o macOS derrubou o app e se recusou a abri-lo
    Troquei pelo NightFall: https://github.com/r-thomson/Nightfall

    • Também dá para colocar os ajustes de Tela diretamente na barra de menus com a configuração abaixo
      Settings > Control Center > Display > Always Show in Menu Bar
      Ainda exige um clique a mais para ativar e desativar o modo escuro, mas também permite usar o Night Shift e é 100% nativo
    • Também é possível criar algo bem simples por conta própria com o app Automator padrão
      Abra o Automator, crie um novo aplicativo, selecione “change system appearance” e escolha alternar entre modo claro/escuro
      Depois de salvar, você pode abrir o nome desse app pelo Spotlight para alternar o modo; imagino que também dê para fazer com Shortcuts
    • Se você só precisa alternar o modo, dá para fazer isso diretamente com o BetterTouchTool
      Configurei um atalho global com clique direito+Option+Command e funciona muito bem
  • Acho que deveria existir alguma lei que pudesse ser aplicada a esse tipo de coisa
    Deveria haver um contrato implícito de que o software faz o que diz fazer e não faz algo completamente diferente, com punições pesadas em caso de violação

    • Também deveríamos criar cada um o nosso próprio EULA e considerar que a outra parte concordou implicitamente
      Se enviássemos um arquivo EULA de 10 MB a cada requisição para grandes sites, repetindo até que aceitassem, isso poderia virar um “DDoS por EULA”
    • Licenças comuns são redigidas deliberadamente de forma explícita para que esse tipo de contrato não fique implícito
      A cláusula em maiúsculas da MIT License começa dizendo que o software é fornecido “no estado em que se encontra”, sem garantias expressas ou implícitas de comercialização ou adequação a um propósito específico, e a seção 15 da GPL traz uma redação quase igual
      https://opensource.org/license/mit/
      https://www.gnu.org/licenses/gpl-3.0.html#section15
    • Termos contratuais implícitos por lei realmente existem
      A legislação britânica de contratos de consumo, influenciada pela Diretiva de Direitos do Consumidor da UE, foi estendida desde 2015 para incluir conteúdo digital e contém termos implícitos de que os produtos devem ter qualidade satisfatória e que serviços contínuos como Netflix, Spotify e softwares com atualizações não podem mudar drasticamente em relação ao que foi fornecido originalmente
      https://www.legislation.gov.uk/ukpga/2015/15/part/1/chapter/...
      A maioria das jurisdições tem regras parecidas, e os países da UE devem ter leis que implementam a Diretiva de Direitos do Consumidor
      Mas isso se aplica quando houve pagamento; como o NightOwl é gratuito, as expectativas legais que regulam a venda de produtos e serviços não se aplicam da mesma forma
      É ruim uma empresa ser adquirida e o produto passar a incluir spyware, mas também não seria desejável ver um adolescente ou desenvolvedor hobbyista que publicou software livre ou freeware para aprender a programar ser processado por uma gigante por fazer algo como o left-pad
      O peso da regulação tecnológica deveria recair muito mais sobre empresas como Google, Microsoft e Apple do que sobre pequenos desenvolvedores que criam utilitários gratuitos para a barra de menus ou extensões do Chrome
      Impedir que pequenos apps gratuitos e de código aberto se tornem vetores de ataque à cadeia de suprimentos ainda é difícil, e exige melhorias lentas e imperfeitas, como sandboxing melhor, permissões em nível de app, monitoramento de rede por app e detecção de anomalias, além de construção de confiança no processo de empacotamento/distribuição; processos judiciais provavelmente não são a resposta
  • A parte que diz que ele tenta abrir o encaminhamento de porta UPnP, mas falha porque os nomes das chaves ficam embaralhados no roteador, na verdade deveria falhar em qualquer roteador
    Porque UPnP deve ficar desativado

    • UPnP é uma especificação péssima, mas é um paliativo para recuperar uma capacidade básica que dispositivos conectados à internet em ambientes residenciais deveriam ter
      Todo app P2P, como o Tailscale, precisa temporariamente agir como um servidor e permitir tráfego de entrada
      Sem esse recurso, por assim dizer, vira um cidadão de segunda classe e trata o usuário como criança
      Claro que dá para abrir portas manualmente, mas, por causa de uma UX difícil de encontrar, inconsistente e complexa, isso é inacessível para a maioria dos usuários, e a maioria nem sabe o que é uma porta
    • Basta pensar nos familiares que usam Mac “porque não querem a chateação de um notebook Windows”
      Eles também não querem a chateação de desligar UPnP, e essa configuração provavelmente está ativada, você sabendo mais sobre o assunto ou não
    • Desativar UPnP deixa você mais seguro, mas, se você também não desativar todos os NAT ALG do roteador, ainda fica exposto
      A maioria dos roteadores provavelmente nem tem essa configuração, então, se um dispositivo infectado faz parte do seu modelo de segurança, é prudente assumir que o NAT está, na prática, totalmente neutralizado por causa de ataques de NAT slipstream
      Um dispositivo infectado pode alterar a tabela NAT do roteador e fazê-lo se comportar, na prática, como UPnP, mas sem oferecer uma UI para o usuário auditar
      Se você usa apenas IPv6 sem NAT, desativar UPnP pode ser uma boa medida de segurança quando você estiver disposto a gerenciar manualmente todas as exceções de firewall, mas, para a maioria das pessoas hoje, o firewall do host é a única forma de proteção confiável
    • Não sei se a ideia é negar completamente a própria necessidade do UPnP
      É uma fala bem confusa
  • Os termos dizem que “o aplicativo altera as configurações de rede do dispositivo do usuário para usá-lo como gateway de tráfego de internet e compartilhar tráfego de internet, e os clientes da NightOwl incluem empresas de pesquisa web/de mercado, SEO, proteção de marca, entrega de conteúdo e cibersegurança”
    Isso é coisa de tocar fogo mesmo

    • Eu normalmente pensava que, quanto mais suspeita fosse uma coisa, mais esconderiam esse fato
      Mas fico sinceramente curioso sobre por que explicitaram isso nos Termos de Uso
      Uma organização capaz de colocar uma funcionalidade suspeita dessas parece que também esconderia ativamente que faz isso, então fico me perguntando se há algum motivo pelo qual escrever nos termos protegeria juridicamente a NightOwl
      Por exemplo, não sei se originalmente poderiam ser processados com sucesso, mas, se isso estiver nos termos, fica tudo bem; ou se esse tipo de comportamento suspeito é tecnicamente legal desde que esteja nos termos
    • Parece que a permissão para “modificar as configurações de rede do dispositivo” já estava incluída nas permissões concedidas para a função original, alternar para o modo escuro
      Se for isso, é bem decepcionante, e seria bom que as permissões dos apps fossem mais granulares
    • O uso de “enables” aqui soa como se estivessem embalando isso como uma oportunidade, não como uma invasão de liberdade e privacidade
    • É preciso expor publicamente os nomes reais do desenvolvedor e da empresa para constrangê-los
  • Usar o Little Snitch ajuda a detectar a quais IPs e endereços um app está se conectando e a bloquear essas conexões

    • Também existe o LuLu
    • Sempre que possível, paguei pelo Little Snitch
      Espero que nunca considerem uma venda