npm 오류! 404 찾을 수 없음 : event-stream@3.3.6


85

프로젝트를 배포하려고하는데 갑자기이 오류가 발생합니다.

npm 오류! 404 찾을 수 없음 : event-stream@3.3.6


1
npm은이 패키지를 더 이상 사용하지 않습니다. check github.com/webpack/webpack-cli/issues/698
Prayag C. Patel


package-lock.json 파일을 삭제하면 npm 설치가 정상적으로 작동합니다.
Jitendra Pawar

답변:


189

tldr;

이런 젠장! 이벤트 스트림 패키지에는 해커가 비트 코인을 훔칠 수있는 취약점이있는 것으로 밝혀졌습니다.

이를 수정하려면 event-stream패키지 를 업데이트해야 합니다.

  1. node_modules폴더를 삭제하십시오 .
  2. package-lock.json파일을 삭제 하십시오.
  3. 을 실행 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 감사를 실행하여 프로젝트에 취약한 종속성이 포함되어 있는지 확인할 수 있습니다. 이 이벤트 스트림의 영향을받는 버전을 설치 한 경우 가능한 한 빨리 최신 버전으로 업데이트하는 것이 좋습니다.


7
아니면 그냥 할 수 npm list event-stream있는 최고 수준의 패키지 및 업데이트

4
패키지 잠금을 삭제하는 것은 나쁜 생각처럼 들립니다. NPM 블로그 게시물에 대한 링크를 공유하십시오.
pronebird

와. 인용 한 기사에 대한 링크가 있습니까? 편집-발견 : blog.npmjs.org/post/180565383195/…
friederbluemle

7

실제로 event-stream@3.3.6에 의존하는 모든 패키지를 업데이트 할 필요는 없습니다.

을 열고 package-lock.json모든 이벤트 스트림 참조를 제거한 다음 npm install다시 호출 할 수 있습니다 . 더 빨라질 것입니다.

그 후 npm shrinkwrap && mv npm-shrinwrap.json package-lock.json전체 파일이 아닌 이벤트 스트림 참조 만 업데이트해야합니다.


4

아래 방법을 따르십시오.

  1. node_modules 및 package_lock.json 파일 삭제

  2. npm 목록 이벤트 스트림 실행

  3. npm 감사 실행
  4. npm 캐시 확인 실행
  5. npm install 실행
  6. git add를 실행합니다. (필수 파일 추가)
  7. git commit 실행 (변경 사항 커밋)
  8. git push 실행 (코드 푸시)

3

다음 단계로이 문제를 해결합니다.

  1. /node_cache/_logs/xxxx-xx-xxx-debug.log에서이 오류에 대한 최신 로그를 엽니 다.
  2. 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

  1. 이 경우 루트는 nodemon이므로 다음 방법으로 수정할 수 있습니다. npm install nodemon@1.18.4
  2. npm이 지금 성공적으로 설치되었습니다.

2

npm-run-all을 package.json에서 4.1.3에서 4.1.5로 업데이트했습니다 (잠금 파일 이벤트 스트림에서 제거) 그런 다음 npm을 설치합니다.


2

주석에서 언급했듯이 근본적인 문제는 package-lock.json더 이상 사용되지 않는 패키지가 포함 된 (잠금 파일) 이었습니다 . 잠금 파일을 삭제하고 종속성을 다시 설치하면 문제가 해결되었습니다.

이를 수행하는 가장 빠른 방법은 다음 두 단계입니다.

  • package-lock.json파일 삭제
  • 유형 npm i(또는 npm install)을 사용하여 종속성 다시 설치
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.