Các gói phần mềm độc hại mã nguồn mở: Phương pháp tiếp cận của Xygeni

Đây là tập thứ tư trong loạt phim. hàng loạt bài viết về các thành phần độc hại, trong đó chúng tôi trình bày Xygeni cách tiếp cận để xử lý mối đe dọa này, như một phần trong phạm vi phủ sóng của chúng tôi về Open Source Security

Chúng ta thấy rằng sự tin tưởng thái quá vào các thành phần mã nguồn mở có nguồn gốc không rõ ràng đang bị những kẻ xấu lợi dụng để gây ra hành vi bất thường, có thể chạy trên máy tính của nhà phát triển, CI/CD các hệ thống, hoặc được nhúng vào phần mềm của tổ chức nạn nhân, để nó được truyền đến các khách hàng của tổ chức đó. Chúng tôi đã phân tích trong tập #2 Các cuộc tấn công sử dụng các registry công khai để phát tán phần mềm độc hại và những gì chúng ta đã học được sau khi quan sát cách thức hoạt động của những kẻ xấu, và trong phần trước tập #3 Các biện pháp kiểm soát hiệu quả (và cả những biện pháp thất bại) đối với mối đe dọa này đã được xem xét. 

Giờ là lúc xem xét cách tiếp cận của chúng tôi đối với vấn đề này. Trong tập này, chúng tôi trình bày chiến lược mà chúng tôi áp dụng tại Xygeni cho vấn đề này. Cảnh báo sớm phần mềm độc hại Hệ thống (MEW). Hệ thống đa giai đoạn này hoạt động như thế nào trong thời gian thực khi một phiên bản gói phần mềm mới được phát hành, cách thức thu thập bằng chứng từ các nguồn khác nhau, cách phân loại ban đầu, các tiêu chí phân loại nào chúng tôi đang tuân theo và tại sao vẫn cần một số phân tích thủ công để xác nhận bản chất của một gói phần mềm độc hại tiềm năng. Chúng tôi cũng sẽ giải thích cách chúng tôi đang hỗ trợ NPM, GitHub, PyPI và các cơ sở hạ tầng quan trọng khác trong hệ sinh thái mã nguồn mở để giảm thời gian tồn tại của phần mềm độc hại. 

pipeline

Xygeni Malware Early Warning (MEW) liên tục xử lý các thành phần, có thể là các gói nén tarball cho thư viện và framework dành cho các hệ sinh thái lập trình được hỗ trợ như JavaScript/Node hoặc Python, ảnh container Docker/OCI, hoặc các tiện ích mở rộng và plugin cho các công cụ như IDE hoặc Python. CI/CD các hệ thống. Các thành phần như vậy được công bố trong các kho lưu trữ công khai với các cấp độ kiểm duyệt người dùng khác nhau.

Dưới đây là sơ đồ mô tả cách thức hoạt động của hệ thống:

người khám phá Quá trình này nhận được nguồn cấp dữ liệu về các sự kiện xuất bản. Một sự kiện xuất bản là việc tạo ra một phiên bản mới của một thành phần mới hoặc hiện có. Vì các hệ thống đăng ký phổ biến không cung cấp cơ chế xuất bản-đăng ký cho người dùng quan tâm, nên việc này thường được thực hiện bằng cách thăm dò hệ thống đăng ký để tìm các sự kiện gần đây. Một dự án xuất sắc từ OSSF. nguồn cấp dữ liệu đóng gói, ủng hộ Các kho lưu trữ phổ biến như PyPI hoặc Maven Central cung cấp giao diện thống nhất dựa trên nguồn cấp dữ liệu. Trong MEW, chúng tôi đã thêm một số triển khai cụ thể giúp giảm thời gian chờ, ví dụ như bản sao của cơ sở dữ liệu CouchDB được NPM sử dụng, được đồng bộ hóa với cơ sở dữ liệu kho lưu trữ công cộng.

