Go từ chối các chuỗi chứng chỉ chứa tám SPKI không còn được tin cậy
Nhóm phát triển Go đã vá lỗ hổng CVE-2026-111943 trong gói crypto/x509: hàm Verify sẽ tự động loại bỏ các chuỗi chứng chỉ đi qua tám chứng chỉ trung gian (intermediate CA) bị mất tín nhiệm. Bản vá được phát hành khẩn cấp cho Go 1.26 và 1.27, khuyến nghị lập trình viên nâng cấp ngay.

Nhóm phát triển ngôn ngữ Go vừa công bố bản vá bảo mật cho gói crypto/x509, nhằm xử lý lỗ hổng CVE-2026-111943. Theo đó, hàm Verify sẽ tự động loại bỏ những chuỗi chứng chỉ có chứa tám chứng chỉ trung gian (intermediate certificate) nằm trong danh sách mất tín nhiệm, và không trả chúng về cho phía gọi.
Đây là thay đổi quan trọng đối với bất kỳ ứng dụng Go nào thực hiện xác thực TLS hoặc kiểm tra chứng chỉ số.
Chuyện gì đã xảy ra?
Theo nội dung issue #82345 trên GitHub, nhóm Go quyết định chặn tin cậy một nhóm nhỏ chứng chỉ trung gian vì những lo ngại bảo mật cụ thể liên quan đến cách các chứng chỉ này được vận hành.
Cụ thể, cơ chế mới tác động trực tiếp đến hàm Verify — hàm chịu trách nhiệm kiểm tra tính hợp lệ của chuỗi chứng chỉ:
- Nếu một chuỗi chứng chỉ đi qua bất kỳ chứng chỉ trung gian nào trong danh sách bị từ chối, chuỗi đó sẽ bị loại bỏ hoàn toàn.
- Phía gọi sẽ không nhận được kết quả xác thực thành công cho những chuỗi như vậy.
- Vấn đề được theo dõi với mã CVE-2026-111943 và thuộc nhóm xử lý khẩn cấp (URGENT track).
Issue này được đánh dấu là release-blocker — tức là yếu tố chặn phát hành — và được xếp vào cột mốc Go 1.28.
Bản vá đã có cho Go 1.26 và Go 1.27
Không chờ đến Go 1.28, nhóm duy trì đã mở các issue backport cho hai nhánh ổn định đang được hỗ trợ:
- #82348 — dành cho Go 1.26
- #82349 — dành cho Go 1.27
Các commit tương ứng đã được đưa vào nhánh phát hành, với thông điệp mô tả ngắn gọn: "distrust a handful of intermediates" (không còn tin cậy một số chứng chỉ trung gian). Đến ngày 20/10/2026, issue được đóng ở trạng thái hoàn thành.
Nhóm Go khuyến nghị người dùng nâng cấp lên bản phát hành mới ngay lập tức.
Ý nghĩa với lập trình viên Việt Nam
Với các đội phát triển tại Việt Nam đang vận hành dịch vụ backend, API gateway, hệ thống thanh toán hay các ứng dụng dùng TLS bằng Go, đây là bản vá nên áp dụng ngay thay vì chờ chu kỳ nâng cấp thông thường.
Một số lưu ý thực tế:
- Kiểm tra phiên bản Go trong
go.modvà pipeline CI/CD để biết dự án đang dùng 1.26 hay 1.27. - Nâng cấp lên bản patch mới nhất của nhánh tương ứng để nhận bản vá.
- Kiểm tra lại các luồng gọi HTTPS nếu hệ thống từng gặp lỗi xác thực chứng chỉ bất thường sau khi nâng cấp — có thể một chứng chỉ trung gian cũ đã bị đưa vào danh sách từ chối.
- Không có thay đổi API công khai, nên về lý thuyết việc nâng cấp không gây lỗi biên dịch, nhưng hành vi xác thực chứng chỉ sẽ chặt chẽ hơn.
Bối cảnh rộng hơn
Việc một ngôn ngữ lập trình chủ động "đen danh sách" (distrust) chứng chỉ trung gian ngay trong thư viện chuẩn cho thấy mô hình tin cậy của hệ sinh thái chứng chỉ số ngày càng phụ thuộc vào phản ứng nhanh của các nhà cung cấp nền tảng. Khi một CA bị nghi ngờ về vận hành, không chỉ trình duyệt hay hệ điều hành phải cập nhật — mà cả runtime và thư viện lập trình cũng phải vào cuộc.
Với Go, gói crypto/x509 là lớp nền của gần như toàn bộ kết nối mạng an toàn trong hệ sinh thái, từ net/http đến database/sql qua TLS. Một thay đổi ở đây có độ lan tỏa rất lớn, và đó cũng là lý do bản vá được xử lý theo quy trình khẩn cấp.
