Lỗi 'lạ' trong thư viện NPM 'color' và 'faker' ảnh hưởng hàng nghìn ứng dụng

sImplePerson

Member
23/03/2020
11
28 bài viết
Lỗi 'lạ' trong thư viện NPM 'color' và 'faker' ảnh hưởng hàng nghìn ứng dụng
Người dùng của các thư viện nguồn mở phổ biến 'color' và 'faker' được một phen kinh ngạc sau khi thấy các ứng dụng của mình in ra những dữ liệu rác.

Một vài người phỏng đoán có thể thư viện NPM đã bị tấn công, tuy nhiên vấn đề không chỉ có thế. Nhà phát triển của những thư viện này đã cố tình tạo ra một vòng lặp vô hạn có thể phá vỡ hàng nghìn dự án phụ thuộc vào 'color' và 'faker'.

NodeJS-Package-Manager.png

Thư viện ‘colors’ có hơn 20 triệu lượt tải mỗi tuần chỉ tính riêng trên trên NPM và gần 19.000 dự án đang sử dụng. Trong khi đó, 'faker' có hơn 2,8 triệu lượt tải xuống mỗi tuần và có hơn 2.500 người dùng.

Liệu có phải là cuộc cách mạng nguồn mở?

Nhà phát triển các thư viện nguồn mở NPM phổ biến ‘color’ (color.js trên GitHub) và 'faker' ('faker.js' trên GitHub) cố tình đưa ra những commit "gài" người dùng khiến hàng nghìn ứng dụng bị ảnh hưởng.

Người dùng các dự án nguồn mở phổ biến như Amazon's Cloud Development Kit (aws-cdk) đã vô cùng bất ngờ khi thấy các ứng dụng của mình xuất hiện dữ liệu rác trên bảng điều khiển.

Những thông báo này bao gồm text 'LIBERTY LIBERTY LIBERTY LIBERTY' theo sau là một chuỗi các ký tự không phải ASCII:

faker-liberty.jpeg

Người dùng bất ngờ khi nhìn thấy dữ liệu rác trên 'faker' và 'color' (GitHub)

Ban đầu, người dùng suy đoán rằng các thư viện 'color' và 'faker' sử dụng bởi các dự án này đã bị xâm nhập [1, 2, 3], tương tự như vụ việc thư viện coa, rc và ua-parser-js bị tấn công năm ngoái.

Tuy nhiên, có vẻ như là chính tác giả đứng sau 'color' và 'faker' đã cố tình thực hiện đoạn mã gây ra lỗi. Cụ thể Marak Squires đã thêm một "mô-đun new American flag" vào thư viện
color.js trong phiên bản v1.4.44-liberty-2 và sau đó đẩy lên GitHub cùng với NPM.

marak-commits.jpg

Colors.js được thực hiện một cách "ảo ma" bởi Marak (GitHub)

Các vòng lặp vô hạn trong đoạn code sẽ tiếp tục chạy vô thời hạn; in liên tục chuỗi ký tự vô nghĩa không phải ASCII trên bảng điều khiển cho bất kỳ ứng dụng nào sử dụng 'color'.

Tương tự như vậy, một phiên bản lỗi '6.6.6' của faker đã được đăng lên GitHub và NPM. Lý do đằng sau sự việc này dường như là sự trả đũa đối với các tập đoàn lớn và người dùng thương mại của các dự án nguồn mở, những người dựa nhiều vào phần mềm miễn phí và do cộng đồng cung cấp mà không có hành động hồi đáp hay trả phí.

Vào tháng 11/2020, Marak đã cảnh báo rằng ông sẽ không còn hỗ trợ "miễn phí" cho các tập đoàn lớn hay các tổ chức thương mại, họ nên cân nhắc chuyển nhượng dự án hoặc chi trả cho nhà phát triển với mức lương "sáu con số" mỗi năm.

Một số thành viên của cộng đồng phần mềm mã nguồn mở đã ca ngợi hành động của Marak, số còn lại phản đối. Cộng đồng mạng nhận xét: "Rõ ràng tác giả của 'Colors.js' đang tức giận vì không được trả mức thù lao xứng đáng. Vì vậy, anh ấy đã quyết định thêm dòng source code kì lạ kia mỗi khi thư viện của anh ấy được tải".

GitHub hiện đã tạm ngưng tài khoản của nhà phát triển này, điều này gây ra phản ứng trái chiều. Đáng chú ý là hành động của Marak xảy ra sau sự cố lỗ hổng thập kỷ Log4j khiến cả cộng đồng mạng dậy sóng.

Trong thời gian tới, người dùng NPM 'color' và 'faker' nên thận trọng hơn, hạ cấp xuống phiên bản cũ hơn: 'color' (ví dụ 1.4.0) và 'faker' (ví dụ 5.5.3) là giải pháp mà nhiều chuyên gia ninh mạng đưa ra.

 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
color faker github npm open-source
Bên trên