Tại Xygeni, chúng tôi có kho hàng.[1] Tất cả các thành phần (trực tiếp hoặc gián tiếp) được phần mềm của khách hàng sử dụng đều được hiển thị. Tọa độ các thành phần của khách hàng được cung cấp thường xuyên cho MEW để ưu tiên phân tích: các thành phần do khách hàng sử dụng sẽ được xử lý trước. Mức độ ưu tiên cũng dựa trên uy tín của nhà phát hành và mức độ quan trọng của thành phần, do đó các thành phần đến từ các nhà phát hành có uy tín thấp cũng được ưu tiên.

máy phân tích Sau đó, hệ thống sẽ xử lý các thành phần đang chờ xử lý trong hàng đợi ưu tiên. Khi một phiên bản thành phần được chọn để phân tích, tệp nén tarball của nó sẽ được tải xuống từ kho lưu trữ. Lưu ý rằng thành phần nhị phân được đóng gói sẽ được phân tích: Hầu hết các thành phần mã nguồn mở thường đến từ kho lưu trữ mã nguồn mở, thường là tại github.com, chỉ được sử dụng để tham khảo ngữ cảnh, và phần mềm độc hại luôn được tìm kiếm trong tệp nén tarball của thành phần vì các tác nhân đe dọa thường xuyên nói dối về các nguồn mà chúng tuyên bố đã sử dụng để xây dựng tệp nén tarball thành phần mà chúng phát hành. 

Từ góc nhìn của người dùng

Tôi biết bạn đang nghĩ: Làm thế nào tôi có thể được lợi từ việc biết sớm về phiên bản phần mềm độc hại? Trong tập này... “Giải phẫu các gói hàng độc hại: Các xu hướng là gì?” Chúng tôi nhận thấy tổng thời gian lưu trú nằm trong khoảng vài ngày, trong khi thông báo đầu tiên từ MEW đến khách hàng sử dụng linh kiện bị ảnh hưởng chỉ diễn ra trong vài phút. Với một rào cản đơn giản.[2] Bạn có thể chặn quá trình xây dựng (có hai cấp độ cảnh báo, một cấp độ hoàn toàn tự động khi công cụ kết luận rằng có khả năng có phần mềm độc hại và một thông báo sau đó khi nhóm bảo mật của chúng tôi xác nhận sự hiện diện của phần mềm độc hại bằng cách kiểm tra thủ công). Việc chờ đến khi registry xác nhận phần mềm độc hại và xóa nó khỏi registry thường là quá muộn do thời gian tiếp xúc kéo dài.

Tổ chức có thể sử dụng một cơ chế bảo vệ để kiểm tra xem có thành phần nào chứa phần mềm độc hại tiềm ẩn hay không (ở bất kỳ cấp độ cảnh báo nào trong hai cấp độ) hoặc, thông qua API, nhanh chóng biết được liệu bất kỳ thành phần phụ thuộc trực tiếp hoặc gián tiếp nào trong một dự án phần mềm có đang sử dụng thành phần độc hại hay không.

Cách thức hoạt động của MEW: Chi tiết bên trong

Cốt lõi: Công cụ phát hiện phần mềm độc hại

Máy phân tích sử dụng các bộ dò khác nhau để thu thập bằng chứng về hành vi sai trái. Các bộ dò kết hợp phân tích tĩnh, phân tích khả năng và phân tích ngữ cảnh.[3]như đã mô tả trong bài viết trước của loạt bài này. 

Tại Xygeni, chúng tôi có một đội ngũ kỹ sư với nhiều năm kinh nghiệm trong phân tích tĩnh, và đây là điểm khác biệt chính so với các giải pháp chống phần mềm độc hại khác. Lưu ý rằng đối với một số hệ sinh thái, gói tarball chứa mã nguồn (ví dụ: mã JavaScript hoặc TypeScript cho các gói NPM, mã nguồn Python cho các gói PyPI) hoặc mã đã biên dịch đủ gần với mã nguồn để phân tích tĩnh (ví dụ: mã bytecode trong các tệp JAR cho Maven). Đối với các hệ sinh thái khác, chẳng hạn như ảnh container, các tệp thực thi nhị phân rất phổ biến, vì vậy suy luận khả năng là kỹ thuật được sử dụng, cùng với việc phát hiện phần mềm độc hại thông thường dựa trên các quy tắc YARA và chữ ký phần mềm độc hại. 

