{"id":24861,"date":"2026-04-07T09:00:26","date_gmt":"2026-04-07T12:00:26","guid":{"rendered":"https:\/\/www.kaspersky.com.br\/blog\/?p=24861"},"modified":"2026-04-06T13:44:42","modified_gmt":"2026-04-06T16:44:42","slug":"indonesianfoods-npm-spam-campaign","status":"publish","type":"post","link":"https:\/\/www.kaspersky.com.br\/blog\/indonesianfoods-npm-spam-campaign\/24861\/","title":{"rendered":"Pacotes de spam no npm: o que s\u00e3o e por que s\u00e3o perigosos?"},"content":{"rendered":"<p>O que as palavras bakso, sate e rendang trazem \u00e0 mente? Para muitos, a resposta \u00e9 \u201cnada\u201d; os amantes da gastronomia as reconhecer\u00e3o como alimentos b\u00e1sicos da Indon\u00e9sia. J\u00e1 aqueles que seguem as not\u00edcias de seguran\u00e7a cibern\u00e9tica se lembrar\u00e3o de um ataque ao ecossistema Node Package Manager (npm), a ferramenta que permite que os desenvolvedores usem bibliotecas pr\u00e9-formatadas em vez de escrever cada linha de c\u00f3digo do zero.<\/p>\n<p>Em meados de novembro, o <a href=\"https:\/\/sourcecodered.com\/indonesianfoods-npm-worm\/\" target=\"_blank\" rel=\"noopener nofollow\">pesquisador de seguran\u00e7a Paul McCarty relatou a descoberta de uma campanha de spam<\/a> destinada a sobrecarregar o reposit\u00f3rio do npm. \u00c9 claro que pacotes sem sentido j\u00e1 apareceram no reposit\u00f3rio antes, mas, neste caso, dezenas de milhares de m\u00f3dulos foram encontrados sem nenhuma utilidade. O \u00fanico objetivo deles era injetar depend\u00eancias completamente desnecess\u00e1rias em projetos.<\/p>\n<p>Os nomes dos pacotes apresentavam nomes de pratos indon\u00e9sios e termos culin\u00e1rios inseridos de forma aleat\u00f3ria, como bakso, sate e rendang, o que levou a campanha a receber o apelido \u201cIndonesianFoods\u201d. A escala foi impressionante: no momento da descoberta, aproximadamente 86\u00a0mil pacotes haviam sido identificados.<\/p>\n<p>Abaixo, veremos como isso aconteceu e o que os invasores estavam realmente procurando.<\/p>\n<h2>Dentro da IndonesianFoods<\/h2>\n<p>\u00c0 primeira vista, os pacotes da IndonesianFoods n\u00e3o pareciam lixo \u00f3bvio. Eles apresentavam estruturas padr\u00e3o, arquivos de configura\u00e7\u00e3o v\u00e1lidos e at\u00e9 mesmo documenta\u00e7\u00e3o bem formatada. De acordo com <a href=\"https:\/\/www.endorlabs.com\/learn\/the-great-indonesian-tea-theft-analyzing-a-npm-spam-campaign\" target=\"_blank\" rel=\"noopener nofollow\">pesquisadores do Endor Labs<\/a>, essa camuflagem permitiu que os pacotes permanecessem no reposit\u00f3rio do npm por quase dois anos.<\/p>\n<p>N\u00e3o \u00e9 como se os invasores tentassem a todo custo inserir suas cria\u00e7\u00f5es em projetos externos. Em vez disso, eles simplesmente inundaram o ecossistema com um c\u00f3digo de apar\u00eancia leg\u00edtima, esperando que algu\u00e9m cometesse um erro de digita\u00e7\u00e3o ou selecionasse por engano sua biblioteca nos resultados da pesquisa. N\u00e3o est\u00e1 claro exatamente o que algu\u00e9m precisaria estar procurando para confundir um nome de pacote com um prato indon\u00e9sio, mas a pesquisa original <a href=\"https:\/\/sourcecodered.com\/indonesianfoods-npm-worm\/\" target=\"_blank\" rel=\"noopener nofollow\">observa<\/a> que pelo menos 11 projetos de alguma forma inclu\u00edram esses pacotes em suas compila\u00e7\u00f5es.<\/p>\n<p>Uma pequena parte desses pacotes in\u00fateis tinha um mecanismo de autorreplica\u00e7\u00e3o incorporado: uma vez instalados, eles criariam e publicariam novos pacotes no reposit\u00f3rio do npm a cada sete segundos. Esses novos m\u00f3dulos apresentavam nomes aleat\u00f3rios (tamb\u00e9m relacionados \u00e0 culin\u00e1ria indon\u00e9sia) e n\u00fameros de vers\u00e3o. Todos publicados, como seria de esperar, usando as credenciais da v\u00edtima.<\/p>\n<p>Outros pacotes maliciosos integrados \u00e0 plataforma blockchain TEA. O <a href=\"https:\/\/tea.xyz\/\" target=\"_blank\" rel=\"noopener nofollow\">projeto TEA<\/a> foi concebido para recompensar criadores de c\u00f3digo aberto com tokens em propor\u00e7\u00e3o \u00e0 popularidade e ao uso de suas cria\u00e7\u00f5es, teoricamente operando em um modelo de \u201cprova de contribui\u00e7\u00e3o\u201d.<\/p>\n<p>Uma parte significativa desses pacotes n\u00e3o continha funcionalidade real, mas muitas vezes carregavam uma d\u00fazia de depend\u00eancias que, como voc\u00ea pode imaginar, apontavam para outros projetos de spam dentro da mesma campanha. Assim, se uma v\u00edtima incluir por engano um desses pacotes maliciosos, ele carregar\u00e1 consigo diversos outros, alguns dos quais ter\u00e3o suas pr\u00f3prias depend\u00eancias. O resultado \u00e9 um projeto final com uma enorme quantidade de c\u00f3digo redundante.<\/p>\n<h2>O que os invasores ganham com isso?<\/h2>\n<p>H\u00e1 duas teorias principais. O mais \u00f3bvio \u00e9 que toda essa elaborada campanha de spam foi projetada para explorar o protocolo TEA mencionado acima. Essencialmente, sem fazer nenhuma contribui\u00e7\u00e3o \u00fatil para a comunidade de c\u00f3digo aberto, os invasores ganham tokens TEA, ou seja, ativos digitais padr\u00e3o que podem ser trocados por outras criptomoedas em plataformas de negocia\u00e7\u00e3o. Usando uma rede de depend\u00eancias e mecanismos de autorreplica\u00e7\u00e3o, os invasores se passam por desenvolvedores de c\u00f3digo aberto leg\u00edtimos para inflar artificialmente a signific\u00e2ncia e as m\u00e9tricas de uso de seus pacotes. Nos arquivos README de determinados pacotes, os invasores at\u00e9 se gabam de seus ganhos.<\/p>\n<p>No entanto, h\u00e1 uma teoria mais assustadora. Por exemplo, o <a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/new-indonesianfoods-spammer-floods-npm-with-150-000-packages\/\" target=\"_blank\" rel=\"noopener nofollow\">pesquisador Garrett Calpouzos sugere<\/a> que o que estamos vendo \u00e9 apenas uma prova de conceito. A campanha da IndonesianFoods pode estar testando um novo m\u00e9todo de entrega de malware destinado a ser vendido posteriormente a outros agentes de amea\u00e7as.<\/p>\n<h2>Por que voc\u00ea n\u00e3o quer lixo em seus projetos<\/h2>\n<p>\u00c0 primeira vista, o perigo para as organiza\u00e7\u00f5es de desenvolvimento de software pode n\u00e3o ser \u00f3bvio: com certeza, a IndonesianFoods desordena o ecossistema, mas n\u00e3o parece carregar uma amea\u00e7a imediata, como ransomware ou viola\u00e7\u00f5es de dados.\u00a0 No entanto, as depend\u00eancias redundantes sobrecarregam o c\u00f3digo e desperdi\u00e7am recursos no sistema do desenvolvedor. Al\u00e9m disso, pacotes in\u00fateis publicados sob o nome de sua organiza\u00e7\u00e3o podem prejudicar seriamente sua reputa\u00e7\u00e3o dentro da comunidade de desenvolvedores.<\/p>\n<p>Tamb\u00e9m n\u00e3o podemos descartar a teoria de Calpouzos. Se esses pacotes de spam incorporados ao seu software receberem uma atualiza\u00e7\u00e3o que introduza uma funcionalidade realmente maliciosa, eles podem se tornar uma amea\u00e7a n\u00e3o apenas para a sua organiza\u00e7\u00e3o, mas tamb\u00e9m para seus usu\u00e1rios, evoluindo para um ataque completo \u00e0 cadeia de suprimentos.<\/p>\n<h2>Como proteger sua organiza\u00e7\u00e3o<\/h2>\n<p>Os pacotes de spam n\u00e3o entram em um projeto sozinhos; sua instala\u00e7\u00e3o ocorre em um momento de distra\u00e7\u00e3o do desenvolvedor. Portanto, recomendamos conscientizar regularmente os funcion\u00e1rios, mesmo os mais experientes, sobre as amea\u00e7as cibern\u00e9ticas modernas. Nossa plataforma interativa de treinamento, a <a href=\"https:\/\/k-asap.com\/pt\/?icid=br_kdailyplacehold_acq_ona_smm__onl_b2b_kasperskydaily_wpplaceholder____kasap___\" target=\"_blank\" rel=\"noopener\">KASAP (Kaspersky Automated Security Awareness Platform)<\/a>, pode ajudar.<\/p>\n<p>Al\u00e9m disso, voc\u00ea pode impedir a infec\u00e7\u00e3o usando <a href=\"https:\/\/www.kaspersky.com.br\/enterprise-security\/container-security?icid=br_kdailyplacehold_acq_ona_smm__onl_b2b_kasperskydaily_wpplaceholder_______\" target=\"_blank\" rel=\"noopener\">uma solu\u00e7\u00e3o especializada para proteger ambientes conteinerizados<\/a>. Ela faz a verifica\u00e7\u00e3o de imagens e depend\u00eancias de terceiros, integra-se ao processo de compila\u00e7\u00e3o e monitora cont\u00eaineres durante o tempo de execu\u00e7\u00e3o.<\/p>\n<p>Se quiser saber mais detalhes sobre os ataques contra a cadeia de suprimentos, deixamos aqui o nosso convite para consultar o relat\u00f3rio anal\u00edtico <a href=\"https:\/\/lp.kaspersky.com\/global\/report-supply-chain-reaction\/\" target=\"_blank\" rel=\"noopener nofollow\">Supply chain reaction: securing the global digital ecosystem in an age of interdependence<\/a> (Rea\u00e7\u00e3o em cadeia de suprimentos: prote\u00e7\u00e3o do ecossistema digital global em uma era de interdepend\u00eancia). Ele \u00e9 baseado em insights de especialistas t\u00e9cnicos e revela com que frequ\u00eancia as organiza\u00e7\u00f5es enfrentam riscos de cadeia de suprimentos e de relacionamento confi\u00e1vel e como estes s\u00e3o percebidos.<\/p>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"mdr\"><input type=\"hidden\" class=\"placeholder_for_banner\" data-cat_id=\"mdr\" value=\"21848\">\n","protected":false},"excerpt":{"rendered":"<p>Em novembro de 2025, o ecossistema npm foi atingido por uma enxurrada de pacotes in\u00fateis que faziam parte da campanha maliciosa IndonesianFoods. Vamos analisar as li\u00e7\u00f5es aprendidas com esse incidente.<\/p>\n","protected":false},"author":2509,"featured_media":24862,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1119,1655,1656],"tags":[218,3424,1935,2842,3028],"class_list":{"0":"post-24861","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-business","8":"category-enterprise","9":"category-smb","10":"tag-ameacas","11":"tag-ataque-a-cadeia-de-suprimentos","12":"tag-cadeia-de-suprimentos","13":"tag-desenvolvimento","14":"tag-npm"},"hreflang":[{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/indonesianfoods-npm-spam-campaign\/24861\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/indonesianfoods-npm-spam-campaign\/30300\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/indonesianfoods-npm-spam-campaign\/25355\/"},{"hreflang":"ar","url":"https:\/\/me.kaspersky.com\/blog\/indonesianfoods-npm-spam-campaign\/13298\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/indonesianfoods-npm-spam-campaign\/30150\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/indonesianfoods-npm-spam-campaign\/29090\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/indonesianfoods-npm-spam-campaign\/41535\/"},{"hreflang":"tr","url":"https:\/\/www.kaspersky.com.tr\/blog\/indonesianfoods-npm-spam-campaign\/14428\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/indonesianfoods-npm-spam-campaign\/55453\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/indonesianfoods-npm-spam-campaign\/23774\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/indonesianfoods-npm-spam-campaign\/30415\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/indonesianfoods-npm-spam-campaign\/36034\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/indonesianfoods-npm-spam-campaign\/35693\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.com.br\/blog\/tag\/cadeia-de-suprimentos\/","name":"cadeia de suprimentos"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/24861","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/users\/2509"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/comments?post=24861"}],"version-history":[{"count":1,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/24861\/revisions"}],"predecessor-version":[{"id":24863,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/24861\/revisions\/24863"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/media\/24862"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/media?parent=24861"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/categories?post=24861"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/tags?post=24861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}