Chương 1. GIỚI THIỆU 11 Mở dau Trong việc phát triển phần mềm, việc tự xây dựng các thư viện lại từ đầu sẽ rất tốn nguôn lực và kéo dài thời gian phát triển phần mềm. Việc sử dụng các thư viện có sẵn từ các bên thứ ba (ví dụ PyPI cho Python) sẽ tiết kiệm chi phí, nâng cao hiệu quả cho việc phát triển phần mềm. Các thư viện mã nguồn mở là một lựa chọn của rất nhiều lập trình viên khi phát triển phần mềm.
Bên cạnh những lợi ích to lớn mà các thư viện mã nguồn mở đem lại, thì cũng tồn tại những rủi ro về bảo mật. Ví dụ, người tấn công có thể chèn các đoạn mã độc vào các thư viện mã nguồn mở trong một chuỗi cung ứng phát triển phần mềm, kết quả là lập trình viên sẽ trở thành nạn nhân khi sử dụng các thư viện này sé bị nhiễm mã độc khi sử dụng các gói phần mềm độc hại này. Một số hành vi độc hại trên máy nạn nhân có thể kể tới như đánh cắp thông tin (thông tin về hệ điều hành, mã thông bao(token), khóa phién(session key) v.) hay thực hiện các câu lệnh độc hai (command and control), reverse shell v. Ngoài ra, người tan công còn sử dụng nhiều các kỹ thuật anti-analysis khác nhau để qua mặt các công cụ dò tìm mã độc như mã hóa, làm rối mã v.
Theo một phân tích của snyk.io thì từ đầu năm 2023 tổ chức Snyk đã phát hiện ra hơn 6,800 các gói mã nguồn mở độc hại [2]. Đặc biệt, chỉ trong tháng 12 năm 2022 thì hãng Checkmarx đã phát hiện hơn 144,000 các gói mã nguồn mở độc hại [3]. Điều này cho thấy các gói phần mềm độc hại đang gia tăng nhanh chóng trong những năm gan đây [2]. Có hai kiểu phân tích chính mã độc cho các gói mã nguồn mở là: phân tích tinh va phân tích động.
Phân tích tinh là quá trình phân tích mà không thực thi phần mềm mã độc. Phân tích động là quá trình phân tích chạy chương trình hoặc thực thi trong môi trường cô lập (sandbox). Công cụ package-analysis là công cụ tự động phân tích các gói mã nguồn mở từ các kho lưu trữ mã nguồn mở. Đây là một công cụ mã nguồn mở được Google phát triển.
Công cụ này tập trung vào phân tích các hành vi thực sự của mã nguồn từ đó cho ra các kết quả chính xác hơn. Tuy nhiên, công cu package-analysis hiện tại chỉ cung cấp kết quả dit liệu phân tích ở dạng thô (raw analysis result) ở dạng tệp tin JSON, điều này sẽ đòi hỏi nhiều CHUONG 1. GIGI THIỆU nguồn lực để phân tích các dữ liệu này. Các nguồn lực này bao gồm thời gian xem xét phân tích kết quả ở dạng thô hay viết các quy tắc (rules) để xác định xem gói mã nguồn mở này có độc hại hay không.
Vì lý do đó, trong khóa luận tốt nghiệp này nhóm em quyết định tìm hiểu và phân tích, khai phá dữ liệu phân tích thô được cung cấp bởi công cụ package-analysis để tìm hiểu hành vi thực sự bên trong của các gói mã nguồn mở lành tính và độc hại trong các kho lưu trữ mã nguồn mở phổ biến. Khi phân tích các gói phần mềm mã nguồn mở, các nhà nghiên cứu bảo mật thường tập trung quan sát các yếu tố thường xác định là độc hại (ví dụ: các tên miền nghi vấn độc hại mà các gói kết nối tới, các lời gọi hệ thống mà các gói sử dụng). Bên cạnh đó, những kiến thức chuyên môn cũng là yếu tố quan trọng để các nhà phân tích xác định các gói phần mềm là độc hại hay không. Dương tính giả (False positives) thường xảy ra trong quá trình phân tích, khi mà các gói phần mềm là lành tính nhưng lại bị nhầm xác định là độc hại [4].
Để tránh dương tính giả, các công cụ phân tích mã độc cần phải phân biệt rõ sự khác biệt trong hành vi của các gói lành tính và các gói độc hại. Qua tìm hiểu của nhóm em, hiện nay chưa có tài liệu nghiên cứu khoa học nào phân tích về các hành vi độc hại của các gói phần mềm mã nguồn mở sử dụng công cụ phân tích động. Các công cụ phát hiện gói phần mềm độc hại dựa vào các đặc điểm tĩnh thường đưa ra nhiều kết quả dương tính giả do các kỹ thuật qua mặt các công cụ phân tích tĩnh luôn được cải tiến [1]. Một cách tiếp cận khác để phân tích chính xác hơn các gói phần mềm đó là dựa trên phân tích động (dynamic analysis).
Việc xây dựng những công cu phát hiện các gói mã nguồn độc hai dựa trên phân tích động mang nhiều kết quả hứa hẹn, vì nó tập trung phân tích vào biểu hiện hành vi của mã độc thay vì các đặc tính cố định. Nghiên cứu bởi Vu va các đồng nghiệp [4] khuyến nghị nên có nhiều nghiên cứu tập trung vào phân tích động, đặc biệt là cải thiện độ chính xác của kĩ thuật sandboxing và xử lý các kết quả phân tích thô của các công cụ phân tích động. Vì những lý do dé cập phía trên, trong khóa luận tốt nghiệp này, nhóm em tập trung vào việc phân tích các đặc tính động của các gói mã nguồn mở trên nhiều kho mã nguồn mở khác nhau bao gồm PyPI, npm, RubyGems, crates. Trong quá trình tìm hiểu các công cụ phân tích động (Chương 2), nhóm em quyết 1.
CONG BO KHOA HOC định lựa chon package-analysis [5] là công cu phan tích chính vi đây là một công cụ mã nguồn mở, dễ sử dụng, và có thể mở rộng (Chương 3). Trong khóa luận này nhóm em sử dụng các kết quả phân tích của package-analysis cho các gói mã nguồn mở. Sử dụng các kết quả phân tích này, nhóm em phân tích các đặc tính phổ biến có trong các gói độc hại và lành tính. Hơn nữa, trong khóa luận này nhóm em cũng so sánh sự khác biệt hành vi giữa các gói mã nguồn mở độc hại và gói mã nguồn mở lành tính (Chương 4).
Các đặc tính được trích xuất từ kết quả phân tích của các gói được đưa vào các giải thuật học máy để tự động phát hiện các gói mã nguồn mở (Chương 6). Để xây dựng được các mô hình học máy để phân loại các gói mã nguồn mở độc hại, nhóm em đã xây dựng một tập dữ liệu bao gồm các gói lành tính và độc hại. Các bước phân tích và khai phá dif liệu giúp nhóm em hiểu rõ sự khác nhau trong hành vi của các gói lành tính và các gói độc hại. Các mục dưới đây tóm lược các đóng góp của khóa luận tốt nghiệp này: ¢ Phương pháp các gói lành tính và độc hại phục vu cho việc phân tích hành vi và huấn luyện các mô hình học máy.
* Tìm hiểu về công cụ phân tích động các gói phần mềm mã nguồn mở package- analysis, bao gồm các hạn chế cũng như ưu điểm của công cụ này và kỹ thuật sandboxing đăng sau nó. « Phân tích các hành vi độc hại và các hành vi lành tính trong các gói phần mềm mã nguồn mở, từ đó chắt lọc ra các đặc tính để phân loại các gói độc hại. s Áp dung các mô hình học máy dựa trên dữ liệu của package-analysis để phân loại gói độc hại và lành tính. Công bố khoa học Kết quả nghiên cứu từ khóa luận này đã được nhóm em nộp vào một hội nghị quốc tế có tên “International Conference on Computer Applications in Industry and En- gineering”.
Mã nguồn, cũng như các kết quả phân tích được nhóm em lưu trữ tại [6] CHUONG 1. GIGI THIỆU để các nhóm nghiên cứu khác có thể tham khảo. Ngoài ra, nhóm em đang tiếp tục phát triển và mở rộng bài báo hội nghị để nộp vào một tạp chí từ Q3 trở lên. Mục tiêu, đối tượng và phạm vi nghiên cứu 1.1 Mục tiêu nghiên cứu 1.1 Về kiến thức Thông qua khóa luận tốt nghiệp này, nhóm em hướng tới tìm hiểu và vận dụng những kiến thức sau: « Cấu trúc của các gói phần mềm mã nguồn mở trên các kho phần mềm phổ biến như PyPI, npm.
* Cách thức hoạt động của một kho mã nguồn mở cũng như cách người tấn công lợi dụng chúng để chèn mã độc tấn công người dùng. s Cách thức hoạt động của các công cu phát hiện các gói độc hại, ưu và nhược điểm của từng công cụ. « Phân tích và trích xuất các đặc tính từ các kết qua phân tích của package- analysis. « Lua chọn các đặc tính phù hợp cho các mô hình học máy để phân loại các gói độc hại và lành tính.
« Nam bắt và vận dụng được các kiến thức cơ bản về học máy cho việc phân loại các gói độc hại.2 Về sản phẩm Bên cạnh kiến thức, nhóm em cũng mong muốn tạo ra một sản phẩm ứng dụng học máy vào việc phát hiện các gói phần mềm độc hại dựa trên dữ liệu của công cụ package-analysis. BO CỤC CUA KHÓA LUẬN 1.2 Đối tượng và phạm vi nghiên cứu Đối tượng và phạm vi nghiên cứu của khóa luận tốt nghiệp này gồm có: 1. Nghiên cứu các kỹ thuật phân tích động các gói phần mềm độc hại, cụ thể là với công cụ package-analysis. Phân tích kết quả phân tích từ công cụ package-analysis để đánh giá hiệu năng cũng như tìm hiểu các đặc tính của các gói mã nguồn mở.
Xây dựng một tập dữ liệu bao gồm các gói mã nguồn mở lành tính và độc hại, phục vụ cho việc xây dựng các mô hình học máy để phân loại mã độc. Ap dụng các giải thuật hoc máy trên các đặc tinh động trích xuất từ tap dữ liệu thu thập được. Đánh giá hiệu năng của các giải thuật học máy trong việc phân loại mã độc.44 Bồ cục của khóa luận Bố cục của khóa luận được tổ chức như sau. « Chương | giới thiệu tổng quan về đề tai.
¢ Chương 2 mô tả khái niệm quan trọng trong bai báo. s Chương 3 mô tả kỹ thuật sandbox của package-analysis và quá trình phân tích của package-analysis. « Chương 4 mô tả thực nghiệm và kết quả phát hiện từ việc phân tích dữ liệu lớn từ package-analysis. « Chương 5 trình bày lý thuyết các giải thuật học máy được sử dụng trong thực nghiệm.
« Chương 6 trình bày các kỹ thuật học máy trong phát hiện các gói phần mềm độc hại và trình bày chương trình ứng dụng của nhóm em. GIGI THIỆU * Chương 7 nhận xét những hạn chế của khóa luận nay và dé xuất cách cải thiện trong tương lai. * Chương 8 trình bày tóm tắt những kết quả đạt được trong khóa luận của nhóm em.