Xin lưu ý rằng các công nghệ đơn giản như biểu thức chính quy hoặc chữ ký không phù hợp để phát hiện hành vi độc hại. Hãy tưởng tượng việc phát hiện một phần mềm thả mã độc hoặc phần mềm tải xuống: Một số mã hoặc tệp nhị phân nằm trong gói hoặc được tải xuống từ một miền bên ngoài, không liên quan đến thành phần (có thể là một tệp từ...) Danh sách dài các tên miền được kẻ tấn công mua lại.[4], Hoặc một tên miền hợp pháp để tránh bị phát hiệnĐoạn mã đó sau đó được thực thi bằng một trong các hàm dành riêng cho việc đó. Mã này có thể được biến đổi để che giấu URL tải xuống hoặc hàm được sử dụng để chạy mã đã tải xuống. Cần phân tích luồng dữ liệu đầy đủ để phát hiện ra điều này, sử dụng toàn bộ công cụ phân tích tĩnh, hoặc thực thi trong môi trường biệt lập (nếu các điều kiện để hành vi độc hại thực sự được đáp ứng) có thể phát hiện ra điều này trong trường hợp tổng quát.

Các tác nhân đe dọa sử dụng cùng một kỹ thuật và các công cụ phát hiện được thiết kế và triển khai để chống lại chúng. Ngoài ra còn có một số bước tiền xử lý, ví dụ như loại bỏ mã hóa che giấu, thường cần thiết để phát hiện hành vi ẩn giấu. 

Bổ sung ngữ cảnh

Một số công cụ phát hiện sử dụng thông tin ngữ cảnh. Ví dụ, sự không khớp giữa phiên bản trong registry của linh kiện và thẻ/bản phát hành trong kho lưu trữ GitHub liên quan là bằng chứng mạnh mẽ cho thấy có thể kẻ xấu đã có được thông tin đăng nhập cho registry nhưng không có được thông tin đăng nhập cho kho lưu trữ GitHub. Các cuộc tấn công như vụ ảnh hưởng đến nhà cung cấp ví tiền điện tử. Ledger Sự không khớp này có thể dễ dàng được phát hiện.

A điểm độc hại (MS) được tính toán dựa trên kết quả của các lần chạy máy dò, dựa trên độ mạnh của bằng chứng thu được. Không phải tất cả các kết quả đều giống nhau, và thứ tự thực hiện cũng rất quan trọng. 

Uy tín của người dùng và thành phần

Không phải tất cả các nhà phát triển mã nguồn mở đều giống nhau! 

Một nhà phát triển có uy tín có thể bị chiếm đoạt tài khoản NPM (điều này xảy ra ngay cả với những người có ý thức về bảo mật), và phần mềm độc hại được phát tán bằng tài khoản đó. Rõ ràng, uy tín sẽ giảm sút đột ngột, và chỉ phục hồi lại như trước khi tài khoản bị chiếm đoạt được lấy lại và nhà phát triển khắc phục các điều kiện dẫn đến việc chiếm đoạt tài khoản. Uy tín rất khó gây dựng nhưng có thể mất đi trong tích tắc.  

Tại MEW, chúng tôi đã triển khai một hệ thống quản lý danh tiếng toàn diện để khen thưởng hành vi tích cực và xử phạt các hoạt động đáng ngờ. Hệ thống này bắt đầu với người dùng mới ở vị thế trung lập và điều chỉnh danh tiếng của họ dựa trên các hoạt động liên tục của họ.

