Giới thiệu CodeMender- một tác nhân AI để bảo mật mã
CodeMender giúp vá các lỗ hổng phần mềm quan trọng, đồng thời viết lại và bảo mật mã hiện có.
- 9 min read
Giới thiệu CodeMender: Một tác nhân AI cho bảo mật mã
Sử dụng AI tiên tiến để sửa các lỗ hổng phần mềm quan trọng
Hôm nay, chúng tôi chia sẻ những kết quả ban đầu từ nghiên cứu của mình về CodeMender, một tác nhân hỗ trợ bởi AI mới giúp cải thiện bảo mật mã một cách tự động.
Các lỗ hổng phần mềm rất khó và tốn thời gian để các nhà phát triển tìm và sửa, ngay cả với các phương pháp tự động truyền thống như fuzzing. Những nỗ lực dựa trên AI của chúng tôi như Big Sleep và OSS-Fuzz đã chứng minh khả năng của AI trong việc tìm ra các lỗ hổng zero-day mới trong phần mềm đã được kiểm tra kỹ lưỡng. Khi chúng ta đạt được nhiều đột phá hơn trong việc khám phá lỗ hổng do AI hỗ trợ, con người sẽ ngày càng khó theo kịp.
CodeMender giúp giải quyết vấn đề này bằng cách tiếp cận toàn diện đối với bảo mật mã, vừa phản ứng nhanh, vá ngay các lỗ hổng mới, vừa chủ động, viết lại và bảo mật mã hiện có, đồng thời loại bỏ toàn bộ các loại lỗ hổng trong quá trình này. Trong sáu tháng qua kể từ khi chúng tôi xây dựng CodeMender, chúng tôi đã tải lên 72 bản sửa lỗi bảo mật cho các dự án nguồn mở, bao gồm một số dự án lớn tới 4,5 triệu dòng mã.
Bằng cách tự động tạo và áp dụng các bản vá bảo mật chất lượng cao, tác nhân do AI hỗ trợ của CodeMender giúp các nhà phát triển và người bảo trì tập trung vào những gì họ làm tốt nhất - xây dựng phần mềm tốt.
CodeMender hoạt động
CodeMender hoạt động bằng cách tận dụng khả năng tư duy của các mô hình Gemini Deep Think gần đây để tạo ra một tác nhân tự trị có khả năng gỡ lỗi và sửa 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 các thay đổi và tự động xác thực những thay đổi đó để đảm bảo chúng chính xác và không gây ra hồi quy.
Mặc dù các mô hình ngôn ngữ lớn đang được cải thiện nhanh chóng, nhưng những sai sót trong bảo mật mã có thể gây tốn kém. Quy trình xác thực tự động của CodeMender đảm bảo rằng các thay đổi mã là chính xác trên nhiều khía cạnh bằng cách chỉ hiển thị các bản vá chất lượng cao cho con người xem xét, ví dụ: khắc phục nguyên nhân gốc rễ của sự cố, chính xác về mặt chức năng, không gây ra hồi quy và tuân theo các nguyên tắc về kiểu dáng.
Là một phần của nghiên cứu của chúng tôi, 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: Chúng tôi đã phát triển các công cụ dựa trên phân tích chương trình nâng cao, bao gồm phân tích tĩnh, phân tích động, kiểm tra khác biệt, fuzzing và bộ giải SMT. Bằng cách sử dụng các công cụ này để xem xét 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, CodeMender có thể xác định tốt hơn nguyên nhân gốc rễ của các lỗ hổng bảo mật và điểm yếu kiến trúc.
- Hệ thống đa tác nhân: Chúng tôi đã phát triển các tác nhân có mục đích đặc biệt cho phép CodeMender giải quyết các khía cạnh cụ thể của một vấn đề cơ bả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, công cụ này làm nổi bật sự khác biệt giữa mã gốc và mã đã sửa đổi để xác minh rằng các thay đổi được đề xuất không gây ra hồi quy và tự sửa nếu cần.
Khắc phục các lỗ hổng
Để vá một lỗ hổng một cách hiệu quả và ngăn nó tái xuất hiện, Code Mender 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à đưa ra các bản vá. Chúng tôi đã thêm hai ví dụ về các lỗ hổng vá CodeMender trong băng chuyền video bên dưới.
Ví dụ #1: Xác định nguyên nhân gốc rễ của lỗ hổng
Đây là một đoạn trích về lý luận của tác nhân về nguyên nhân gốc rễ cho một bản vá do CodeMender tạo ra, sau khi 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ã.
Mặc dù bản vá cuối cùng trong ví dụ này chỉ thay đổi một vài dòng mã, nhưng nguyên nhân gốc rễ của lỗ hổng không được rõ ràng ngay lập tức. Trong trường hợp này, báo cáo sự cố cho thấy tràn bộ đệm heap, nhưng vấn đề thực tế nằm ở nơi khác - quản lý ngăn xếp không chính xác các phần tử Ngôn ngữ đánh dấu mở rộng (XML) trong quá trình phân tích cú pháp.
Ví dụ #2: Tác nhân có thể tạo các bản vá không tầm thường
Trong ví dụ này, tác nhân CodeMender đã có thể đưa ra một bản vá không tầm thường giải quyết một vấn đề phức tạp về tuổi thọ đối tượng.
Tác nhân không chỉ có thể tìm ra nguyên nhân gốc rễ của lỗ hổng mà còn có thể sửa đổi một hệ thống hoàn toàn tùy chỉnh để tạo mã C trong dự án.
Chủ động viết lại mã hiện có để bảo mật tốt hơn
Chúng tôi cũng đã thiết kế CodeMender để chủ động viết lại mã hiện có để sử dụng các cấu trúc dữ liệu và API an toàn hơn.
Ví dụ: chúng tôi đã triển khai CodeMender để áp dụng các chú thích -fbounds-safety cho các phần của thư viện nén hình ảnh được sử dụng rộng rãi có tên là libwebp. Khi các chú thích -fbounds-safety được áp dụng, trình biên dịch sẽ thêm kiểm tra ranh giới vào mã để ngăn kẻ tấn công khai thác tràn hoặc thiếu bộ đệm để thực thi mã tùy ý.
Một vài năm trước, một lỗ hổng tràn bộ đệm heap trong libwebp (CVE-2023-4863) đã được một tác nhân đe dọa sử dụng như một phần của khai thác iOS zero-click. Với các chú thích -fbounds-safety, lỗ hổng này, cùng với hầu hết các tràn bộ đệm khác trong dự án nơi chúng tôi đã áp dụng các chú thích, sẽ không thể khai thác được mãi mãi.
Trong băng chuyền video bên dưới, chúng tôi hiển thị các ví dụ về quy trình ra quyết định của tác nhân, bao gồm các bước xác thực.
Ví dụ #1: Các bước lý luận của tác nhân
Trong ví dụ này, tác nhân CodeMender được yêu cầu giải quyết lỗi -fbounds-safety sau trên con trỏ bit_depths:
<picture class="picture">
<source
media="(min-width: 600px)"
type="image/webp"
width="616"
height="86"
srcset="https://lh3.googleusercontent.com/f7YUIkgCh40m_WmaZYxse_Q4xHSpPYB66pVNeUToM4SAupHiZl6y2huBI_3vkzHdLjY2nPa1NX_Luc31Azh6tkEEB4qDlEMPtocWh8ARqWqXU5mrXQ=w616-rw 1x, https://lh3.googleusercontent.com/f7YUIkgCh40m_WmaZYxse_Q4xHSpPYB66pVNeUToM4SAupHiZl6y2huBI_3vkzHdLjY2nPa1NX_Luc31Azh6tkEEB4qDlEMPtocWh8ARqWqXU5mrXQ=w1232-rw 2x"
/><source
type="image/webp"
width="528"
height="74"
srcset="https://lh3.googleusercontent.com/f7YUIkgCh40m_WmaZYxse_Q4xHSpPYB66pVNeUToM4SAupHiZl6y2huBI_3vkzHdLjY2nPa1NX_Luc31Azh6tkEEB4qDlEMPtocWh8ARqWqXU5mrXQ=w528-rw 1x, https://lh3.googleusercontent.com/f7YUIkgCh40m_WmaZYxse_Q4xHSpPYB66pVNeUToM4SAupHiZl6y2huBI_3vkzHdLjY2nPa1NX_Luc31Azh6tkEEB4qDlEMPtocWh8ARqWqXU5mrXQ=w1056-rw 2x"
/>
<img alt="" class="picture__image" height="86" loading="lazy" src="https://lh3.googleusercontent.com/f7YUIkgCh40m_WmaZYxse_Q4xHSpPYB66pVNeUToM4SAupHiZl6y2huBI_3vkzHdLjY2nPa1NX_Luc31Azh6tkEEB4qDlEMPtocWh8ARqWqXU5mrXQ=w616" width="616">
</picture>
Ví dụ #2: Tác nhân tự động sửa lỗi và lỗi kiểm tra
Một trong những tính năng chính khác của CodeMender là khả năng tự động sửa các lỗi mới và mọi lỗi kiểm tra phát sinh từ các chú thích của chính nó. Đây là một ví dụ về việc tác nhân phục hồi sau lỗi biên dịch.
Ví dụ #3: Tác nhân xác thực các thay đổi
Trong ví dụ này, tác nhân CodeMender sửa đổi một hàm và sau đó sử dụng công cụ đánh giá LLM được định cấu hình để tương đương chức năng để xác minh rằng chức năng vẫn còn nguyên vẹn. Khi công cụ phát hiện lỗi, tác nhân sẽ tự sửa dựa trên phản hồi của thẩm phán LLM.
Bảo mật phần mềm cho 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, nhưng chúng tôi đang áp dụng một cách tiếp cận thận trọng, tập trung vào độ tin cậy. Hiện tại, tất cả các bản vá do CodeMender tạo ra đều được các nhà nghiên cứu con người xem xét trước khi chúng được gửi lên thượng nguồn.
Sử dụng CodeMender, chúng tôi đã bắt đầu gửi các bản vá cho nhiều thư viện nguồn mở quan trọng khác nhau, nhiều trong số đó đã được chấp nhận và tải lên. Chúng tôi đang tăng dần 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 nguồn mở.
Chúng tôi cũng sẽ dần liên hệ với những người bảo trì dự án nguồn mở quan trọng quan tâm với các bản vá do CodeMender tạo ra. Bằng cách lặp lại phản hồi từ quy trình này, chúng tôi hy vọng sẽ phát hành CodeMender như một công cụ mà tất cả các nhà phát triển phần mềm có thể sử dụng để giữ cho cơ sở mã của họ an toàn.
Chúng tôi sẽ có một số kỹ thuật và kết quả để chia sẻ, mà chúng tôi dự định xuất bản dưới dạng các bài báo và báo cáo kỹ thuật trong những tháng tới. 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 để tăng cường bảo mật phần mềm cho mọi người.
Lời cảm ơn
Tín dụng (được liệt kê theo thứ tự bảng chữ cái):
Alex Rebert, Arman Hasanzadeh, Carlo Lemos, Charles Sutton, Dongge Liu, Gogul Balakrishnan, Hiep Chu, James Zern, Koushik Sen, Lihao Liang, Max Shavrick, Oliver Chang và Petros Maniatis.
Bài viết liên quan
- Tăng cường các biện pháp bảo vệ an ninh của Gemini
- Đánh giá các mối đe dọa an ninh mạng tiềm ẩn của AI tiên tiến
Link bài viết gốc
- Tags:
- Ai
- 06 October 2025
- Deepmind.google