Anthropic dùng Claude thu hẹp bề mặt tấn công của mã nguồn: phát hiện 493 lỗ hổng chỉ trong 25 dự án
Anthropic công bố nghiên cứu dùng Claude để tự động phân tích và thu hẹp bề mặt tấn công của các cơ sở mã lớn. Trên 25 dự án mã nguồn mở với hơn 5 triệu dòng lệnh, Claude phát hiện 493 vấn đề, bao gồm cả những lỗ hổng tồn tại 21 năm và hàng nghìn dòng mã có thể bị truy cập trước khi xác thực trong OpenSSH.

Trong một bài viết nghiên cứu mới, Anthropic đã trình bày cách sử dụng mô hình Claude để tự động phân tích và thu hẹp bề mặt tấn công (attack surface) của mã nguồn — một hướng tiếp cận được đánh giá là thực tiễn hơn nhiều so với việc chỉ đi tìm và vá từng lỗ hổng riêng lẻ.
Theo Anthropic, việc bảo mật phần mềm bằng cách tìm và sửa từng lỗ hổng không hiệu quả về quy mô: vá được một lỗ hổng nghiêm trọng cũng không cho bạn biết gì về những lỗ hổng còn lại. Trái lại, giảm khả năng tiếp cận mã nguồn có thể giảm mức độ nghiêm trọng của cả những lỗ hổng chưa biết — kể cả những lỗ hổng đang bị khai thác âm thầm.
"Các kỹ thuật này không loại bỏ những lỗ hổng chưa biết trong mã, nhưng chúng khiến các lỗ hổng khó bị chạm tới hơn, và qua đó giảm mức độ nghiêm trọng của chúng."
Nghiên cứu của Anthropic về thu hẹp bề mặt tấn công bằng AI
Ba phương pháp thu hẹp bề mặt tấn công
Nhóm nghiên cứu của Anthropic tập trung vào ba cách tiếp cận chính:
- Cấu hình mặc định: Xác định các đoạn mã có thể được truy cập trong cấu hình mặc định khi phát hành nhưng không phục vụ bất kỳ chức năng mặc định nào.
- Tương tác giữa các cấu hình: Tìm ra những cặp tùy chọn có vẻ hợp lý khi xét riêng lẻ, nhưng lại gây vấn đề khi kết hợp — ví dụ âm thầm vô hiệu hóa một lớp kiểm soát bảo mật.
- Khả năng truy cập sớm: Phát hiện các đoạn mã nhạy cảm về bảo mật nhưng lại chạy trước một lớp kiểm soát phù hợp (như xác thực), hoặc trước khi người dùng tương tác.
Anthropic đã phân tích 25 dự án mã nguồn mở với tổng cộng hơn 5 triệu dòng lệnh, viết bằng C, C++, Java, PHP và Python. Claude đã lập danh mục hơn 17.000 tùy chọn cấu hình, trong đó 3.842 tùy chọn liên quan đến cấu hình của một lớp kiểm soát hoặc tính năng có ý nghĩa bảo mật.
Kết quả: 493 vấn đề được phát hiện
Các dự án được chia thành ba nhóm: Public (phục vụ mọi người dùng), Gated (chỉ phục vụ người dùng đã xác thực) và Private (chỉ phục vụ môi trường nội bộ của người vận hành). Claude đã tìm ra 493 vấn đề, với một số phát hiện đáng chú ý:
- Cả 11 dự án thuộc nhóm Gated đều có mã vô tình có thể truy cập được, dù tỷ lệ không lớn so với tổng số dòng lệnh. Cụ thể, Claude phát hiện 93 bề mặt trước xác thực không cần thiết trong cấu hình mặc định, 37 vị trí mã thực thi hoặc trạng thái được ghi lại trước khi xác thực, và 61 tổ hợp cấu hình âm thầm làm yếu một lớp kiểm soát trước xác thực.
- 162 tổ hợp cấu hình nhạy cảm về bảo mật được chấp nhận mà không báo lỗi, không cảnh báo và không có tài liệu về hành vi tương tác. Trong đó, 94 trường hợp âm thầm tắt một lớp kiểm soát bảo mật.
Một mẫu lỗi đáng chú ý xuất hiện độc lập ở bốn dự án không liên quan: khi quản trị viên viết quy tắc truy cập cho client từ xa bằng hostname hoặc mẫu wildcard thay vì địa chỉ IP, nhưng tính năng tra cứu DNS ngược lại bị tắt — quy tắc từ chối (deny rule) sẽ không bao giờ kích hoạt, khiến danh sách kiểm soát rơi vào trạng thái fail open (mở toang khi lỗi).
Minh họa phân tích mã nguồn bằng AI
Trường hợp điển hình: OpenSSH
Đáng ngạc nhiên nhất là OpenSSH — một trong những cơ sở mã C được kiểm toán kỹ lưỡng nhất thế giới — lại là dự án mà Claude đạt được mức giảm bề mặt tấn công lớn nhất tính theo tỷ lệ dòng lệnh.
Khi lần theo các đường dẫn đầu vào của SSH daemon trong bản phát hành 10.4, Claude phát hiện khoảng 4.500 dòng mã mới và thử nghiệm cho ML-DSA-44 (thuật toán chữ ký hậu lượng tử) mà một client chưa xác thực có thể chạm tới trong cấu hình mặc định — dù ML-DSA không được bật mặc định và kể cả khi quản trị viên loại trừ thuật toán này. Con số này tương đương khoảng 16% mã trước xác thực của sshd mặc định.
Anthropic đã báo cáo cho nhóm phát triển OpenSSH kèm bản vá. Bản 10.5 đã chuyển bước kiểm tra lên trước bước phân tích. Tuy nhiên, Claude tiếp tục phát hiện hai lỗ hổng trong bản vá này: client có thể khai báo ssh-ed25519 để vượt kiểm tra nhưng vẫn gửi khóa ML-DSA, và đường dẫn xác minh chữ ký chứng chỉ CA chưa được kiểm soát đúng mức.
Kết quả cuối cùng, các bước kiểm tra được đặt ngay bên trong bộ phân tích, loại bỏ khoảng một phần năm lượng mã OpenSSH mà client chưa xác thực từng có thể chạm tới. Thay đổi này được phát hành trong phiên bản 10.6.
"OpenSSH là một trong những đoạn mã C được kiểm toán kỹ lưỡng nhất thế giới. Nếu khả năng truy cập không cần thiết vẫn tồn tại ở đó, thì nó có thể tồn tại ở bất cứ đâu."
Công cụ và hướng đi tiếp theo
Anthropic đã đóng gói các kỹ thuật trên thành một Claude skill có thể tái sử dụng, đang được tích hợp vào OSS-Scanner. Công cụ này chạy ba lượt phân tích trên mỗi cơ sở mã, mỗi lượt bắt đầu với ngữ cảnh trống, và xác nhận từng phát hiện bằng dấu vết động của chương trình (dynamic trace). Với các phát hiện liên quan cấu hình mặc định, công cụ thiết kế và triển khai một cổng kiểm soát mới, sau đó chạy bộ kiểm thử của chính dự án để đảm bảo hành vi mặc định không thay đổi.
Với các tổ chức tại Việt Nam đang vận hành hệ thống mã nguồn mở quy mô lớn — từ hạ tầng ngân hàng, viễn thông đến các nền tảng thương mại điện tử — hướng tiếp cận này đáng để theo dõi. Việc thu hẹp bề mặt tấn công không thay thế được quy trình vá lỗi, nhưng nó giúp giảm rủi ro từ toàn bộ những lỗ hổng chưa biết cùng lúc, thay vì chờ từng bản vá.
Anthropic khuyến khích các tổ chức thử dùng Claude để phân tích và giảm bề mặt tấn công của phần mềm mà họ phụ thuộc, đồng thời kỳ vọng đây sẽ là một trong những cách thực tiễn nhất để cải thiện bảo mật của nguồn mã mà cả thế giới đang vận hành.
Công cụ phân tích bề mặt tấn công tự động


