Tóm tắt nhanh
- Anthropic công bố Claude tìm thấy 493 vấn đề về bề mặt tấn công trong 25 dự án mã nguồn mở, không đồng nghĩa với 493 lỗ hổng có thể khai thác ngay.
- Có 94 tổ hợp cấu hình âm thầm tắt một cơ chế bảo mật; một trường hợp xung đột đã tồn tại trong mã suốt 21 năm.
- Với OpenSSH, các thay đổi được đưa vào bản 10.6 giúp giảm khoảng một phần năm lượng mã mà máy khách chưa xác thực có thể tiếp cận trong bản dựng mặc định.
Anthropic ngày 20/10 công bố nghiên cứu dùng Claude phân tích hơn 5 triệu dòng mã của 25 dự án viết bằng C, C++, Java, PHP và Python, ghi nhận 493 vấn đề liên quan đến phần mã có thể bị tiếp cận và tương tác giữa các tùy chọn cấu hình. Điểm đáng chú ý không nằm ở một danh sách lỗi cần vá, mà ở khoảng cách giữa tính năng người quản trị nghĩ đã tắt với những đoạn mã thực tế vẫn nhận dữ liệu từ bên ngoài.
Với đội vận hành dịch vụ, khoảng cách ấy quan trọng hơn một con số gây chú ý: một máy chủ có thể chưa bị chứng minh là khai thác được, nhưng vẫn đang xử lý những đầu vào mà nó không cần nhận. Chặn đường đi đó từ sớm có thể giảm rủi ro ngay cả khi chưa biết bên trong còn lỗi gì.
Tắt tính năng chưa chắc đã chặn được đường vào mã
Bề mặt tấn công có thể hiểu là những phần hệ thống mà dữ liệu hoặc yêu cầu từ bên ngoài chạm tới được. Một bộ phân tích dữ liệu phức tạp đặt trước bước kiểm tra quyền sẽ phải xử lý cả đầu vào từ người chưa được tin cậy; chuyển kiểm tra lên trước giúp hạn chế người có thể đưa dữ liệu vào bộ phân tích ấy.
Đó là khác biệt giữa giảm bề mặt tấn công và sửa lỗi bên trong hàm xử lý. Cách làm đầu không chứng minh hàm hết lỗi, cũng không thay thế cập nhật bảo mật, nhưng có thể khiến lỗi chưa biết khó tiếp cận hơn trong một cấu hình triển khai cụ thể.
Theo số liệu Anthropic công bố, 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 tính năng hoặc cơ chế kiểm soát bảo mật. Các dự án được chia thành nhóm phục vụ công khai, nhóm yêu cầu xác thực và nhóm phục vụ môi trường riêng của đơn vị vận hành. Cách chia này cần thiết vì dịch vụ công khai vốn phải nhận dữ liệu từ bên ngoài, còn dịch vụ yêu cầu đăng nhập nên hạn chế công việc diễn ra trước khi xác minh người dùng.
Trong nghiên cứu, toàn bộ 11 dự án thuộc nhóm yêu cầu xác thực đều có mã bị tiếp cận ngoài dự định. Anthropic ghi nhận 93 bề mặt tiền xác thực không cần thiết ở cấu hình mặc định, 37 vị trí chạy mã hoặc ghi trạng thái trước xác thực và 61 tổ hợp cấu hình làm suy yếu một lớp kiểm soát tiền xác thực. Nhóm nghiên cứu nói rõ các phát hiện thuộc nhóm này không tự tạo thành khả năng khai thác ngay lập tức; chúng làm phạm vi tiếp xúc lớn hơn mức cần thiết.
Vì vậy, diễn giải kết quả thành gần 500 CVE nghiêm trọng sẽ làm sai bản chất nghiên cứu. Các con số này mô tả những đường vào và hành vi cấu hình cần thu hẹp hoặc kiểm tra lại, chứ không phải một bảng đếm máy chủ đã bị xâm nhập.
OpenSSH cho thấy kiểm tra quyền phải đặt đúng chỗ
Kiểm tra cấu hình sau khi phân tích đầu vào là quá muộn nếu mục tiêu là ngăn mã phức tạp nhận dữ liệu không đáng tin cậy. Đây là điểm kỹ thuật đáng chú ý trong trường hợp OpenSSH: tính năng có thể không được bật để sử dụng, nhưng mã thực hiện tính năng ấy vẫn chạy trước lúc máy chủ quyết định có chấp nhận nó hay không.
Anthropic cho biết ở OpenSSH 10.4, Claude lần theo các đường nhận dữ liệu của tiến trình sshd và tìm thấy khoảng 4.500 dòng mã thử nghiệm cho thuật toán chữ ký hậu lượng tử ML-DSA-44 mà máy khách chưa xác thực có thể tiếp cận trong cấu hình mặc định. Lượng mã đó tương đương khoảng 16% mã tiền xác thực riêng của OpenSSH trong sshd mặc định. Đường vào vẫn tồn tại ngay cả khi người quản trị đã loại thuật toán này khỏi cấu hình được phép.
Nguyên nhân nằm ở thứ tự xử lý: sshd phân tích loại khóa do máy khách gửi đến, và với chứng chỉ còn kiểm tra chữ ký CA được nhúng bên trong, rồi mới xem loại khóa ấy có được cho phép hay không. Phần mã xử lý mật mã vì thế đã nhận dữ liệu trước khi quyết định cấu hình có tác dụng.
Bản 10.5 đưa kiểm tra lên trước bước phân tích nhưng chưa chặn hết đường vòng. Theo mô tả kỹ thuật của Anthropic, máy khách có thể khai báo thuật toán ssh-ed25519 để vượt kiểm tra, trong khi loại khóa mã hóa bên trong dữ liệu lại là ML-DSA. Một đường khác đi qua chứng chỉ: mã phân tích khóa công khai của CA và xác minh chữ ký vẫn có thể chạy trước khi tham chiếu cấu hình cho phép.
Các thay đổi được đưa vào OpenSSH 10.6 đặt kiểm tra ngay trong bộ phân tích. Loại khóa thực sự được mã hóa và thuật toán chữ ký CA phải được đối chiếu với danh sách cho phép trước khi thực hiện các bước xử lý tương ứng. Anthropic cho biết cách sửa này loại khỏi phạm vi tiếp cận của máy khách chưa xác thực khoảng một phần năm mã OpenSSH vốn có thể chạm tới trong bản dựng mặc định; phần lớn là mã ML-DSA mới.
Con số đó không có nghĩa OpenSSH đã xóa một phần năm toàn bộ mã nguồn, cũng không có nghĩa ML-DSA đã bị chứng minh là có lỗ hổng. Thay đổi nằm ở người nào được phép đưa dữ liệu vào phần mã ấy và vào thời điểm nào.
Đội vận hành nên kiểm tra hành vi, không chỉ đọc tệp cấu hình
Một tùy chọn xuất hiện đúng trong tệp cấu hình chưa đủ để kết luận cơ chế bảo vệ đang hoạt động. Bài học thực dụng cho đội phát triển và vận hành tại Việt Nam là kiểm tra kết quả từ phía máy khách không có quyền, nhất là khi ghép các tùy chọn liên quan đến xác thực hoặc phân giải tên miền.
Trong 162 tổ hợp cấu hình nhạy cảm được chấp nhận mà không có lỗi, cảnh báo hay tài liệu giải thích tương tác, Anthropic ghi nhận 94 trường hợp âm thầm tắt một cơ chế bảo mật. Có 68 trường hợp còn lại thể hiện hành vi không nhất quán, chẳng hạn đường đăng nhập vẫn tiếp cận được dù cấu hình nói đã tắt, hoặc thứ tự khai báo quyết định tùy chọn nào thắng.
Một mẫu lỗi xuất hiện ở bốn dự án độc lập cho thấy vì sao kiểm thử phải đi xa hơn việc dịch vụ khởi động thành công. Người quản trị đặt quy tắc chặn bằng tên máy hoặc mẫu ký tự đại diện, nhưng một tùy chọn khác lại tắt tra cứu DNS ngược. Máy chủ chỉ biết địa chỉ IP nên đem chuỗi địa chỉ ấy so với mẫu tên máy; quy tắc chặn không khớp, dẫn đến hành vi cho qua thay vì từ chối.
Ở một trường hợp khác, tùy chọn yêu cầu chứng chỉ để chứng minh danh tính bị một tùy chọn vốn chỉ định trì hoãn kiểm tra vô hiệu hóa hoàn toàn. Anthropic cho biết tổ hợp xung đột này đã tồn tại trong mã 21 năm. Báo cáo không nêu tên dự án trong phần mô tả đó, nên không có cơ sở gán mốc 21 năm cho OpenSSH.
Từ những cơ chế trên, phép thử hữu ích là thử kết nối khi thiếu chứng chỉ, khi thuật toán bị cấm hoặc khi quy tắc chặn phải có hiệu lực, rồi đối chiếu hành vi thực tế với ý định cấu hình. Đây là kiểm thử từ chối: hệ thống phải chứng minh rằng yêu cầu không hợp lệ bị chặn, thay vì chỉ chứng minh người dùng hợp lệ vẫn đăng nhập được.
AI có ích ở khâu lần theo đường dữ liệu và tìm tương tác khó thấy, nhưng đầu ra vẫn cần kiểm chứng. Phương pháp Anthropic mô tả yêu cầu xác nhận phát hiện bằng dấu vết thực thi; với thay đổi ở cấu hình mặc định, bản sửa phải giữ kết quả bộ kiểm thử của dự án và kiểm thử hồi quy bên ngoài giống bản gốc. Những thay đổi ảnh hưởng cấu hình không mặc định được để con người quyết định.
Anthropic đang làm việc để tích hợp phương pháp thành một skill dùng lại trong OSS-Scanner. Điều đội vận hành có thể áp dụng trước là đổi tiêu chí nghiệm thu: một tính năng đã tắt phải ngừng nhận dữ liệu ở đường vào tương ứng, chứ không chỉ biến mất khỏi danh sách chức năng được phép sử dụng.








