2 pontos por GN⁺ 4 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • Caso de ataque de engenharia social em que uma recrutadora abordou por mensagem no LinkedIn e pediu revisão de um repositório público no GitHub sob o pretexto de contratar um engenheiro líder
  • No código enviado para revisão havia um backdoor disfarçado de suíte de testes, e o pedido para "verificar um problema com módulos Node depreciados" era uma isca para induzir a execução de npm install
  • Ao desconfiar, em vez de analisar localmente, o código foi inspecionado em um VPS descartável com um agente em modo somente leitura, e o arquivo problemático foi detectado em poucos segundos
  • Tanto os commits do repositório quanto o perfil da recrutadora usavam indevidamente a identidade de pessoas reais, se passando respectivamente por um desenvolvedor real e uma jornalista da área de artes
  • O caso traz lições práticas de defesa: desconfiança, higiene de segurança (security hygiene) e o uso de agentes somente leitura se mostraram mais eficazes do que ler o código manualmente

Como aconteceu a abordagem

  • Na semana passada, chegou uma mensagem no LinkedIn de uma recrutadora de uma pequena startup de cripto
    • Houve algumas trocas de mensagens ao longo de alguns dias, explicando um proof-of-concept quebrado que precisava de um engenheiro líder
    • Ela enviou um repositório público no GitHub para revisão e pediu para "verificar um problema com módulos Node depreciados"
  • Pedidos para revisar codebases já existentes são comuns, mas havia algo estranho, o que aumentou a cautela

Como a verificação foi feita

  • Em vez de clonar e instalar dependências localmente, foi criado um VPS descartável na Hetzner e o repositório foi clonado lá
  • O Pi foi configurado em modo somente leitura, com apenas ferramentas de leitura de arquivos ativadas
    • Comando usado: pi --tools read,grep,find,ls
  • Ao pedir ao agente que revisasse a codebase e apontasse itens suspeitos, ele praticamente parou na hora em app/test/index.js

Estrutura do backdoor

  • O repositório tinha a forma de frontend React + backend Node
  • A armadilha estava em app/test/index.js, com cerca de 250 linhas, disfarçada de suíte de testes
  • Por dentro, a URL era montada em partes para ficar oculta
  • O payload estava escondido entre testes fictícios comentados e fazia com que qualquer coisa enviada pelo servidor fosse executada na máquina da vítima
    • O payload ficava na linha 225

Mecanismo de disparo

  • O arquivo não esperava a execução dos testes
    • app/index.js executava const test = require('./test'), carregando e rodando app/test/index.js
  • O package.json conectava app/index.js à etapa de inicialização
  • O ponto central era o script prepare, que o npm executa automaticamente após npm install
    • Ou seja, só instalar as dependências já disparava o backdoor
  • A instrução para "verificar o problema com módulos Node depreciados" era, no fim, uma isca para induzir a execução de npm install
  • Até daria para executar o payload em sandbox e observar uma carga útil de segundo estágio, mas a análise foi interrompida assim que ficou provado que o servidor faria a máquina executar código entregue por ele

A primeira identidade roubada

  • Os commits foram feitos com o nome e e-mail de um desenvolvedor full stack real
    • Ele tinha um perfil normal no LinkedIn, site pessoal e uma conta no GitHub com histórico antigo
  • Fingindo ter herdado a codebase, foi feito contato com esse desenvolvedor
    • Ele respondeu que nunca trabalhou para aquela empresa, que já havia sido personificado antes no GitHub e que repositórios já tinham sido derrubados por isso, além de não ter qualquer relação com este repositório
    • Também disse que estava denunciando esses repositórios por conta própria
  • Todo o histórico de commits, 39 commits ao todo, estava atribuído a um desenvolvedor que nunca tocou naquele repositório

A segunda identidade roubada

  • O perfil da recrutadora pertencia a uma jornalista real da área de artes, com histórico apenas no setor cultural e nenhum elemento técnico
  • Quando foi dito que a instalação não funcionava, a jornalista de uma área não técnica virou instantaneamente especialista em npm e versões do Node e passou a pressionar pela execução de npm install

