npm ERR! 404 Không tìm thấy: event-stream@3.3.6


85

Tôi đang cố gắng triển khai dự án của mình và đột nhiên gặp lỗi này.

npm ERR! 404 Không tìm thấy: event-stream@3.3.6


1
npm không dùng gói này nữa. kiểm tra github.com/webpack/webpack-cli/issues/698
Prayag C. Patel

1
các câu hỏi đã được thảo luận trên meta: meta.stackoverflow.com/questions/378071/...
La Mã Pokrovskij

Chỉ cần xóa tệp package-lock.json và sau đó cài đặt npm hoạt động tốt.
Jitendra Pawar

Câu trả lời:


189

tldr;

Chúa ơi! Nó chỉ ra rằng gói luồng sự kiện có một lỗ hổng cho phép hacker đánh cắp bitcoin.

Để khắc phục, bạn cần cập nhật event-streamgói của mình .

  1. Xóa node_modulesthư mục.
  2. Xóa package-lock.jsontệp.
  3. Chạy đi npm install.

Thao tác này sẽ cập nhật các gói của bạn lên phiên bản an toàn và bạn nên thực hiện.

Và đây là phản hồi chính thức từ blog NPM:

Thông tin chi tiết về sự cố luồng sự kiện Đây là bản phân tích về sự cố luồng sự kiện mà nhiều bạn đã biết vào đầu tuần này. npm hành động ngay lập tức để giải quyết các mối quan tâm về hoạt động và các vấn đề ảnh hưởng đến sự an toàn của cộng đồng của chúng tôi, nhưng chúng tôi thường thực hiện phân tích kỹ lưỡng hơn trước khi thảo luận về các sự cố — chúng tôi biết bạn đã chờ đợi.

Vào sáng ngày 26 tháng 11, nhóm bảo mật của npm được thông báo về một gói độc hại đã xâm nhập vào luồng sự kiện, một gói npm phổ biến. Sau khi xử lý phần mềm độc hại, npm Security đã phản hồi bằng cách xóa flatmap-stream và event-stream@3.3.6 khỏi Hệ thống đăng ký và chiếm quyền sở hữu gói event-stream để ngăn chặn việc lạm dụng thêm.

Gói độc hại là phiên bản 0.1.1 của dòng phẳng. Gói này đã được thêm vào như một phần phụ thuộc trực tiếp của gói luồng sự kiện bởi một người bảo trì mới vào ngày 9 tháng 9 năm 2018, trong phiên bản 3.3.6. Gói luồng sự kiện được sử dụng rộng rãi, nhưng mã độc nhắm mục tiêu vào các nhà phát triển tại một công ty có thiết lập môi trường phát triển rất cụ thể: việc chạy tải trọng trong bất kỳ môi trường nào khác không có tác dụng. Việc nhắm mục tiêu cụ thể này có nghĩa là cuối cùng, hầu hết các nhà phát triển sẽ không bị ảnh hưởng ngay cả khi họ đã cài đặt nhầm mô-đun độc hại.

Mã được đưa vào nhắm mục tiêu ứng dụng Copay. Khi một nhà phát triển tại Copay chạy một trong các tập lệnh xây dựng bản phát hành của họ, mã kết quả sẽ được sửa đổi trước khi được đưa vào ứng dụng. Mã được thiết kế để thu thập thông tin chi tiết về tài khoản và khóa riêng từ các tài khoản có số dư hơn 100 Bitcoin hoặc 1000 Bitcoin Cash.

Phản hồi ban đầu của Copay là không có bản dựng nào chứa mã độc này được phát hành ra công chúng, nhưng chúng tôi hiện có xác nhận từ Copay rằng “mã độc đã được triển khai trên các phiên bản 5.0.2 đến 5.1.0.”

Cuộc tấn công Cuộc tấn công này bắt đầu như một cuộc tấn công kỹ thuật xã hội. Kẻ tấn công, đóng giả là người bảo trì, đã tiếp quản quyền bảo trì mô-đun luồng sự kiện.

Các chi tiết kỹ thuật Đây là một số chi tiết kỹ thuật mà chúng tôi biết, dành cho những người bạn quan tâm đến điều này.

Mã được tiêm:

Đọc trong dữ liệu được mã hóa AES từ một tệp được ngụy trang dưới dạng vật cố định kiểm tra Lấy mô tả gói npm của mô-đun đã nhập nó, sử dụng biến môi trường được đặt tự động Sử dụng mô tả gói làm khóa để giải mã một phần dữ liệu được lấy từ tệp được ngụy trang Dữ liệu được giải mã là một phần của mô-đun, sau đó được biên dịch trong bộ nhớ và được thực thi.

Mô-đun này đã thực hiện các hành động sau:

Đã giải mã một đoạn dữ liệu khác từ tệp được ngụy trang Nối một tiền tố nhỏ, được chú thích từ đoạn được giải mã đầu tiên đến cuối đoạn được giải mã thứ hai Thực hiện các tác vụ giải mã nhỏ để chuyển khối mã được nối từ JS không hợp lệ thành JS hợp lệ (chúng tôi tin rằng điều này là được thực hiện để tránh bị phát hiện bởi các công cụ phân tích động) Đã viết khối JS đã xử lý này ra một tệp được lưu trữ trong một tệp phụ thuộc sẽ được đóng gói bởi các kịch bản xây dựng: Đoạn mã được viết ra là mã độc thực sự, dự định sẽ được chạy trên các thiết bị do người dùng cuối của Copay sở hữu.

Mã này sẽ làm như sau:

Phát hiện môi trường hiện tại: Di ​​động / Cordova / Electron Kiểm tra số dư Bitcoin và Bitcoin Cash trên tài khoản đồng thanh toán của nạn nhân Nếu số dư hiện tại lớn hơn 100 Bitcoin hoặc 1000 Bitcoin Cash: Thu thập toàn bộ dữ liệu tài khoản của nạn nhân Thu hoạch các khóa cá nhân đồng thanh toán của nạn nhân Gửi dữ liệu tài khoản / khóa cá nhân của nạn nhân tới dịch vụ thu thập chạy trên 111.90.151.134. Đối với người dùng ứng dụng Copay, bitpay khuyến nghị, "Nếu bạn đang sử dụng bất kỳ phiên bản nào từ 5.0.2 đến 5.1.0, bạn không nên chạy hoặc mở ứng dụng Copay."

Đối với người dùng npm, bạn có thể kiểm tra xem dự án của mình có chứa phần phụ thuộc dễ bị tấn công hay không bằng cách chạy kiểm tra npm. Nếu bạn đã cài đặt phiên bản bị ảnh hưởng của luồng sự kiện này, chúng tôi khuyên bạn nên cập nhật lên phiên bản mới hơn càng sớm càng tốt.


7
Hoặc chỉ cần làm npm list event-streamvà cập nhật bất kỳ gói cấp cao nhất nào
Phil

4
Xóa khóa gói nghe có vẻ là một ý tưởng tồi. Vui lòng chia sẻ liên kết đến bài đăng trên blog NPM.
Predbird

Chà. Có liên kết đến bài báo bạn đã trích dẫn không? CHỈNH SỬA - Đã tìm thấy nó: blog.npmjs.org/post/180565383195/…
Friederbluemle

7

Trên thực tế, chúng tôi không cần cập nhật tất cả các gói phụ thuộc vào event-stream@3.3.6.

Bạn có thể mở package-lock.json, xóa tất cả các tham chiếu luồng sự kiện và gọi npm installlại. Nó sẽ nhanh hơn.

Sau đó, npm shrinkwrap && mv npm-shrinwrap.json package-lock.jsonchỉ nên cập nhật các tham chiếu luồng sự kiện chứ không phải toàn bộ tệp


4

Làm theo các phương pháp dưới đây:

  1. Xóa các tệp node_modules và package_lock.json

  2. Chạy luồng sự kiện danh sách npm

  3. Chạy kiểm tra npm
  4. Chạy xác minh bộ nhớ cache npm
  5. Chạy cài đặt npm
  6. Chạy git add. (thêm các tệp bắt buộc)
  7. Chạy git commit (cam kết các thay đổi của bạn)
  8. Chạy git push (Đẩy mã của bạn)

3

Tôi giải quyết vấn đề này bằng các bước sau:

  1. mở nhật ký mới nhất của bạn cho lỗi này trong /node_cache/_logs/xxxx-xx-xxx-debug.log
  2. tìm ra gốc của event-streamlá, ví dụ:


    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. trong trường hợp này, thư mục gốc là gật đầu, vì vậy bạn có thể khắc phục bằng cách: npm install gật gù@1.18.4
  2. npm cài đặt thành công ngay bây giờ

2

Tôi đã cập nhật npm-run-all từ 4.1.3 lên 4.1.5 trong package.json (xóa trong luồng sự kiện tệp khóa) Sau đó cài đặt npm.


2

Như đã đề cập trong các nhận xét, vấn đề cơ bản là package-lock.json(tệp khóa) chứa một gói không được dùng nữa. Xóa tệp khóa và cài đặt lại các phần phụ thuộc đã giải quyết được sự cố.

Cách nhanh nhất để làm điều này là 2 bước sau:

  • xóa package-lock.jsontập tin
  • npm i(hoặc npm install) để cài đặt lại các phần phụ thuộc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.