프로젝트를 배포하려고하는데 갑자기이 오류가 발생합니다.
npm 오류! 404 찾을 수 없음 : event-stream@3.3.6
답변
tldr;
이런 젠장! 이벤트 스트림 패키지에는 해커가 비트 코인을 훔칠 수있는 취약점이있는 것으로 밝혀졌습니다.
이를 수정하려면 event-stream
패키지 를 업데이트해야 합니다.
node_modules
폴더를 삭제하십시오 .package-lock.json
파일을 삭제 하십시오.- 을 실행
npm install
합니다.
이렇게하면 패키지가 안전한 버전으로 업데이트되고 계속 진행할 수 있습니다.
NPM 블로그의 공식 답변은 다음과 같습니다.
이벤트 스트림 인시던트에 대한 세부 정보 이것은 많은 분들이 이번 주 초에 알게 된 이벤트 스트림 인시던트에 대한 분석입니다. npm은 우리 커뮤니티의 안전에 영향을 미치는 운영상의 문제와 문제를 해결하기 위해 즉시 조치를 취하지 만 일반적으로 사고를 논의하기 전에보다 철저한 분석을 수행합니다.
11 월 26 일 아침, npm의 보안 팀은 인기있는 npm 패키지 인 이벤트 스트림에 침입 한 악성 패키지에 대해 알림을 받았습니다. 악성 코드를 분류 한 후 npm Security는 레지스트리에서 flatmap-stream 및 event-stream@3.3.6을 제거하고 추가 남용을 방지하기 위해 이벤트 스트림 패키지의 소유권을 가져옴으로써 대응했습니다.
악성 패키지는 flatmap-stream의 버전 0.1.1이었습니다. 이 패키지는 버전 3.3.6에서 2018 년 9 월 9 일에 새로운 관리자가 이벤트 스트림 패키지의 직접적인 종속성으로 추가했습니다. 이벤트 스트림 패키지는 널리 사용되지만 악성 코드는 매우 특정한 개발 환경 설정이있는 회사의 개발자를 대상으로합니다. 다른 환경에서 페이로드를 실행해도 효과가 없습니다. 이 특정 타겟팅은 궁극적으로 대부분의 개발자가 악성 모듈을 실수로 설치 한 경우에도 영향을받지 않음을 의미합니다.
삽입 된 코드는 Copay 애플리케이션을 대상으로합니다. Copay의 개발자가 릴리스 빌드 스크립트 중 하나를 실행하면 결과 코드가 애플리케이션에 번들링되기 전에 수정됩니다. 이 코드는 잔액이 100 비트 코인 또는 1000 비트 코인 캐시 이상인 계정에서 계정 세부 정보와 개인 키를 수집하도록 설계되었습니다.
Copay의 초기 응답은이 악성 코드가 포함 된 빌드가 공개되지 않았다는 것이었지만 이제 Copay로부터 “악성 코드가 버전 5.0.2에서 5.1.0까지 배포되었습니다.”라는 확인을 받았습니다.
공격이 공격은 사회 공학 공격으로 시작되었습니다. 메인테이너로 가장 한 공격자는 이벤트 스트림 모듈의 메인테이너 십을 인수했습니다.
기술적 세부 사항 여기에 관심이있는 분들을 위해 우리가 알고있는 몇 가지 기술적 세부 사항이 있습니다.
삽입 된 코드 :
테스트 픽스처로 위장한 파일에서 AES 암호화 데이터 읽기 자동으로 설정된 환경 변수를 사용하여 가져온 모듈의 npm 패키지 설명을 가져 왔습니다. 위장 된 파일에서 가져온 데이터 청크를 해독하는 키로 패키지 설명을 사용했습니다. 해독 된 데이터는 모듈의 일부였으며 메모리에서 컴파일되어 실행되었습니다.
이 모듈은 다음 작업을 수행했습니다.
위장 된 파일에서 다른 데이터 청크를 해독했습니다. 첫 번째 해독 된 청크에서 두 번째 해독 된 청크의 끝까지 주석 처리 된 작은 접두사를 연결했습니다. 연결된 코드 블록을 잘못된 JS에서 유효한 JS로 변환하기 위해 부 디코딩 작업을 수행했습니다. 동적 분석 도구에 의한 탐지를 회피하기 위해 수행됨)이 처리 된 JS 블록을 빌드 스크립트에 의해 패키징되는 종속성에 저장된 파일에 작성했습니다. 작성된 코드 덩어리는 실행되도록 의도 된 실제 악성 코드였습니다. Copay의 최종 사용자가 소유 한 장치에서.
이 코드는 다음을 수행합니다.
현재 환경 감지 : 모바일 / Cordova / Electron 피해자의 코 페이 계정에서 비트 코인 및 비트 코인 캐시 잔액 확인 현재 잔액이 100 비트 코인 또는 1000 비트 코인 캐시보다 큰 경우 : 피해자의 계정 데이터를 전체적으로 수집 피해자의 코 페이 개인 키를 수집합니다. 피해자의 계정 데이터 / 개인 키를 111.90.151.134에서 실행되는 수집 서비스로 보냅니다. Copay 앱 사용자의 경우 bitpay는“5.0.2에서 5.1.0까지의 버전을 사용하는 경우 Copay 앱을 실행하거나 열지 말아야합니다.”라고 권장합니다.
npm 사용자의 경우 npm 감사를 실행하여 프로젝트에 취약한 종속성이 포함되어 있는지 확인할 수 있습니다. 이 이벤트 스트림의 영향을받는 버전을 설치 한 경우 가능한 한 빨리 최신 버전으로 업데이트하는 것이 좋습니다.
답변
실제로 event-stream@3.3.6에 의존하는 모든 패키지를 업데이트 할 필요는 없습니다.
을 열고 package-lock.json
모든 이벤트 스트림 참조를 제거한 다음 npm install
다시 호출 할 수 있습니다 . 더 빨라질 것입니다.
그 후 npm shrinkwrap && mv npm-shrinwrap.json package-lock.json
전체 파일이 아닌 이벤트 스트림 참조 만 업데이트해야합니다.
답변
아래 방법을 따르십시오.
-
node_modules 및 package_lock.json 파일 삭제
-
npm 목록 이벤트 스트림 실행
- npm 감사 실행
- npm 캐시 확인 실행
- npm install 실행
- git add를 실행합니다. (필수 파일 추가)
- git commit 실행 (변경 사항 커밋)
- git push 실행 (코드 푸시)
답변
다음 단계로이 문제를 해결합니다.
- /node_cache/_logs/xxxx-xx-xxx-debug.log에서이 오류에 대한 최신 로그를 엽니 다.
event-stream
예를 들어 잎 의 뿌리를 찾으십시오 .
45 silly saveTree +-- nodemon@1.18.4
45 silly saveTree | +-- chokidar@2.0.4
45 silly saveTree | +-- pstree.remy@1.1.0
45 silly saveTree | | `-- ps-tree@1.2.0
45 silly saveTree | | `-- event-stream@3.3.6
45 silly saveTree | | +-- duplexer@0.1.1
45 silly saveTree | | +-- from@0.1.7
45 silly saveTree | | +-- pause-stream@0.0.11
45 silly saveTree | | `-- split@0.3.3
- 이 경우 루트는 nodemon이므로 다음 방법으로 수정할 수 있습니다. npm install nodemon@1.18.4
- npm이 지금 성공적으로 설치되었습니다.
답변
npm-run-all을 package.json에서 4.1.3에서 4.1.5로 업데이트했습니다 (잠금 파일 이벤트 스트림에서 제거) 그런 다음 npm을 설치합니다.
답변
주석에서 언급했듯이 근본적인 문제는 package-lock.json
더 이상 사용되지 않는 패키지가 포함 된 (잠금 파일) 이었습니다 . 잠금 파일을 삭제하고 종속성을 다시 설치하면 문제가 해결되었습니다.
이를 수행하는 가장 빠른 방법은 다음 두 단계입니다.
package-lock.json
파일 삭제- 유형
npm i
(또는npm install
)을 사용하여 종속성 다시 설치