Kỹ sư Google dùng Gemini 4 Argon và Z3 để bắt lỗi biên trong Go
Bắt đầu từ đây
Một kỹ sư Google phụ trách chương trình kỹ năng tác nhân của công ty đã xây dựng một pipeline trong đó Gemini 4 Argon đọc mã nguồn Go và mã hợp ngữ RISC-V, rồi chuyển các trap runtime.panicBounds còn sót lại thành ràng buộc Z3; sau đó go test phát lại bất kỳ đầu vào thỏa mãn nào như một reproducer thực sự. Theo lời kể của kỹ sư này, quy trình đã bắt được cả ba lỗi được cài sẵn và ba lỗi tiềm ẩn trong skill-lint. go test -fuzz không có seed đã bỏ sót hai trong số các lỗi crash được cài sẵn, vì Go kiểm tra slice dựa trên capacity chứ không phải length. Việc cắt capacity về bằng length bằng data[:len(data):len(data)] khiến fuzzer làm crash cả hai lỗi tràn trong cả ba lần chạy, với trung vị là 0,28 s và 0,17 s.
Tạo từ các bài viết · cập nhật 14 giờ trước
Dòng thời gian bài viết
Theo các bài viết để thấy sự việc từ nhiều phía.
- Google Developers BlogKỹ sư Google dùng Gemini 4 Argon và Z3 để bắt lỗi kiểm tra biên trong Go mà fuzzing bỏ sót
Một kỹ sư Google, người dẫn dắt chương trình kỹ năng tác nhân của công ty, đã xây dựng một pipeline trong đó Gemini 4 Argon đọc mã nguồn Go và mã hợp ngữ RISC-V, chuyển các trap runtime.panicBounds còn sót lại thành ràng buộc Z3, sau đó go test phát lại bất kỳ đầu vào thỏa mãn nào như một reproducer thực sự. Quy trình này bắt được cả ba lỗi được cài sẵn và ba lỗi tiềm ẩn trong skill-lint, trong khi go test -fuzz không có seed bỏ sót hai trong số các crash được cài sẵn vì Go kiểm tra slice dựa trên capacity thay vì length. Việc cắt capacity về bằng length bằng data[:len(data):len(data)] khiến fuzzer làm crash cả hai lỗi tràn trong cả ba lần chạy, với trung vị là 0,28 s và 0,17 s.
Độ nóng của sự việc này
Chưa đủ quan sát liên tục để vẽ xu hướng.