Một tấn công mạng chuỗi cung ứng kéo dài đã được các nhà nghiên cứu bảo mật phát hiện, nhắm mục tiêu vào cộng đồng lập trình Go. Nhóm nghiên cứu về mối đe dọa của Socket đã xác định hai gói phần mềm độc hại, github.com/bpoorman/uuid và github.com/bpoorman/uid, đã âm thầm gây rò rỉ dữ liệu từ các nhà phát triển không nghi ngờ trong nhiều năm.
Đây là một hình thức tấn công mạng tinh vi, khai thác sự tin cậy trong chuỗi cung ứng phần mềm. Bằng cách chèn mã độc vào các thư viện phổ biến, kẻ tấn công có thể truy cập trái phép vào các hệ thống.
Phân tích Kỹ thuật Tấn công mạng Typosquatting
Cuộc tấn công này dựa vào kỹ thuật được gọi là typosquatting. Các gói mã độc được thiết kế để trông gần như giống hệt các thư viện hợp pháp, được sử dụng rộng rãi.
Cụ thể, chúng mạo danh github.com/google/uuid và github.com/pborman/uuid, là những thư viện chuẩn trong hệ sinh thái Go.
Kẻ tấn công đã sử dụng tên người dùng bpoorman để bắt chước người duy trì phổ biến pborman.
Do các thư viện hợp pháp này được tải xuống hàng triệu lần và được sử dụng như các tiện ích tiêu chuẩn trong các ứng dụng Go, các nhà phát triển thường gõ tên từ bộ nhớ.
Một lỗi chính tả đơn giản, gõ “bpoorman” thay vì “pborman”, là đủ để cài đặt phần mềm độc hại một cách vô tình.
Kiểu tấn công mạng này lợi dụng sự nhầm lẫn nhỏ của con người để đạt được mục tiêu xâm nhập hệ thống.
Cơ chế Hoạt động của Mã độc và Typosquatting
Khai thác Hàm Valid để Đánh cắp Dữ liệu
Sau khi được cài đặt, gói giả mạo hoạt động như gói thật, tạo ra các định danh duy nhất (UUIDs) một cách chính xác. Điều này khiến tấn công mạng này rất khó bị phát hiện ngay lập tức.
Trong khi gói thực hiện các nhiệm vụ dự kiến, nó chứa một bẫy ẩn. Kẻ tấn công đã đưa một hàm trợ giúp độc hại có tên Valid vào gói.
Trong thư viện hợp pháp, một hàm tương tự sẽ kiểm tra xem định dạng ID có đúng hay không. Tuy nhiên, trong phiên bản giả mạo này, hàm Valid đóng vai trò là một backdoor.
Khi một nhà phát triển truyền dữ liệu vào hàm này, chẳng hạn như ID người dùng, token phiên hoặc địa chỉ email, mã độc sẽ bí mật mã hóa thông tin đó.
Dữ liệu bị đánh cắp sau đó được tải lên dpaste.com, một trang web chia sẻ văn bản công khai, sử dụng một token API được mã hóa cứng.
Quá trình này diễn ra âm thầm trong nền, có nghĩa là thông tin nhạy cảm bị rò rỉ dữ liệu mà không có bất kỳ thông báo lỗi hoặc dấu hiệu bất thường nào.
Mục tiêu cuối cùng của kiểu tấn công mạng này là thu thập thông tin nhạy cảm, có thể dẫn đến rò rỉ dữ liệu nhạy cảm trên diện rộng, gây thiệt hại nghiêm trọng.
Hậu quả của rò rỉ dữ liệu này có thể rất nghiêm trọng, từ mất uy tín đến các vấn đề pháp lý và tài chính cho các tổ chức bị ảnh hưởng.
Thời gian Tồn tại và Phát hiện của Mối đe dọa mạng
Điều đáng báo động nhất là thời gian mối đe dọa mạng này đã tồn tại. Gói bpoorman/uuid được xuất bản lần đầu vào tháng 5 năm 2021 và đã tồn tại trong hệ sinh thái Go trong hơn bốn năm.
Tại thời điểm phát hiện, gói UUID độc hại vẫn được liệt kê trên pkg.go.dev, trang web khám phá chính cho các gói Go.
Mặc dù gói uid đã bị xóa khỏi chỉ mục tìm kiếm, nó vẫn có thể tải xuống thông qua các mirror công khai.
Phát hiện này của Socket phục vụ như một lời nhắc nhở quan trọng cho các nhà phát triển để kiểm tra các phụ thuộc của họ.
Sự kiên trì của kiểu tấn công mạng này nhấn mạnh tầm quan trọng của việc giám sát liên tục các thư viện mã nguồn mở và các phụ thuộc.
Biện pháp Phòng ngừa và Tăng cường An ninh mạng
Các chuyên gia của Socket khuyến nghị các đội ngũ nên kiểm tra kỹ các tệp go.mod của họ để đảm bảo họ đang nhập các thư viện pborman và Google chính xác, chứ không phải kẻ mạo danh bpoorman độc hại.
Mỗi phụ thuộc mới nên được coi là không đáng tin cậy cho đến khi nó được xác minh. Việc này là rất cần thiết nhằm đảm bảo an ninh mạng toàn diện cho các dự án Go.
Để phòng tránh rò rỉ dữ liệu và các cuộc tấn công mạng tương tự, cần áp dụng các biện pháp kiểm soát chặt chẽ trong quy trình phát triển và triển khai.
- Kiểm tra và Xác minh Phụ thuộc: Luôn xác minh nguồn gốc và tính toàn vẹn của mọi gói được sử dụng, đặc biệt là từ các nguồn bên thứ ba. Sử dụng các công cụ phân tích tự động để quét mã độc.
- Giới hạn Quyền truy cập: Đảm bảo rằng các gói và ứng dụng chỉ có quyền truy cập vào dữ liệu và tài nguyên cần thiết.
- Cập nhật và Vá lỗi Định kỳ: Giữ cho tất cả các thư viện và hệ thống luôn được cập nhật với các bản vá bảo mật mới nhất.
- Theo dõi Hoạt động Mạng: Triển khai các hệ thống phát hiện xâm nhập (IDS) và hệ thống quản lý sự kiện và thông tin bảo mật (SIEM) để giám sát các hoạt động đáng ngờ.
- Đào tạo và Nâng cao Nhận thức: Nâng cao nhận thức về an ninh mạng trong đội ngũ phát triển về các rủi ro của typosquatting và các cuộc tấn công mạng chuỗi cung ứng.
Các cuộc tấn công mạng chuỗi cung ứng như thế này không chỉ nhắm vào nhà phát triển mà còn ảnh hưởng đến người dùng cuối của các ứng dụng được xây dựng từ các thư viện bị nhiễm. Một chiến lược an ninh mạng mạnh mẽ bao gồm việc xác minh nguồn gốc và tính toàn vẹn của mọi gói được sử dụng, đặc biệt là trong các dự án phát triển phần mềm lớn.
Việc theo dõi liên tục các mối đe dọa mạng mới và các chiến thuật tấn công mạng đang phát triển là yếu tố then chốt để duy trì một môi trường phát triển an toàn.










