
Nhà phát triển của một gói phần mềm mã nguồn mở phổ biến đã bị bắt vì thêm mã độc vào nó, dẫn đến việc xoá tệp tin trên các máy tính tại Nga và Belarus. Hành động này là một phần của cuộc biểu tình đã khiến nhiều người dùng phẫn nộ và đặt ra lo ngại về an toàn của phần mềm mã nguồn mở và miễn phí.
Ứng dụng node.ipc thêm khả năng giao tiếp qua tiến trình từ xa và mạng nơ-ron vào các thư viện mã nguồn mở khác. Là một phụ thuộc, node.ipc tự động được tải xuống và tích hợp vào các thư viện khác, bao gồm cả các thư viện như Vue.js CLI, có hơn 1 triệu lượt tải xuống hàng tuần.
Một Hành Động Cố Ý và Nguy Hiểm
Hai tuần trước, tác giả của node.ipc đưa ra phiên bản mới của thư viện đã phá hoại máy tính tại Nga và Belarus, hai quốc gia xâm lược Ukraine và cung cấp hỗ trợ cho cuộc xâm lược, tương ứng. Bản phát hành mới thêm một chức năng kiểm tra địa chỉ IP của các nhà phát triển sử dụng node.ipc trong các dự án riêng của họ. Khi địa chỉ IP được định vị đến Nga hoặc Belarus, phiên bản mới sẽ xoá tệp tin từ máy tính và thay thế chúng bằng biểu tượng trái tim.
Để che đậy sự ác ý, tác giả node.ipc Brandon Nozaki Miller mã hóa base-64 các thay đổi để làm khó hơn cho người dùng muốn kiểm tra mắt thường để kiểm tra sự cố.
Đây là những gì những nhà phát triển đó thấy:
+ const n2 = Buffer.from("Li8=", "base64");
+ const o2 = Buffer.from("Li4v", "base64");
+ const r = Buffer.from("Li4vLi4v", "base64");
+ const f = Buffer.from("Lw==", "base64");
+ const c = Buffer.from("Y291bnRyeV9uYW1l", "base64");
+ const e = Buffer.from("cnVzc2lh", "base64");
+ const i = Buffer.from("YmVsYXJ1cw==", "base64");
Những dòng này sau đó được truyền vào hàm hẹn giờ, như là:
+ h(n2.toString("utf8"));
Các giá trị cho chuỗi Base64 là:
- n2 được thiết lập thành: ./
- o2 được thiết lập thành: ../
- r được thiết lập thành: ../../
- f được thiết lập thành: /
Khi được truyền vào hàm hẹn giờ, những dòng này sau đó được sử dụng làm đầu vào để xoá các tệp tin và thay thế chúng bằng biểu tượng trái tim.
+ thử {
+ import_fs3.default.writeFile(i, c.toString("utf8"), function() {
+ });
“Tại điểm này, một sự lạm dụng rất rõ ràng và một sự cố an ninh chuỗi cung ứng quan trọng sẽ xảy ra đối với bất kỳ hệ thống nào mà gói npm này sẽ được gọi tới, nếu đó khớp với địa lý của Nga hoặc Belarus,” viết Liran Tal, một nhà nghiên cứu tại Snyk, một công ty an ninh đã theo dõi các thay đổi và công bố các kết quả của mình vào thứ Tư.
Tal phát hiện rằng tác giả của node.ipc duy trì 40 thư viện khác nhau, trong đó một số hoặc tất cả chúng cũng là các phụ thuộc của các gói phần mềm mã nguồn mở khác. Tham chiếu đến tên của tác giả node.ipc, Tal đặt dấu hỏi về sự khôn ngoan của cuộc biểu tình và những hậu quả có thể xảy ra đối với hệ sinh thái mã nguồn mở như một toàn thể.
“Ngay cả khi hành động cố ý và nguy hiểm của người duy trì RIAEvangelist được một số người coi là một hành động biểu tình hợp pháp, điều đó làm thế nào để phản ánh vào danh tiếng và vai trò của người duy trì trong cộng đồng phát triển trong tương lai?” Tal viết. “Liệu người duy trì này có được tin tưởng lần nữa để không tiếp tục hành động trong tương lai cho bất kỳ dự án nào họ tham gia không?”
Mất Mãi Mãi
RIAEvangelist cũng bị chỉ trích trên Twitter và trong diễn đàn mã nguồn mở. “Mã độc mới phát hành,” viết một người tự xưng là làm việc cho một tổ chức có trụ sở tại Mỹ vận hành máy chủ tại Belarus, “dẫn đến việc thực thi mã của bạn và xoá hơn 30.000 tin nhắn và tệp tin chi tiết về các tội ác chiến tranh được thực hiện tại Ukraine bởi quân đội Nga và các quan chức chính phủ.”
Người đó, sau đó đã gỡ bài viết xuống và đăng lại ở đây, nói rằng mục đích của máy chủ Belarus là để vượt qua kiểm duyệt ở quốc gia đó. Nhân viên của tổ chức đã bị căng thẳng từ khi Nga bắt đầu xâm lược Ukraine vào ngày 24 tháng 2, người đó nói, và vì lý do không rõ ràng, những tin nhắn từ lính chiến tuyến và dữ liệu nhạy cảm khác có lẽ đã mất mãi mãi.
“Cá nhân, tôi và đồng nghiệp của tôi hoàn toàn chịu thiệt thòi,” người đó viết. “Tôi chỉ có thể nói [là] trò chơi nghịch ngợm nhỏ của bạn gây thiệt hại nhiều hơn cho chúng tôi so với Putin hay Lukashenka từng có thể gây ra. Chuyên nghiệp, luật sư của chúng tôi đề xuất việc đệ trình các tội danh hình sự liên bang, và có thể chúng tôi sẽ tiếp tục theo đuổi cách này.”
Phần Mềm Biểu Tình Trưởng Thành
Cập nhật node.ipc chỉ là một ví dụ cho những gì một số nhà nghiên cứu gọi là phần mềm biểu tình. Các chuyên gia đã bắt đầu theo dõi các dự án mã nguồn mở khác cũng đang phát hành cập nhật gọi ra sự tàn ác của cuộc chiến tranh của Nga. Bảng tính này liệt kê 21 gói phần mềm riêng biệt bị ảnh hưởng.
Một trong những gói phần mềm như vậy là es5-ext, cung cấp mã cho đặc tả ngôn ngữ kịch bản ECMAScript 6. Một phụ thuộc mới có tên postinstall.js, mà nhà phát triển thêm vào vào ngày 7 tháng 3, kiểm tra xem máy tính của người dùng có địa chỉ IP Nga không, trong trường hợp đó, mã sẽ phát sóng một “lời kêu gọi hòa bình.”

“Nhân dân Ukraine đã được huy động đầy đủ và sẵn sàng bảo vệ đất nước khỏi xâm lược của kẻ thù,” đoạn dịch sang tiếng Anh một phần của tin nhắn đọc. “91% người Ukraina hoàn toàn ủng hộ Tổng thống Volodymyr Zelensky và phản ứng của ông đối với cuộc tấn công của Nga.”
Sự kiện phần mềm biểu tình tiết lộ một số rủi ro khi hàng ngàn nhà phát triển tình nguyện sản xuất mã nguồn quan trọng cho hàng trăm hoặc hàng ngàn ứng dụng khác để chạy. Mặc định, hầu hết phần mềm mã nguồn mở tự động tải xuống và tích hợp phiên bản phụ thuộc mới. Điều đó có nghĩa là một cập nhật từ một cá nhân có khả năng gây rối cho một số lượng không đếm được các ứng dụng phụ thuộc.
Rủi ro này đã được thể hiện rõ ràng vào tháng 1, khi nhà phát triển của hai thư viện JavaScript với hơn 22 triệu lượt tải xuống đẩy một cập nhật gây ra hơn 21.000 ứng dụng phụ thuộc phun ra những văn bản không rõ nghĩa, bắt đầu bằng những từ “Liberty Liberty Liberty.” Một vòng lặp vô hạn do cập nhật gây ra đã khiến các nhà phát triển rối bời khi họ cố gắng sửa chữa các ứng dụng bị lỗi của họ.
Chức năng xoá ổ đĩa đã được thêm vào các phiên bản node.ipc 10.1.1 và 10.1.2. Sau khi công chúng phản đối việc xoá, nhà phát triển đã phát hành các cập nhật để loại bỏ chức năng độc hại. Snyk khuyến nghị nhà phát triển ngừng sử dụng gói phần mềm này hoàn toàn. Nếu điều đó không thể, công ty khuyến cáo sử dụng trình quản lý gói npm để ghi đè lên các phiên bản bị phá hoại và ghim một phiên bản tốt đã biết đến.
“Snyk đứng với Ukraine, và chúng tôi đã tích cực hành động để hỗ trợ nhân dân Ukraine trong cuộc khủng hoảng đang diễn ra với sự đóng góp và dịch vụ miễn phí cho các nhà phát triển trên toàn thế giới, cũng như hành động để dừng kinh doanh ở Nga và Belarus,” Tal viết. “Tuy nhiên, lạm dụng cố ý như thế này làm suy yếu cộng đồng mã nguồn mở toàn cầu và yêu cầu chúng tôi đánh dấu các phiên bản bị ảnh hưởng của node-ipc là lỗ hổng bảo mật.”
Câu chuyện này ban đầu xuất hiện trên Ars Technica.
Những Câu Chuyện Tuyệt Vời Khác Của Mytour
- 📩 The latest on tech, science, and more: Get our newsletters!
- How Telegram became the anti-Facebook
- Wind turbines could mess with ships' radar signals
- The governor of Colorado is high on blockchain
- The age of everything culture is here
- An internet troll targets nonalcoholic spirits startups
- 👁️ Explore AI like never before with our new database
- 📱 Torn between the latest phones? Never fear—check out our iPhone buying guide and favorite Android phones
