🇰🇷 한글 설명
react-tracked는 Proxy를 이용한 상태 사용 추적 라이브러리입니다. 2026-05-18 19:26:36부터 2026-05-19 15:22:45 사이 기본 브랜치에 악성 커밋(6978272a7d6ca02225cb747ea69f427512e33699 ~ 949f1a3d6bb1ff7d1a0dec892afd773e742627e8)이 포함되어, npm install 실행 시 개발자 PC에서 공격자가 제어하는 원격 코드가 실행되었습니다. 해당 커밋은 force-push로 제거되었으나 로컬 클론, 포크, 직접 SHA URL에는 여전히 존재할 수 있습니다.
💡 쉬운 설명
개발자가 이 라이브러리 소스를 설치하는 과정에서 해커가 보낸 코드가 몰래 실행될 수 있었습니다. 해당 기간에 설치한 개발 PC는 침해되었을 수 있으므로 점검과 자격 증명 교체가 필요합니다.
🇺🇸 원문 (English)
react-tracked provides state usage tracking with Proxies. Between 2026-05-18 19:26:36 and 2026-05-19 15:22:45, the default branch contained malicious commits 6978272a7d6ca02225cb747ea69f427512e33699 through 949f1a3d6bb1ff7d1a0dec892afd773e742627e8 that executed remote attacker-controlled code on developer machines during `npm install`. The commits were removed by force-push, but local clones, forks, and direct-SHA URLs may still contain them, and `npm install` against an affected checkout will still execute the code today. The package was not published to npm. `src/install.js` was added and wired into the `postinstall` script. It fetched a JavaScript payload from an attacker-controlled HTTPS endpoint (configurable via an environment variable), disabled TLS verification, and evaluated the response as code with `require` available. Execution was deliberately skipped on CI and cloud/serverless environments, targeting developer workstations. The second-stage payload was attacker-hosted and cannot be reconstructed. Assume full compromise of anything reachable from a Node process with the user's permissions. Those who ran `npm install` against an affected checkout on a developer machine on or after 2026-05-18 19:26:36 should treat the machine as compromised, rotate every credential the machine could reach, audit account activity** since 2026-05-18 19:26:36, and clean local clones.
📍 영향받는 시스템
2026-05-18 19:26:36 이후 해당 악성 커밋이 포함된 react-tracked 체크아웃에서 npm install을 실행한 개발자 PC (npm 패키지 자체는 배포되지 않음)
⚔️ 공격 벡터
악성 src/install.js가 postinstall 스크립트로 실행되어 공격자 HTTPS 서버에서 JavaScript 페이로드를 받아 TLS 검증 없이 require 권한으로 eval 실행
🛡️ 대응 방법
해당 기간 체크아웃을 삭제하고 깨끗한 버전으로 재클론, 해당 PC에서 접근 가능했던 모든 자격 증명(토큰, SSH 키, 클라우드 키 등) 교체 및 계정 활동 감사 수행
🔧 검증 코드
출력이 있으면 악성 커밋 또는 install.js 참조가 존재하는 것이므로 침해 가능성이 있어 해당 클론을 삭제하고 자격 증명을 교체해야 하며, 출력이 없으면 해당 흔적이 발견되지 않은 것입니다.
grep -rl "src/install.js" node_modules/react-tracked package.json 2>/dev/null; git -C ./react-tracked log --all --oneline | grep -E '6978272a|949f1a3d'