Uy tín của người dùng được cải thiện thông qua các hành động tích cực như duy trì hoạt động tài khoản mạng xã hội, bật xác thực đa yếu tố, đóng góp thường xuyên vào các dự án và đăng ký. commitvới các khóa có thể xác minh. Ngược lại, danh tiếng sẽ xấu đi do các hành động thù địch như phát tán phần mềm độc hại, sử dụng địa chỉ email dùng một lần, không ký tên. commithoặc thể hiện các mô hình đóng góp bất thường.

Mục tiêu chính của hệ thống chúng tôi là đảm bảo một môi trường an toàn và đáng tin cậy. Hệ thống đạt được điều này bằng cách tự động điều chỉnh uy tín người dùng dựa trên nhiều yếu tố khác nhau, đồng thời tôn trọng quyền riêng tư và những hạn chế của các hệ thống đăng ký khác nhau.

Điểm uy tín nội bộ được tính toán cho người dùng (tham gia vào hệ thống đăng ký và tài khoản GitHub nếu có thể), cùng với điểm độc hại được sử dụng trong quá trình phân loại thành phần đang được phân tích, và để xác định rõ hơn ai là người đứng sau việc công bố thành phần đó.

Đã tìm thấy bằng chứng về hành vi độc hại. Vậy thì sao? Quy trình xem xét thủ công

Hệ thống phân loại hiện tại sẽ phân loại phiên bản thành phần được phân tích vào một trong các nhóm “đã xác nhận độc hại”, “có thể độc hại”, “rủi ro cao”, “rủi ro thấp” hoặc “không độc hại” dựa trên ngưỡng điểm số tổng hợp các phát hiện và uy tín của người dùng/thành phần. Việc phân loại vào nhóm “rủi ro cao” hoặc “có thể độc hại” sẽ kích hoạt quá trình xem xét thủ công và thông báo đầu tiên. Nhóm “đã xác nhận độc hại” được thiết lập sau khi xem xét thủ công hoặc khi bằng chứng trùng khớp với bằng chứng của phiên bản trước đó đã được xác nhận là độc hại. 

Khi có đủ bằng chứng về hành vi độc hại tiềm tàng, một cảnh báo đầu tiên (cảnh báo cách ly) sẽ được phát ra cho các tổ chức bị ảnh hưởng. Như đã đề cập trước đó, điều này có thể chặn việc cài đặt hoặc biên dịch phần mềm phụ thuộc vào thành phần bị cách ly. 

Điều đó tạo ra một vấn đề trong nội bộ MEW. dashboard Vì vậy, các chuyên gia phân tích bảo mật có thể bắt đầu quy trình xem xét thủ công cho thành phần này. Nhóm có các công cụ chuyên dụng (môi trường thử nghiệm, công cụ giải mã, phân phối để nghiên cứu phần mềm độc hại, công cụ báo cáo phần mềm độc hại) để nhanh chóng đánh giá bản chất của phiên bản thành phần đang được điều tra. Hầu hết các phần mềm độc hại ("những thành phần độc hại đơn giản" hoặc "cá cơm") đều được xem xét.  

Kết quả của cuộc xem xét kết luận theo một trong hai cách sau: an toànVì vậy, công cụ phân tích tự động đã tìm thấy một kết quả dương tính giả, được sử dụng làm phản hồi cho bộ phân loại máy học để học mẫu; hoặc xác nhận là độc hạiDo đó, thành phần này được công khai một cách có trách nhiệm là độc hại trên hệ thống đăng ký công khai, theo quy trình báo cáo. Một thông báo thứ hai được gửi đến các tổ chức bị ảnh hưởng, và các tổ chức này có thể... Bỏ cách ly thành phần đó, hoặc chặn hoàn toàn nó khỏi quy trình nâng cấp phiên bản hoặc tường lửa thành phần được sử dụng trong registry nội bộ của họ.

