Cách hoạt động
Từ liên kết repo đến các phát hiện đã xác minh
Quy trình này mô phỏng quy trình Anthropic mô tả cho OSS Scanner — lập mô hình mối đe dọa, kiểm tra, kiểm tra chéo, tìm nguyên nhân gốc, tạo bản vá — sử dụng các mô hình Claude tiên tiến có thể truy cập qua API công khai.
- 1
Sao chép an toàn
Chúng tôi lấy nhánh bạn yêu cầu bằng lệnh git clone nông, lọc blob qua HTTPS. Git hook bị vô hiệu hóa, symlink được checkout dưới dạng tệp thông thường và mọi giao thức ngoài HTTPS đều bị từ chối. Địa chỉ mạng riêng bị chặn, nên không thể hướng máy quét đến máy chủ nội bộ.
Không có nội dung nào từ repo được thực thi: không build, không cài gói, không chạy kiểm thử. Bản checkout sẽ bị xóa khi quá trình quét kết thúc.
- 2
Kiểm kê và xếp hạng rủi ro
Mỗi tệp mã nguồn dạng văn bản được liệt kê kèm ngôn ngữ và kích thước. Mã được đóng gói cùng dự án, tệp được tạo tự động, gói đã rút gọn và tệp khóa bị bỏ qua. Mỗi tệp được chấm điểm rủi ro dựa trên các điểm đích nguy hiểm — sao chép bộ nhớ, thực thi shell, giải tuần tự hóa, tạo câu lệnh SQL, kết xuất mẫu, ghép đường dẫn, mã mật mã và xác thực — cũng như các đường đi quan trọng như bộ phân tích cú pháp, trình xử lý giao thức và định tuyến yêu cầu.
- 3
Mô hình mối đe dọa
Nếu repo có .oss-scanner/threat_model.md (cùng tệp mà máy quét của Anthropic đọc), SECURITY.md hoặc mô hình mối đe dọa bạn cung cấp khi đăng ký, máy quét sẽ làm theo. Nếu không, một mô hình sẽ đọc README, cấu trúc thư mục và các tệp rủi ro cao nhất rồi soạn mô hình: dự án là gì, đầu vào không đáng tin cậy đi vào ở đâu và những gì nằm ngoài phạm vi.
Mô hình mối đe dọa cũng chọn các tệp trọng tâm, để quá trình kiểm tra tập trung ngân sách vào những đoạn mã mà kẻ tấn công thực sự có thể tiếp cận.
- 4
Kiểm tra
Các tệp có rủi ro cao nhất được gom thành những lô lớn kèm số dòng rồi gửi đến một mô hình suy luận cùng với threat model. Mô hình tìm các vấn đề mà một kiểm toán viên cẩn trọng sẽ báo cáo:
- an toàn bộ nhớ: tràn bộ đệm, use-after-free, cắt cụt số nguyên
- injection: SQL, lệnh, mẫu, path traversal, SSRF
- logic xác thực, phân quyền và phiên
- giải tuần tự hóa không an toàn và nhầm lẫn trong trình phân tích cú pháp
- sử dụng sai mật mã và xử lý bí mật
Các lượt quét nhanh dùng Claude Haiku với ngân sách vừa phải. Các lượt quét chuyên sâu dành cho dự án đã đăng ký dùng Claude Sonnet và đọc lượng mã nhiều gấp tối đa bốn lần.
- 5
Xác minh độc lập
Mỗi phát hiện tiềm năng được chuyển đến một tác tử xác minh riêng với ngữ cảnh mới. Nhiệm vụ của tác tử là bác bỏ phát hiện đó: truy vết luồng dữ liệu, tìm xem dữ liệu có được xác thực ở nơi khác hay không, kiểm tra xem theo mô hình mối đe dọa, đầu vào có thực sự do kẻ tấn công kiểm soát hay không. Chỉ những phát hiện được xác nhận hoặc đánh giá là có khả năng đúng mới được giữ lại; số còn lại được tính là bị bác bỏ.
Với các phát hiện được giữ lại, tác tử xác minh sẽ viết nguyên nhân gốc, một bộ kiểm thử tái hiện lỗi và một bản vá tiềm năng tối thiểu dưới dạng diff hợp nhất.
- 6
Commit đưa lỗi vào và báo cáo
Các phát hiện trùng lặp có chung nguyên nhân gốc được gộp lại. git blame trên các dòng có lỗ hổng giúp xác định commit gần nhất đã chỉnh sửa chúng — thường là commit đưa lỗi vào — để bạn có thể thêm thẻ Fixes: và xác định những bản phát hành nào bị ảnh hưởng.
Báo cáo được lưu dưới một ID ngẫu nhiên, không thể đoán được. Bạn có thể xuất báo cáo dưới dạng Markdown để làm bản tin bảo mật, JSON cho công cụ hoặc SARIF 2.1.0 cho tính năng quét mã của GitHub.
Những việc máy quét không làm
- Máy quét không chạy mã, build mã hay tải các phần phụ thuộc.
- Máy quét không công bố phát hiện, tạo issue hay liên hệ với bất kỳ ai ngoài các maintainer đã đăng ký.
- Máy quét không giữ bản sao mã nguồn của bạn sau khi quét. Báo cáo chỉ chứa các đoạn ngắn của những dòng bị ảnh hưởng.
- Máy quét không đảm bảo điều gì: mô hình có thể bỏ sót lỗi và đôi khi báo cáo sai. Báo cáo không phát hiện vấn đề không phải là chứng nhận bảo mật.
Vì sao bộ kiểm thử tái hiện lỗi bị khóa
Bất kỳ ai cũng có thể dán liên kết repo công khai, kể cả người không phải maintainer. Nguyên nhân gốc và bản vá giúp ích cho người phòng thủ; bằng chứng khái niệm có thể hoạt động chủ yếu lại giúp kẻ tấn công. Vì vậy, bộ kiểm thử tái hiện lỗi sẽ bị ẩn cho đến khi có người commit một tệp mã thông báo vào repo — bằng chứng họ có thể phát hành bản sửa lỗi. Cách làm này tuân theo hướng dẫn của nhân Linux rằng bộ kiểm thử tái hiện lỗi do AI phát hiện chỉ nên được chia sẻ khi maintainer yêu cầu.
Điểm khác biệt giữa dịch vụ này và OSS Scanner của Anthropic
Anthropic chạy máy quét trong các sandbox ngoại tuyến, nơi dự án được build từ Dockerfile; nhờ đó, các tác tử có thể biên dịch và thực thi mã để xác nhận động các lỗi. Dịch vụ này sử dụng những mô hình mạnh nhất của họ, bao gồm Claude Mythos, hiện không được cung cấp công khai. Chúng tôi phân tích mã tĩnh bằng các mô hình Claude có thể truy cập công khai. Đổi lại, bất kỳ ai cũng có thể sử dụng ossscanner.org chỉ trong vài phút, không cần đăng ký hay Dockerfile.