When DNSSEC goes wrong: how we responded to the .de TLD outage

Bài tóm tắt Cloudflare 2026 3. Quy mô lớn Độ khó: Trung bình

Cloudflare · 2026 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc

Sự cố nằm ở bên ngoài (DENIC, nhà quản lý .de). Bài kể cách một resolver lớn giảm thiệt hại. Phần mật mã của DNSSEC chỉ tóm tắt ngắn.

Bối cảnh

  • DNSSEC: mỗi bản ghi có chữ ký (RRSIG); chuỗi tin cậy đi từ root xuống TLD xuống domain. Gãy ở một mắt xích thì mọi thứ bên dưới đều lỗi xác thực. Resolver bắt buộc phải trả SERVFAIL.
  • 5/5/2026, khoảng 19:30 UTC, DENIC xoay khoá định kỳ và phát hành chữ ký sai cho zone .de, một trong những TLD được truy vấn nhiều nhất.

Diễn biến

  • SERVFAIL của 1.1.1.1 cho .de tăng vọt rồi tăng dần trong ba giờ khi bản ghi cache lần lượt hết TTL.
  • Lượng query tăng mạnh vì client retry 3 lần trở lên. Tỉ lệ SERVFAIL vì thế trông tệ hơn tác động thật.
  • Tỉ lệ NOERROR giữ khá ổn nhờ serve stale (RFC 8767): upstream lỗi thì resolver tiếp tục trả bản ghi đã hết hạn trong cache thay vì báo lỗi.

Giảm thiểu

  • 1.1.1.1 chưa có cơ chế Negative Trust Anchor (NTA, RFC 7646: coi một zone như chưa ký). Nhóm dùng cơ chế override rule có sẵn để đánh dấu .de là zone không an toàn, tức bỏ xác thực DNSSEC cho .de. Áp lúc 22:17 UTC, kết thúc tác động cho 1.1.1.1.
  • Đánh đổi có chủ ý: trong thời gian đó .de mất bảo vệ chống giả mạo. Theo Cloudflare, chấp nhận được vì lỗi diện rộng, đã công khai và như nhau với mọi resolver: "không có user nào muốn SERVFAIL hơn một câu trả lời chưa xác thực".
  • Áp NTA tương tự cho resolver nội bộ dùng để phân giải origin của khách CDN.
  • Resolver khắp Internet tự áp NTA trong khoảng một giờ, phối hợp qua kênh DNS-OARC.
  • Phát hiện bug riêng: 1.1.1.1 trả mã lỗi EDE 22 (No Reachable Authority) thay vì EDE 6 (DNSSEC Bogus), che mất nguyên nhân thật. Sẽ sửa.

Bài học cho SWE

  • Phụ thuộc theo cấp bậc (TLD) là điểm lỗi chung mà không kiến trúc phía dưới nào tránh được; chỉ giảm được tác động (Độ tin cậy và multi-region).
  • Serve stale là một chế độ suy giảm có chủ đích: dữ liệu cũ tốt hơn lỗi, nhưng chỉ khi biết rõ đang trả dữ liệu cũ (Cache và invalidation).
  • Cần sẵn một công tắc tắt kiểm tra an toàn có phạm vi hẹp cho lúc chính kiểm tra đó gây sự cố, kèm tiêu chí rõ khi nào được bật.
  • Mã lỗi sai làm chậm chẩn đoán cho mọi người ở hạ nguồn (Sự cố và postmortem).

Liên quan