Isso pode acontecer com qualquer pessoa

  • Já se ouvia falar desse tipo de ataque e até havia relatos no HN, mas ser alvo direto ainda assim pegou de surpresa
    • Havia desconfiança desde a primeira mensagem, mas em um dia de cansaço ou pressa, daria facilmente para executar npm install sem pensar muito
  • Mensagens no LinkedIn pedindo revisão de repositório exigem um pouco de cautela e higiene de segurança
  • Revisar o código com um agente somente leitura foi mais eficaz do que ler tudo manualmente
    • O backdoor estava disfarçado de código amador e malfeito, mas o agente o detectou em segundos
  • O repositório foi denunciado no GitHub e a recrutadora no LinkedIn, mas até agora nada mudou e o código continua publicado

1 comentários

 
GN⁺ 4 시간 전
Comentários no Hacker News
  • Um recrutador de uma pequena startup de cripto enviou um repositório público no GitHub pedindo para revisar uma prova de conceito quebrada e verificar um “deprecated Node modules issue”, e isso acabou sendo um phishing para induzir npm install
    O script prepare era executado automaticamente após npm install e funcionava como um backdoor que rodava código arbitrário servido pelo servidor na máquina local; é assustadoramente grave que esse tipo de phishing possa acontecer pelo LinkedIn

    • O LinkedIn não oferece um meio de a empresa negar usuários que afirmam trabalhar na $company, e basta isso estar no perfil para a pessoa aparecer na página oficial da empresa
      Nossa empresa também teve falsos recrutadores aplicando o mesmo golpe, com perfis falsos bastante convincentes e até muitas postagens relacionadas ao LinkedIn Premium, mas não eram funcionários reais
      Por mais que denunciássemos, os perfis não saíam do ar; no fim, resolvemos porque pagamos uma bebida para um conhecido que trabalhava no LinkedIn, mas nem toda startup tem esse tipo de contato
    • Se é seu amigo, você não deveria deixá-lo usar NPM
      Vendo as pessoas sendo comprometidas assim repetidamente, não dá para entender por que não se usa uma ferramenta como PNPM e por que não se fecha essa brecha tão óbvia e tão explorada de executar código arbitrário no processo de baixar código
      Ferramentas que executam código arbitrário no momento em que você tenta baixar código precisam acabar
    • Esse método era especialmente conhecido no Upwork durante a onda de cripto/NFT de 2021–2022, e em algum momento se espalhou bem além dos projetos de cripto para várias categorias
      A última coisa de que me lembro eram downloads disfarçados de arquivos de proteção de tela .scr do Windows, e ter chegado ao LinkedIn é uma etapa ainda pior
      A plataforma provavelmente não vai se importar muito, já que isso aparenta ser “crescimento de vagas”, parecido com como redes de anúncios como Google ou Meta não parecem se importar muito com anúncios fraudulentos
    • Já passei por phishing tentando arrancar meu e-mail e mandando coisas como bullshitpowershellladendoucument.pdf.docx, mas enviar direto por DM do LinkedIn é uma estratégia bem ousada
    • Tenho feito muitas entrevistas recentemente e já encontrei alguns golpistas óbvios; espero que isso aconteça não porque eu pareça burro o bastante para cair, mas porque esse tipo de golpe ficou mais comum
  • Isso certamente deveria ser crime, mas não entendo por que não existe um canal bem conhecido, tipo um 911 para cibercrime, onde se possa denunciar isso e conseguir ajuda
    A sociedade precisa alcançar os riscos reais e criar rapidamente uma rede de apoio, porque crime organizado exige defesa organizada

    • Infelizmente, os cibercriminosos maliciosos conhecem um truque esquisito: cometer crimes a partir de países que não ligam para esse tipo de crime
    • https://www.ic3.gov
      Você provavelmente não vai receber resposta, mas para cidadãos americanos, e talvez para qualquer pessoa, é o lugar mais próximo de um 911 da internet que eu conheço
    • O problema central é que não existe um 911 global que funcione no mundo todo
      O segundo problema é a assimetria: o esforço para criar esse tipo de golpe é praticamente zero, enquanto capturar e processar os responsáveis exige grande esforço e custos astronômicos
    • Falando cinicamente, essa é uma ramificação bem alta e difícil de alcançar na árvore das coisas ruins que as pessoas fazem umas às outras
      Fica numa categoria parecida com ligações de golpe fingindo ser o suporte da Microsoft para enganar idosos, e é quase impossível capturar suspeitos
      Ou porque escondem muito bem os rastros, ou, mais frequentemente, porque vivem em países cujo governo não liga — ou até tolera — golpes contra ocidentais
    • O FBI tem o IC3, mas a resposta a cibercrime é péssima e na prática inútil
      Mesmo que você denuncie o crime, é bem provável que não recebam seu caso nem entrem em contato
  • Isso hoje em dia está desconfortavelmente próximo de uma tarefa comum de entrevista
    Alguém mandar um repositório dizendo que a instalação está quebrada e pedir para você dar uma olhada é algo natural, e muitos desenvolvedores, cansados ou procurando emprego, podem rodar npm install sem pensar muito

    • No contexto de entrevista é pior ainda
      Você não quer parecer lento, então acaba pulando a etapa de perguntar se aquilo sequer deveria ser executado
  • “Denunciei o repositório ao GitHub e o recrutador ao LinkedIn, mas nada mudou e o código continua no ar”, ah, Microsoft

    • Já vi no LinkedIn um anúncio fingindo ser da CBC News do Canadá
      Levava para um vídeo falso do primeiro-ministro canadense anunciando um plano de investimento em cripto para todos os canadenses, com link para cadastro; quando denunciei, responderam que após investigação não encontraram violação de política
    • Não é estranho? A Microsoft é dona do LinkedIn, GitHub e NPM
      Os três têm problemas de segurança ou confiabilidade, e quanto mais a Microsoft se aprofunda em IA, mais parece piorar em vez de melhorar
      Não faço ideia para onde está indo toda aquela produtividade interna com IA, aquela produtividade “10x”, como alguns dizem
    • Você deveria ter denunciado como violação de DMCA
      Aí teria saído do ar imediatamente
  • Parece que usam o mesmo domínio para vários alvos
    Há um tópico parecido no Reddit de 3 meses atrás: https://www.reddit.com/r/openclaw/comments/1rlet0h/someone_t...

  • Não consigo entender por que todos os sistemas operacionais do mundo ainda não bloquearam o npm
    Essa gente aparentemente nunca vai aprender

    • Isso não tem a ver com o npm em si
      Esse tipo de golpe seria possível com várias tecnologias, e poderia até funcionar com um Makefile
  • Seria bom se o Mac finalmente tivesse um framework de virtualização realmente decente
    Já cansou bastante essa história de baixar scripts aleatórios da internet sem proteção, como se ainda estivéssemos em 1995
    Ao encontrar desconhecidos e colocar as coisas deles no fundo do seu computador, não se pode esquecer de usar equipamento de proteção

    • Rodar scripts aleatórios curl | bash vindos do GitHub, AUR ou NPM é igualmente ruim, mas muitos desenvolvedores aqui ainda têm suposições duvidosas sobre essa má prática
      Vários pequenos incidentes do tipo Shai-Hulud nas últimas semanas mostram como isso é ruim
    • O Mac já tem uma forma razoável
      No IntelliJ, dá para configurar os comandos npm para rodarem dentro de um container Docker
  • Todas as propostas de vaga que recebi no LinkedIn pareciam suspeitas demais
    Eram coisas como pedir para se candidatar por uma plataforma, gravar um vídeo de apresentação, ou fazer um teste de programação de triagem atrás de uma plataforma de código

    • Meu irmão ficou muito tempo desempregado por causa de doença e recebeu no LinkedIn uma “proposta de emprego” que parecia plausível
      Pediram que ele emitisse um cheque como depósito de garantia para um notebook da empresa; mesmo parecendo absurdo à primeira vista, ele estava desesperado depois de tanto tempo procurando trabalho e ficou genuinamente feliz por finalmente ter conseguido uma vaga
      Quem está desempregado há muito tempo muitas vezes fica tão desesperado que ignora sinais de alerta gravíssimos, sinais nos quais alguém com poupança suficiente ou já empregado buscando trocar de trabalho jamais cairia
  • Não é assim que a maioria dos autores de pacotes NPM acaba sendo hackeada hoje em dia?
    Parece que o responsável pelo axios também caiu em uma abordagem parecida via LinkedIn

    • Parece um caso de alguém sendo vítima da própria armadilha
  • Eu só uso o LinkedIn por causa das vagas, mas nos últimos meses apareceu anúncio inútil demais
    Tem um monte de vagas de empresas parecidas com Ladders, Swooped, e parece que chegou a hora de abandonar o LinkedIn de vez