Tấn công chuỗi cung ứng: gói độc hại và thư viện ví bị xâm nhập
Tấn công chuỗi cung ứng crypto giấu mã độc trong phần mềm bạn tin tưởng. Tìm hiểu cách các gói và thư viện ví bị xâm nhập hoạt động và cách tự bảo vệ.
Tấn công chuỗi cung ứng crypto là khi tội phạm xâm nhập phần mềm mà ví, ứng dụng hoặc trang web phụ thuộc vào, chẳng hạn một gói mã nguồn mở, một tiện ích trình duyệt hoặc một máy chủ cập nhật, để mã độc đến tay người dùng qua một kênh đáng tin cậy. Mã này thường tráo đổi địa chỉ nhận, chèn wallet drainer vào trang web hoặc đánh cắp cụm từ khôi phục, và nạn nhân thường chẳng làm gì sai ngoài việc dùng một sản phẩm họ vốn đã tin tưởng.
Những cuộc tấn công này quan trọng với mọi người trong crypto, không chỉ lập trình viên. Ví và ứng dụng phi tập trung hiện đại được xây dựng từ hàng trăm thành phần của bên thứ ba, và chỉ một thành phần bị xâm nhập có thể ảnh hưởng đến nhiều sản phẩm cùng lúc. Hướng dẫn này giải thích cách các cuộc tấn công hoạt động, những gì cần để ý và cách giảm rủi ro dù bạn là người dùng hay nhà phát triển.
Cách một cuộc tấn công chuỗi cung ứng diễn ra
“Chuỗi cung ứng” của một ứng dụng crypto là mọi thứ tạo nên nó: thư viện mã, công cụ build, nhà cung cấp hosting, mạng phân phối nội dung và máy chủ cập nhật. Một cuộc tấn công thường đi theo các bước sau:
- 1Giành quyền truy cập. Kẻ tấn công lừa đảo phishing người duy trì một thư viện phổ biến, mua một gói bị bỏ rơi, đoán mật khẩu yếu hoặc khai thác máy chủ build.
- 2Chèn mã độc. Chúng phát hành một phiên bản mới chứa mã ẩn, thường được làm rối và thiết kế để chỉ kích hoạt trong một số điều kiện nhất định, chẳng hạn khi có ví crypto.
- 3Lan qua các bản cập nhật. Các ứng dụng tự động lấy phiên bản mới nhất của thư viện sẽ đưa mã độc vào bản build tiếp theo, còn với trang web thì ngay khi script được tải.
- 4Đánh cắp. Mã có thể thay thế địa chỉ được sao chép vào clipboard, hiển thị yêu cầu giao dịch giả, đòi cụm từ khôi phục hoặc chèn drainer vào front-end của một ứng dụng phi tập trung.
- 5Che giấu. Kẻ tấn công thường gỡ mã nhanh chóng sau khi dùng, khiến việc điều tra khó khăn hơn.
Đã có những sự cố thực tế được ghi nhận theo mô hình này. Năm 2018, một thư viện phụ thuộc độc hại được thêm vào một gói JavaScript phổ biến nhằm đánh cắp tiền của người dùng một ứng dụng ví bitcoin cụ thể. Tháng 12 năm 2023, một phiên bản bị xâm nhập của thư viện Connect Kit của Ledger đã khiến một số ứng dụng phi tập trung hiển thị wallet drainer cho người dùng trong thời gian ngắn. Cả hai trường hợp đều cho thấy điểm yếu nằm ở mã dùng chung, không phải ở người dùng. Để tìm hiểu sâu hơn, hãy xem Rủi ro của địa chỉ vanity và địa chỉ trông giống nhau.
Các điểm xâm nhập phổ biến
| Điểm xâm nhập | Cách bị lạm dụng | Ai bị ảnh hưởng |
|---|---|---|
| Gói mã nguồn mở (npm, PyPI và tương tự) | Phát hành phiên bản độc hại hoặc tải lên gói có tên gần giống | Ứng dụng và lập trình viên dùng gói đó |
| Script front-end tải từ bên thứ ba | Script bị sửa để chèn drainer | Mọi người truy cập trang |
| Tiện ích trình duyệt | Tiện ích bị bán hoặc chiếm quyền, rồi được cập nhật kèm mã độc | Người dùng đã cài tiện ích |
| Bản cập nhật ứng dụng | Máy chủ cập nhật hoặc khóa ký bị xâm nhập | Người dùng cài bản cập nhật |
| Công cụ lập trình và gói do AI gợi ý | Tên gói giả trông có vẻ hợp lý | Lập trình viên cài đặt mà không kiểm tra |
Typosquatting, tức là tải lên một gói có tên rất giống một gói phổ biến, đặc biệt thường gặp. Một lập trình viên gõ nhầm tên gói có thể cài phải mã độc mà không hề hay biết.
Một ví dụ giả định
Đây là ví dụ tổng hợp mang tính minh họa, không phải trường hợp có thật. Hãy hình dung một sàn giao dịch phi tập trung nhỏ tải một thư viện kết nối ví phổ biến từ một kho gói công khai. Một buổi sáng, người duy trì thư viện bị lừa phishing và kẻ tấn công phát hành phiên bản mới. Trang web của sàn tự động tải phiên bản mới nhất.
Trong vài giờ, mọi người dùng kết nối ví đều thấy thứ trông như một yêu cầu swap bình thường. Thực chất đó là yêu cầu phê duyệt token của họ cho hợp đồng của kẻ tấn công. Những người dùng đọc kỹ màn hình phê duyệt trong ví phát hiện một hợp đồng lạ và dừng lại. Những người bấm qua mà không đọc thì mất token. Đội ngũ của sàn phát hiện sự cố khi người dùng báo mất tiền và đăng cảnh báo, nhưng lúc đó mã đã bị gỡ.
Dấu hiệu cảnh báo cho người dùng
- Một ứng dụng quen thuộc đột nhiên yêu cầu cụm từ khôi phục hoặc một bước “xác thực ví” mà trước đây chưa từng yêu cầu.
- Một thao tác thường lệ tạo ra yêu cầu bất thường trong ví, chẳng hạn phê duyệt không giới hạn hoặc chữ ký cho một hợp đồng lạ.
- Địa chỉ hiển thị trên màn hình ví cứng của bạn không khớp với địa chỉ bạn định gửi.
- Một tiện ích trình duyệt cập nhật và yêu cầu quyền mới, đặc biệt là quyền đọc và thay đổi dữ liệu trên mọi trang web.
- Một dự án hoặc các nhà nghiên cứu bảo mật đăng cảnh báo khẩn đề nghị không dùng một trang web hay ứng dụng.
Nhiều dấu hiệu trong số này trùng với mã độc clipboard và ứng dụng ví giả, vốn dùng các kỹ thuật tương tự. Xem thêm: Mã độc cập nhật trình duyệt giả và captcha nhắm vào người dùng crypto.
Cách tự bảo vệ
Với tư cách người dùng
- 1Dùng ví cứng và đọc địa chỉ, số tiền và hợp đồng trên màn hình của nó trước khi xác nhận.
- 2Giữ số tiện ích ở mức tối thiểu. Gỡ những tiện ích bạn không dùng và cẩn trọng khi một tiện ích đổi chủ hoặc yêu cầu quyền mới.
- 3Tách riêng tiền. Giữ tài sản dài hạn trong một ví hiếm khi kết nối với trang web, và dùng ví khác cho DeFi hằng ngày.
- 4Tạm dừng sau cảnh báo bảo mật. Tránh dùng ứng dụng cho đến khi nó xác nhận sự cố đã được khắc phục.
- 5Thu hồi các phê duyệt không cần thiết định kỳ.
Với tư cách lập trình viên hoặc dự án
- Cố định phiên bản thư viện phụ thuộc và dùng lockfile; xem xét thay đổi trước khi nâng cấp.
- Kiểm tra tên gói cẩn thận và ưu tiên các thư viện được duy trì tốt.
- Bắt buộc xác thực đa yếu tố cho tài khoản kho gói và dịch vụ lưu trữ mã.
- Dùng bản phát hành có chữ ký và, khi có thể, bản build có thể tái tạo để người dùng xác minh tệp nhị phân.
- Dùng content security policy và subresource integrity cho script của bên thứ ba.
Phải làm gì nếu bạn bị ảnh hưởng
- 1Ngừng dùng ứng dụng hoặc tiện ích bị ảnh hưởng và ngắt kết nối mọi ví.
- 2Kiểm tra lịch sử giao dịch để tìm các phê duyệt hoặc lệnh chuyển trong khoảng thời gian bị ảnh hưởng.
- 3Thu hồi mọi phê duyệt đáng ngờ và chuyển số tiền còn lại sang ví mới với cụm từ khôi phục mới nếu cụm từ khôi phục của bạn có thể đã bị lộ.
- 4Thu thập mã hash giao dịch và địa chỉ, sau đó báo cáo sự cố qua kênh chính thức của dự án và biểu mẫu báo cáo lừa đảo của chúng tôi.
Làm theo danh sách kiểm tra đầy đủ trong bài cần làm gì ngay khi ví của bạn bị xâm nhập.
Kết luận
Tấn công chuỗi cung ứng biến phần mềm đáng tin cậy thành kênh đánh cắp, vì vậy bạn không thể chỉ dựa vào việc tránh liên kết đáng ngờ. Hãy coi màn hình ví cứng và các yêu cầu trong ví là bước kiểm tra cuối cùng, giữ lượng phần mềm sử dụng ở mức tối thiểu và phản ứng nhanh với các cảnh báo bảo mật chính thức. Bên xây dựng gánh phần lớn trách nhiệm: hãy cố định, xem xét và ký mọi thứ bạn phát hành.
Câu hỏi thường gặp
Tấn công chuỗi cung ứng trong crypto là gì?
Đây là kiểu tấn công mà tội phạm xâm nhập một phần mềm mà các sản phẩm khác phụ thuộc vào, chẳng hạn thư viện mã, tiện ích trình duyệt hoặc bản cập nhật ứng dụng, thay vì tấn công trực tiếp người dùng. Khi phần mềm đáng tin cậy được cập nhật, mã độc sẽ đến với mọi ứng dụng và người dùng phụ thuộc vào nó, thường nhằm đánh cắp crypto hoặc tráo đổi địa chỉ.
Tấn công chuỗi cung ứng có ảnh hưởng đến ví cứng không?
Màn hình của ví cứng được thiết kế để bảo vệ bạn ngay cả khi máy tính hoặc một trang web đã bị xâm nhập, vì bạn xác nhận địa chỉ và số tiền thật trên thiết bị. Tuy vậy, kẻ tấn công vẫn có thể lừa bạn phê duyệt một giao dịch độc hại nếu bạn không đọc màn hình, vì vậy hãy luôn kiểm tra chi tiết ngay trên thiết bị.
Làm sao biết một trang web tôi từng dùng có bị ảnh hưởng không?
Thông thường bạn sẽ biết qua thông báo chính thức của dự án bị ảnh hưởng hoặc từ các nhà nghiên cứu bảo mật. Nếu một dự án bạn từng dùng báo cáo thư viện hoặc front-end bị xâm nhập, hãy kiểm tra xem bạn có ký gì trong khoảng thời gian bị ảnh hưởng không, thu hồi các phê duyệt và chuyển tiền sang ví mới nếu cần.
Ví mã nguồn mở có an toàn trước tấn công chuỗi cung ứng không?
Mã nguồn mở có ích vì nhiều người hơn có thể kiểm tra mã, nhưng không khiến phần mềm miễn nhiễm. Mã độc có thể xâm nhập qua các thư viện phụ thuộc, tài khoản người duy trì bị chiếm quyền hoặc hệ thống build. Bản build có thể tái tạo, bản phát hành có chữ ký và quản lý thư viện phụ thuộc cẩn thận giúp giảm rủi ro.
