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
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
Câu trả lời:
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-stream
gói của mình .
node_modules
thư mục.package-lock.json
tệp.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.
npm list event-stream
và cập nhật bất kỳ gói cấp cao nhất nào
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 install
lại. Nó sẽ nhanh hơn.
Sau đó, npm shrinkwrap && mv npm-shrinwrap.json package-lock.json
chỉ 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
Làm theo các phương pháp dưới đây:
Xóa các tệp node_modules và package_lock.json
Chạy luồng sự kiện danh sách npm
Tôi giải quyết vấn đề này bằng các bước sau:
event-stream
lá, 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
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.
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:
package-lock.json
tập tinnpm i
(hoặc npm install
) để cài đặt lại các phần phụ thuộc