Cài đặt này cho phép chúng tôi phân tích hàng chục nghìn phiên bản mới mỗi ngày và xác định hàng chục phiên bản có khả năng độc hại, sau đó chúng tôi sẽ xem xét thủ công. Hãy nhớ lại từ tập trước rằng tỷ lệ các thành phần độc hại mà chúng ta hiện thấy trong thực tế là một trên mười nghìn. 

Báo cáo cho Cơ quan đăng ký

Chúng tôi nhận thấy rằng hầu hết các kho lưu trữ công khai, một trong những xương sống của cơ sở hạ tầng mã nguồn mở, cung cấp các cơ chế khá hạn chế để báo cáo các vấn đề bảo mật, đặc biệt là các thành phần độc hại. Chúng tôi đang nỗ lực cải thiện cấu trúc tổ chức của quy trình báo cáo. Thông thường, chúng tôi chỉ nhận được một email phản hồi từ nhóm bảo mật trong kho lưu trữ xác nhận rằng thành phần đó đã bị xóa khỏi kho. 

Đôi khi, hệ thống đăng ký bị lạm dụng, vi phạm các điều khoản sử dụng, nhưng không gây ra hành vi độc hại trong phần mềm được phân phối. Điều này cũng được báo cáo cho hệ thống đăng ký, nhưng không được thông báo cho các tổ chức để hạn chế sự phiền nhiễu.  

Công việc tương lai

Nhiều cải tiến hiện đang nằm trong kế hoạch phát triển. Trước hết và quan trọng nhất là... cổng thông tin công cộng về tình trạng hoạt động của các thành phần hệ điều hànhĐặc biệt là liên quan đến bằng chứng về khả năng gây hại, dự án hiện đang được phát triển. Đây được xem như một đóng góp nhỏ cho cộng đồng mã nguồn mở. Hãy chờ đợi nhé. 

Một sự phát triển đang diễn ra khác là sự cải tiến bộ phân loại học máyMEW sẽ học hỏi từ các phân loại trước đó. Vectơ các phát hiện từ các công cụ dò tìm, cộng với điểm độc hại và điểm uy tín được suy ra cho cả thành phần và nhà phát hành (“bằng chứng được tìm thấy”) được sử dụng làm đầu vào cho hệ thống học máy để cập nhật mô hình phân loại. Biến đầu ra đơn giản là liệu cơ quan đăng ký có xác nhận thành phần đó có độc hại hay không. Điều này được đặt tên mã là “Oracle” và sẽ giúp dự đoán chính xác hơn.cisBộ lọc e, được thiết kế để hoạt động tốt (độ thu hồi cao, tức là không bỏ sót các thành phần độc hại) nhưng có ít kết quả dương tính giả hơn (không báo cáo các thành phần an toàn là độc hại). 

A điểm quan trọng Ngoài việc thuộc về tập hợp các phụ thuộc của khách hàng và uy tín thấp của nhà xuất bản, các tiêu chí ưu tiên sẽ được thêm vào. Rõ ràng là các dự án có tầm ảnh hưởng và tầm quan trọng lớn hơn nên được xem xét phân tích sớm hơn. Chúng ta sẽ không lặp lại những gì đã có sẵn ở đây và sẽ tiếp tục theo hướng đã đề ra. Điểm mức độ quan trọng của dự án mã nguồn mở.

Việc hỗ trợ cho các hệ sinh thái bổ sung đang được phát triển. Các công nghệ và công cụ phổ biến như PHP hoặc plugin Jenkins nằm trong kế hoạch phát triển.

Chúng tôi cũng đang nghiên cứu xem liệu trí tuệ nhân tạo có thể hỗ trợ quá trình xem xét thủ công để tối ưu hóa việc phân tích một số thành phần độc hại phức tạp hơn hay không. 

