CNAME cloaking dùng một bản ghi DNS khiến trình theo dõi trông giống bên thứ nhất, né được bộ chặn cookie chỉ dựa vào domain trên thanh địa chỉ.
Mọi bộ chặn cookie bên thứ ba đều dựa trên một giả định chung: chỉ cần nhìn vào domain là phân biệt được đâu là bên thứ ba, đâu là bên thứ nhất. CNAME cloaking phá vỡ giả định đó ngay ở tầng DNS — trước cả khi trình duyệt có cơ hội kiểm tra bất kỳ cookie nào. Chủ website trỏ một subdomain của mình, chẳng hạn metrics.example.com, tới hạ tầng của một công ty theo dõi bằng một bản ghi DNS CNAME, và từ đó mọi yêu cầu đến subdomain này đều được phân giải thẳng đến bên theo dõi — nhưng đối với trình duyệt và bất kỳ chính sách cookie nào, nó vẫn trông y hệt example.com.
Điểm chính
- Một bản ghi CNAME cho phép chủ website đặt bí danh (alias) cho một subdomain của mình trỏ tới domain của bên theo dõi bên thứ ba, khiến các yêu cầu đến subdomain đó được bên theo dõi xử lý, trong khi trình duyệt vẫn thấy tên máy chủ (hostname) của chính website.
- Chiêu này đánh bại việc chặn cookie bên thứ ba ngay từ thiết kế: cookie do "subdomain" đặt, theo logic same-site của trình duyệt, chính là cookie bên thứ nhất, vì hostname bạn nhìn thấy chưa từng thay đổi.
- Một nghiên cứu đo lường đã công bố phát hiện hơn 1.700 website ngụy trang theo cách này, che giấu tổng cộng hơn 50 trình theo dõi khác nhau — cho thấy đây là kỹ thuật đang được triển khai thực tế, không phải chỉ trên lý thuyết.
- Phản ứng của các trình duyệt không giống nhau: Intelligent Tracking Prevention của Safari giới hạn thời hạn của cookie được đặt trong một phản hồi bị phát hiện là CNAME-cloaked xuống còn 7 ngày; Brave tự phân giải chuỗi CNAME rồi đối chiếu đích đến thật sự với danh sách lọc của mình; Enhanced Tracking Protection tích hợp sẵn của Firefox không tự phân giải CNAME, nên một trình theo dõi bị ngụy trang có thể lọt qua nếu không có tiện ích mở rộng như uBlock Origin.
- Đây là "họ hàng" ở tầng DNS của bounce tracking: cả hai đều khai thác khoảng cách giữa "domain này trông giống ai" và "domain này thực sự do ai kiểm soát", chỉ khác ở chỗ xảy ra tại tầng nào trong stack kỹ thuật.
CNAME Cloaking Thực Chất Là Gì
DNS cho phép bất kỳ chủ domain nào tạo một bản ghi CNAME (canonical name), nói rằng "subdomain này thực ra chỉ là một tên gọi khác của domain kia". Đây vốn là một phần hạ tầng internet bình thường, làm việc âm thầm mỗi ngày — các CDN, nhà cung cấp email và nền tảng SaaS liên tục dùng CNAME để subdomain của khách hàng có thể trỏ thẳng vào hạ tầng dùng chung mà khách hàng không cần tự vận hành máy chủ.
CNAME cloaking tận dụng chính cơ chế đó để phục vụ mục đích theo dõi. Một nhà cung cấp dịch vụ theo dõi sẽ yêu cầu khách hàng của mình (chủ website) tạo một subdomain — kiểu như stats.example.com hoặc t.example.com — rồi trỏ bản ghi CNAME của nó về domain của chính bên theo dõi. Kể từ lúc đó:
- Trình duyệt của bạn gửi yêu cầu tới
stats.example.com. - Việc phân giải DNS âm thầm chuyển hướng lượt tra cứu đó đến máy chủ của bên theo dõi.
- Phản hồi — kể cả bất kỳ header
Set-Cookienào — đến từ bên theo dõi, nhưng đối với thanh địa chỉ và cơ chế kiểm tra same-origin của trình duyệt, bạn vẫn đang giao tiếp vớiexample.comsuốt từ đầu.
Bên theo dõi không bao giờ xuất hiện như một domain bên thứ ba riêng biệt ở bất kỳ chỗ nào trình duyệt có thể nhìn thấy. Nó ngụy trang thành một subdomain của chính website bạn đang thực sự truy cập, và nhờ đó thừa hưởng luôn sự tin cậy bên thứ nhất của website đó.
Chuỗi Phân Giải DNS Đằng Sau Chiêu Này
Cơ chế này chỉ hoạt động được nhờ một đặc tính rất bình thường của việc phân giải DNS: một bản ghi CNAME có thể trỏ tới một tên khác, tên đó lại tiếp tục được phân giải bình thường, còn trình duyệt thì từ đầu đến cuối chỉ quan tâm đến hostname gốc mà nó đã yêu cầu. Muốn hiểu cơ chế phân giải này hoạt động ra sao và tại sao tự nó đã là một ranh giới quyền riêng tư quan trọng, xem bài viết của chúng tôi về rò rỉ DNS — CNAME cloaking là một vấn đề khác, nhưng nó khai thác đúng bước phân giải đó.
Bạn có thể tự mình lần theo chuỗi này cho bất kỳ hostname nào:
# Lần theo toàn bộ chuỗi CNAME của một hostname
dig stats.example.com +trace
# Cách viết gọn hơn: chỉ hiển thị tên canonical
dig CNAME stats.example.com +short
Nếu một subdomain trông như dùng cho marketing hay thống kê lại phân giải qua CNAME tới một domain bạn không nhận ra — thuộc về một hãng ad-tech hay phân tích thay vì chính website đó — thì đó chính là kiểu mẫu ngụy trang. Các nhà nghiên cứu bảo mật đã ghi nhận cụ thể điều này: một nghiên cứu đo lường được bình duyệt (peer-reviewed) phát hiện hơn 1.700 website dùng CNAME cloaking để dẫn lưu lượng tới hơn 50 công ty theo dõi khác nhau, xác nhận đây là một kỹ thuật đang được sử dụng thực sự chứ không phải trường hợp hiếm gặp.
Vì Sao Điều Này Đánh Bại Việc Chặn Cookie Bên Thứ Ba
Việc chặn cookie bên thứ ba hoạt động bằng cách so sánh domain hiển thị trên thanh địa chỉ trình duyệt với domain đang cố đặt hoặc đọc cookie — khác nhau thì bị chặn. CNAME cloaking không bao giờ tạo ra sự khác biệt đó. Hostname mà trình duyệt của bạn phân giải và kết nối tới, đúng nghĩa đen, là một subdomain của website bên thứ nhất, bất kể thực tế máy chủ của công ty nào đang trả lời yêu cầu. Cookie được đặt trong phản hồi đó, theo mọi quy tắc same-site mà trình duyệt kiểm tra, là cookie bên thứ nhất.
Đây chính là lỗ hổng cấu trúc mà bounce tracking cũng khai thác, chỉ là đi theo một hướng khác: bounce tracking dùng redirect để tạm thời biến domain của chính bên theo dõi thành bên thứ nhất, còn CNAME cloaking khiến bên theo dõi trả lời dưới danh nghĩa một subdomain của chính website. Cả hai kỹ thuật đều không cần đến cookie bên thứ ba vào bất kỳ thời điểm nào, nên một quy tắc được thiết kế riêng để chặn cookie bên thứ ba hoàn toàn không có gì để bám vào mà chặn.
Phản Ứng Từ Trình Duyệt Và Các Chuẩn
Vì việc lách luật này xảy ra ở tầng DNS, để khắc phục, trình duyệt buộc phải thực sự phân giải chuỗi này và kiểm tra xem ai đang thật sự trả lời — chứ không chỉ đọc hostname mà nó được cung cấp.
Intelligent Tracking Prevention (ITP) của Safari là biện pháp phòng vệ chủ đạo đầu tiên. Như bài viết CNAME Cloaking and Bounce Tracking Defense của chính WebKit giải thích, ITP phát hiện khi một bên thứ ba đang bị ngụy trang qua CNAME, rồi giới hạn thời hạn của bất kỳ cookie nào được đặt trong phản hồi đó xuống còn 7 ngày — đúng bằng mức giới hạn ITP vốn đã áp dụng cho cookie được tạo bằng JavaScript, khép lại đúng lỗ hổng mà các trình theo dõi từng dùng CNAME để lách qua.
Brave đi xa hơn, tự phân giải chuỗi này trước khi quyết định có cho phép yêu cầu hay không. Bài viết Fighting CNAME Trickery của Brave mô tả việc đối chiếu hai URL với danh sách lọc của mình: hostname gốc được yêu cầu, và cùng yêu cầu đó nhưng đã thay bằng domain canonical mà CNAME phân giải ra. Nếu đích đến thật sự trùng khớp với một trình theo dõi đã biết, Brave sẽ chặn thẳng yêu cầu đó — nó thậm chí không cần đợi đến lúc cookie được đặt.
Ngược lại, Enhanced Tracking Protection của Firefox không tự phân giải chuỗi CNAME; cơ chế chặn của nó dựa vào một danh sách domain theo dõi được biên soạn thủ công, đối chiếu với hostname mà bạn nhìn thấy được — còn một subdomain bị ngụy trang thì vốn không xuất hiện trong danh sách đó. Trên thực tế, người dùng Firefox chỉ có được sự bảo vệ chống CNAME-cloaking thông qua tiện ích mở rộng — chẳng hạn uBlock Origin có thể tự phân giải chuỗi này rồi lọc theo đích đến thật sự — chứ không phải từ cơ chế bảo vệ tích hợp sẵn của trình duyệt. Xem tổng quan của MDN về bảo vệ chống theo dõi trên Firefox để biết cách tiếp cận dựa trên danh sách này hoạt động ra sao.
CNAME Cloaking Khác Gì Với Các Kỹ Thuật Liên Quan
| Kỹ thuật | Thứ được che giấu | Chiêu trò xảy ra ở đâu |
|---|---|---|
| CNAME cloaking | Domain thật của bên theo dõi | Việc phân giải DNS của một subdomain bên thứ nhất |
| Bounce/redirect tracking | Trạng thái bên thứ nhất thoáng qua trên chính domain của bên theo dõi | Một redirect nhanh ngay trong trình duyệt, đi qua bên theo dõi |
| Rò rỉ DNS (lỗi quyền riêng tư, không phải theo dõi) | Trình phân giải bạn chọn, không phải danh tính của bên theo dõi | Cấu hình VPN/DNS sai khiến lượt tra cứu lộ ra cho ISP của bạn |
Dòng cuối đáng được nói rõ: rò rỉ DNS là một lỗi quyền riêng tư khiến hành vi duyệt web của chính bạn lộ ra cho ISP; CNAME cloaking lại đi theo hướng ngược lại — một website cố tình dùng DNS để giấu danh tính của một bên theo dõi khỏi bạn. Cả hai đều nằm ở tầng DNS, nhưng ngoài điểm đó ra thì không còn gì giống nhau. Nhìn rộng hơn, cùng một nguyên tắc — không tín hiệu kỹ thuật đơn lẻ nào kể hết toàn bộ câu chuyện, nên hệ thống phải kết hợp nhiều tín hiệu — cũng xuất hiện ở phía mạng: xem cách website phát hiện VPN và proxy để thấy các hệ thống phát hiện ở đó cũng phải gộp nhiều tín hiệu yếu lại với nhau, thay vì tin tưởng tuyệt đối vào một hostname hay IP duy nhất.
Câu hỏi thường gặp
CNAME cloaking có bất hợp pháp hay vi phạm chính sách trình duyệt không?
Không có luật nào cấm điều này, và bản thân DNS cũng không có khái niệm "ngụy trang" — bản ghi CNAME chỉ là hạ tầng bình thường. Đây là vấn đề về chính sách và phát hiện của trình duyệt, không phải vi phạm giao thức: cả Safari lẫn Brave hiện đều xử lý cookie bị CNAME-cloak khác đi một khi phát hiện được, mà không cần thay đổi gì ở chuẩn DNS.
Chặn cookie bên thứ ba có ngăn được CNAME cloaking không?
Không. Đó chính là toàn bộ mục đích của kỹ thuật này — cookie của trình theo dõi bị ngụy trang, xét theo mọi quy tắc mà logic same-site của trình duyệt kiểm tra, đều là cookie bên thứ nhất, nên việc chặn cookie bên thứ ba ngay từ đầu không hề bị kích hoạt. Muốn chặn được nó, cần thực sự phân giải chuỗi CNAME và kiểm tra xem ai thật sự kiểm soát đích đến — đúng là điều Safari và Brave đang làm.
Làm sao tôi biết website mình đang truy cập có dùng CNAME cloaking không?
Xem những subdomain nào xuất hiện trong các yêu cầu mạng của trang, rồi phân giải chuỗi CNAME của chúng bằng dig CNAME <hostname> +short. Nếu một subdomain trông như phục vụ marketing hay phân tích lại phân giải ra một domain thuộc về hãng ad-tech hay phân tích đã biết, thay vì chính website đó, thì đó là kiểu mẫu này. Các tiện ích mở rộng có khả năng tự phân giải DNS, như uBlock Origin, sẽ tự động thực hiện kiểm tra này cho mọi yêu cầu.
VPN hay DNS over HTTPS có bảo vệ được trước CNAME cloaking không?
Không trực tiếp. Việc mã hóa hay đổi đường đi cho các lượt tra cứu DNS của chính bạn chỉ bảo vệ ai nhìn thấy lượt tra cứu của bạn — xem hướng dẫn của chúng tôi về ngăn rò rỉ DNS — nhưng điều đó không thay đổi được những gì chủ website đã cấu hình cho subdomain của chính họ. CNAME cloaking do phía website quyết định, không phải do đường truyền mạng của bạn, nên việc phát hiện phải do trình duyệt (hoặc tiện ích mở rộng) kiểm tra chính chuỗi phân giải, chứ không phải bằng cách bảo mật DNS của riêng bạn. Dù vậy, tình trạng DNS ở phía bạn vẫn đáng kiểm tra riêng — công cụ kiểm tra rò rỉ VPN và DNS của chúng tôi cho biết VPN của bạn có thực sự giữ kín các lượt tra cứu DNS hay không, tức là phần mà bạn có thể kiểm soát.
Kết luận
CNAME cloaking có hiệu quả vì DNS và chính sách cookie vận hành ở hai tầng vốn không được thiết kế để kiểm tra chéo lẫn nhau: trình duyệt tin vào hostname mà chính nó phân giải, còn quy tắc cookie lại tin vào cách trình duyệt hiểu thế nào là "bên thứ nhất". Việc dẫn phản hồi của bên theo dõi qua một subdomain bí danh giúp vượt qua cả hai lớp kiểm tra, dù về bản chất chẳng có gì thực sự là bên thứ nhất ở đây cả. Safari và Brave đã khép lại lỗ hổng này bằng cách phân giải ra đích đến thật sự trước khi ra quyết định, còn Firefox thì vẫn dựa vào tiện ích mở rộng để làm điều tương tự. Cũng như mọi kỹ thuật khác trên trang này, điều thành thật cần nói ra là: không một quy tắc đơn lẻ nào — chặn cookie bên thứ ba, mã hóa DNS của riêng bạn, hay chỉ tin vào một hostname — có thể chặn hết mọi cách một trình theo dõi có thể tự ngụy trang.
Đọc thêm:

