CodeMender: AI tự động vá lỗ hổng bảo mật phần mềm

Trong thế giới kỹ thuật số ngày nay, lỗ hổng bảo mật phần mềm là một thách thức dai dẳng, đe dọa sự an toàn của dữ liệu và hệ thống trên toàn cầu. Các phương pháp truyền thống, dù là thủ công hay tự động hóa như fuzzing, thường tốn rất nhiều thời gian và công sức của các nhà phát triển để tìm kiếm và khắc phục. Với sự bùng nổ của phần mềm và sự tinh vi ngày càng tăng của các cuộc tấn công mạng, việc chỉ dựa vào con người để theo kịp là gần như không thể. Chính trong bối cảnh đó, chúng tôi tự hào chia sẻ những kết quả ban đầu từ nghiên cứu về CodeMender – một tác nhân AI tiên tiến được thiết kế để tự động nâng cao bảo mật mã nguồn.

CodeMender không chỉ là một công cụ vá lỗi đơn thuần; nó đại diện cho một bước đột phá trong việc sử dụng AI để giải quyết các vấn đề bảo mật phức tạp. Các nỗ lực dựa trên AI trước đây của chúng tôi, như Big Sleep và OSS-Fuzz, đã chứng minh khả năng của AI trong việc phát hiện các lỗ hổng zero-day mới trong cả những phần mềm đã được kiểm tra kỹ lưỡng. CodeMender ra đời để giải quyết bài toán cấp bách này bằng cách tiếp cận bảo mật mã nguồn một cách toàn diện, vừa phản ứng nhanh chóng để vá các lỗ hổng mới, vừa chủ động viết lại và bảo mật mã nguồn hiện có, qua đó loại bỏ toàn bộ các nhóm lỗ hổng tiềm tàng. Trong sáu tháng phát triển CodeMender, chúng tôi đã đóng góp 72 bản vá bảo mật cho các dự án mã nguồn mở, bao gồm cả những dự án có quy mô lớn tới 4.5 triệu dòng mã. Điều này giúp các nhà phát triển và người bảo trì tập trung vào công việc cốt lõi của họ: xây dựng phần mềm chất lượng cao.

CodeMender hoạt động như thế nào: Sức mạnh của AI trong bảo mật mã nguồn

CodeMender hoạt động dựa trên khả năng tư duy mạnh mẽ của các mô hình Gemini Deep Think models mới nhất, tạo ra một tác nhân tự động có khả năng gỡ lỗi và khắc phục các lỗ hổng phức tạp. Để làm được điều này, tác nhân CodeMender được trang bị các công cụ mạnh mẽ cho phép nó suy luận về mã trước khi thực hiện bất kỳ thay đổi nào, đồng thời tự động xác thực các thay đổi đó để đảm bảo chúng chính xác và không gây ra các lỗi hồi quy (regressions).

Mặc dù các mô hình ngôn ngữ lớn đang cải thiện nhanh chóng, nhưng những sai sót trong bảo mật mã nguồn có thể gây ra hậu quả nghiêm trọng. Quy trình xác thực tự động của CodeMender đảm bảo rằng các thay đổi mã nguồn là chính xác trên nhiều khía cạnh khác nhau. Nó chỉ đưa ra để con người xem xét những bản vá chất lượng cao, ví dụ như những bản vá khắc phục tận gốc nguyên nhân vấn đề, hoạt động đúng chức năng, không gây lỗi hồi quy và tuân thủ các hướng dẫn về phong cách mã hóa.

Trong quá trình nghiên cứu, chúng tôi cũng đã phát triển các kỹ thuật và công cụ mới cho phép CodeMender suy luận về mã và xác thực các thay đổi hiệu quả hơn. Điều này bao gồm phân tích chương trình nâng cao (static analysis, dynamic analysis, differential testing, fuzzing và SMT solvers) để kiểm tra một cách có hệ thống các mẫu mã, luồng điều khiển và luồng dữ liệu, giúp CodeMender xác định tốt hơn nguyên nhân gốc rễ của các lỗi bảo mật và điểm yếu kiến trúc. Ngoài ra, chúng tôi cũng phát triển hệ thống đa tác tử (multi-agent systems), cho phép CodeMender giải quyết các khía cạnh cụ thể của một vấn đề tiềm ẩn. Ví dụ, CodeMender sử dụng một công cụ phê bình dựa trên mô hình ngôn ngữ lớn để làm nổi bật sự khác biệt giữa mã gốc và mã đã sửa đổi, nhằm xác minh rằng các thay đổi được đề xuất không gây ra lỗi hồi quy và tự điều chỉnh khi cần thiết.

Vá lỗ hổng và nâng cấp bảo mật chủ động với CodeMender

Để vá một lỗ hổng hiệu quả và ngăn chặn nó tái xuất hiện, CodeMender sử dụng trình gỡ lỗi, trình duyệt mã nguồn và các công cụ khác để xác định nguyên nhân gốc rễ và đề xuất các bản vá. Ví dụ, trong một trường hợp báo cáo lỗi tràn bộ đệm heap (heap buffer overflow), vấn đề thực sự nằm ở việc quản lý ngăn xếp không chính xác của các phần tử XML trong quá trình phân tích cú pháp. CodeMender đã phân tích kết quả đầu ra của trình gỡ lỗi và công cụ tìm kiếm mã để đưa ra một bản vá chính xác, dù chỉ thay đổi vài dòng mã nhưng lại giải quyết được nguyên nhân sâu xa. Trong một ví dụ khác, tác nhân CodeMender đã có thể đưa ra một bản vá phức tạp giải quyết vấn đề vòng đời đối tượng phức tạp, không chỉ tìm ra nguyên nhân gốc rễ mà còn sửa đổi một hệ thống tùy chỉnh để tạo mã C trong dự án.

Không dừng lại ở việc vá lỗi bảo mật một cách phản ứng, chúng tôi còn thiết kế CodeMender để viết lại mã nguồn chủ động nhằm sử dụng các cấu trúc dữ liệu và API an toàn hơn. Chẳng hạn, chúng tôi đã triển khai CodeMender để áp dụng các chú thích -fbounds-safety annotations vào các phần của thư viện nén hình ảnh libwebp. Khi các chú thích này được áp dụng, trình biên dịch sẽ thêm các kiểm tra giới hạn vào mã, ngăn chặn kẻ tấn công khai thác lỗi tràn hoặc thiếu bộ đệm để thực thi mã tùy ý. Một lỗ hổng tràn bộ đệm heap trong libwebp (CVE-2023-4863) từng bị một tác nhân đe dọa sử dụng trong một cuộc tấn công zero-click trên iOS. Với các chú thích -fbounds-safety, lỗ hổng này, cùng với hầu hết các lỗi tràn bộ đệm khác trong dự án mà chúng tôi đã áp dụng chú thích, sẽ trở nên không thể khai thác vĩnh viễn. Một tính năng quan trọng khác của CodeMender là khả năng tự động sửa lỗi và bất kỳ lỗi kiểm thử nào phát sinh từ chính các chú thích của nó, sử dụng công cụ LLM judge để xác minh tính tương đương chức năng và tự điều chỉnh dựa trên phản hồi.

Hướng tới một tương lai phần mềm an toàn hơn cho tất cả mọi người

Mặc dù những kết quả ban đầu của chúng tôi với CodeMender rất hứa hẹn, chúng tôi đang tiếp cận một cách thận trọng, tập trung vào độ tin cậy. Hiện tại, tất cả các bản vá được tạo ra bởi CodeMender đều được các nhà nghiên cứu xem xét kỹ lưỡng trước khi được gửi lên các dự án mã nguồn mở. Chúng tôi đã bắt đầu gửi các bản vá cho nhiều thư viện mã nguồn mở quan trọng, và nhiều bản đã được chấp nhận và tích hợp. Chúng tôi đang dần tăng cường quy trình này để đảm bảo chất lượng và giải quyết một cách có hệ thống các phản hồi từ cộng đồng mã nguồn mở.

Chúng tôi cũng sẽ dần tiếp cận các nhà bảo trì quan tâm của các dự án mã nguồn mở quan trọng với các bản vá do CodeMender tạo ra. Bằng cách lặp lại và cải thiện dựa trên phản hồi từ quá trình này, chúng tôi hy vọng sẽ phát hành CodeMender như một công cụ hữu ích mà tất cả các nhà phát triển phần mềm có thể sử dụng để giữ cho mã nguồn của họ luôn an toàn. Trong những tháng tới, chúng tôi dự định công bố các kỹ thuật và kết quả này dưới dạng các bài báo và báo cáo kỹ thuật. Với CodeMender, chúng tôi mới chỉ bắt đầu khám phá tiềm năng đáng kinh ngạc của AI trong việc tăng cường bảo mật phần mềm cho tất cả mọi người.

Share your love
Gọi ngay Chat