Trong phần tiếp theo và cũng là phần cuối cùng của loạt bài này, “Khai thác mã nguồn mở: Những điều cần lường trước từ phía kẻ xấuTrong bài viết này, chúng ta sẽ tập trung vào những phương thức mới nhất mà các đối thủ đang sử dụng để làm cho các cuộc tấn công trở nên lén lút hơn, khó phát hiện hơn, nhắm mục tiêu cụ thể hơn vào các ngành công nghiệp nhất định và sinh lợi hơn. Liệu các cuộc tấn công ransomware có được thực hiện thông qua phương tiện này? Bọn tội phạm đang tận dụng các công cụ AI như thế nào để phát tán phần mềm độc hại tinh vi hơn? Liệu các dự án phổ biến hàng đầu có đang gặp rủi ro? Điều này nhằm mục đích giúp độc giả hiểu rõ hơn về cuộc chạy đua vũ trang này, và những gì có thể mong đợi trong ngắn hạn (nửa cuối năm 2024) và trung hạn (năm 2025). 

Chúng tôi sẽ kết luận bằng một vài suy nghĩ về những bước nhỏ mà cộng đồng có thể thực hiện mà không làm thay đổi quá nhiều tính cởi mở của thế giới mã nguồn mở. Ví dụ, một cơ chế hiệu quả hơn để báo cáo phần mềm độc hại cho các kho lưu trữ công cộng, và việc chia sẻ bằng chứng về các thành phần có khả năng độc hại với các kho lưu trữ và cộng đồng sẽ là một bước nhỏ đúng hướng để đạt được mục tiêu đóng cửa đối với các tác nhân đe dọa. 

Phần mềm độc hại trong các thành phần mã nguồn mở không nên làm gián đoạn những lợi ích to lớn mà cộng đồng mã nguồn mở đã mang lại cho xã hội chúng ta.  

  • [1] Công cụ quét của chúng tôi phát hiện các thành phần mã nguồn mở được tham chiếu bởi các dự án phần mềm được phân tích, do đó, biểu đồ phụ thuộc đầy đủ và cập nhật nhất được biết đến, ít nhất là đối với các dự án được quét thường xuyên. Xygeni OSS cung cấp một API mà khách hàng cũng có thể sử dụng trong quá trình đưa một thành phần quan tâm vào danh sách trắng, bao gồm thông tin về các lỗ hổng và bằng chứng độc hại.
  • [2]  Cơ chế bảo vệ có thể làm gián đoạn quá trình biên dịch nếu phát hiện điều kiện phù hợp với các vấn đề bảo mật. Các phát hiện về bảo mật như lỗ hổng nghiêm trọng và có thể khai thác được hoặc việc sử dụng một thành phần bị cách ly có thể được coi là đủ nghiêm trọng để làm gián đoạn quá trình biên dịch đối với phần mềm bị ảnh hưởng.
  • [3]Các chuyên gia phân tích bảo mật của chúng tôi chạy thành phần hoặc các tập lệnh cài đặt của nó trong môi trường hộp cát khi cần thiết. Tuy nhiên, MEW không thực hiện phân tích động, chủ yếu là vì hành vi độc hại không phải lúc nào cũng được thực hiện trong các cuộc tấn công có chủ đích và vì logic né tránh mà các tác nhân đe dọa sử dụng để né tránh phân tích động. 
  • [4]  Kỹ thuật này được đặt tên là Thuật toán tạo tên miền đã đăng ký (Registered Domain Generation Algorithms) hay RDGA, và các tác nhân đe dọa mới như cái gọi là... Súng lục ổ quay thỏ Đã có những khoản đầu tư lên tới 1 triệu đô la vào 500 tên miền, cho thấy ngành công nghiệp tội phạm mạng sinh lời đến mức nào. 

Giải phẫu các gói tin độc hại: Xu hướng hiện nay là gì?

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ả

sca-tools-software-composition-analysis-tools
Ưu tiên, khắc phục và bảo mật các rủi ro phần mềm của bạn
Đăng ký tài khoản miễn phí ngay.
Không cần thẻ tín dụng.

Bảo mật quá trình phát triển và phân phối phần mềm của bạn.

với bộ sản phẩm Xygeni