SpamChannel: Gửi email giả mạo từ hơn 2 triệu tên miền và gần như trở thành Satan [PDF]
(media.defcon.org)- Bài thuyết trình SpamChannel tại DEFCON 31 2023 đề cập đến vấn đề giả mạo khi cố gắng gửi email bằng Cloudflare Worker tới hơn 2 triệu tên miền
- Thí nghiệm cốt lõi bắt đầu từ việc xử lý việc gửi email theo cách lập trình thay vì thủ công, và nối nó vào luồng triển khai Worker
- Cloudflare Workers được giới thiệu là môi trường điện toán serverless dựa trên JavaScript, TypeScript và WASM
- Quy trình cơ bản là tạo dự án bằng
npm create cloudflare@latestvà triển khai bằngnpx wrangler deploy - Manh mối để gửi email từ Workers được nối tiếp từ bài viết trên blog Cloudflare về tích hợp MailChannels
Điểm khởi đầu của bài thuyết trình SpamChannel
- SpamChannel là bản PDF do Marcello Salvati(@byt3bl33d3r) trình bày tại DEFCON 31 2023, bàn về chủ đề gửi email giả mạo từ hơn 2 triệu tên miền
- Mục tiêu của bài thuyết trình là triển khai việc gửi email trong các điều kiện sau
- Gửi email theo cách lập trình
- Gửi thông qua Cloudflare Worker
- Có kèm theo tuyên bố miễn trừ trách nhiệm liên quan đến trách nhiệm pháp lý với nội dung “đừng phạm tội”
Cloudflare Workers và đầu mối về việc gửi email
- Cloudflare Workers được giới thiệu là môi trường điện toán serverless, sử dụng JavaScript, TypeScript và WASM
- Luồng sử dụng cơ bản như sau
npm create cloudflare@latest- tạo
worker.js npx wrangler deploy- sau khi triển khai, có thể sử dụng Worker tại địa chỉ dạng
https://<YOUR_WORKER>.<YOUR_SUBDOMAIN>.workers.dev
- Tài liệu bắt đầu được liên kết tới Cloudflare Workers Get started guide
- Đầu mối về việc gửi email có thể xem trong bài viết trên blog Cloudflare Sending email from Workers with MailChannels
1 bình luận
Ý kiến trên Hacker News
Video bài trình bày: https://www.youtube.com/watch?v=NwnT15q_PS8
Hoặc cũng có ở đây. Trên Firefox của tôi định dạng video không chạy được, nhưng VLC thì phát được: https://media.defcon.org/DEF%20CON%2031/DEF%20CON%2031%20vid...
https://www.youtube.com/watch?v=61PIOBp30vA
https://www.youtube.com/watch?v=eODw4t4WaCw
SPF hỏng theo nhiều cách hơn rất nhiều so với những gì bài trình bày này đề cập. Từ góc độ một kỹ sư làm về tăng cường bảo mật email/hỗ trợ khả năng gửi đến hộp thư, lời khuyên luôn là tập trung vào DKIM + DMARC hơn là SPF
Vì lý do hệ thống cũ, SPF vẫn cần thiết, nhưng không nên dựa vào nó để đảm bảo khả năng gửi thư hoặc chống mạo danh
Slide 54 nói DKIM + DMARC không giúp gì cho cuộc tấn công này, nhưng điều đó không hoàn toàn đúng
Chỉ khi bạn đã thiết lập DKIM cho mọi bên gửi được ủy quyền thì mới có thể bật chính sách DMARC
p=rejectmột cách an toàn, và khi đạt đến mức đó bạn có thể bắt đầu loại SPF khỏi các bên gửi bên thứ ba bằng cách dùng modifier trung lập?trong SPFVí dụ
v=spf1 include:relay.mailchannels.net ~allsẽ thànhv=spf1 ?include:relay.mailchannels.net ~allKhi làm vậy, thư đến từ MailChannels sẽ được các bên nhận hỗ trợ DMARC xử lý SPF là trung lập và buộc dùng DKIM, còn các dịch vụ email cũ cũng phải chấp nhận kết quả trung lập
Đây không phải giải pháp hoàn hảo, nhưng dù sao email cũng không bao giờ có thể đáng tin cậy hoặc an toàn 100%
Tôi đã cấu hình SPF chỉ cho phép
$myIP. Muốn gửi spam dưới tên miền của tôi thì trước hết phải hack ISP hoặc nhà đăng ký, và đến mức đó thì họ cũng có thể lấy chứng chỉ TLS cho tên miền của tôiNgay cả ở các tổ chức lớn phải đưa nhiều hệ thống gửi vào danh sách cho phép, tôi cũng không rõ làm sao có thể giả làm một trong các bên gửi SPF hợp lệ trong khi không thể giả mạo bản ghi DKIM
Trường hợp đưa vào danh sách cho phép các dải IP mà bất kỳ ai cũng có thể dùng công khai như trong bài trình bày được gửi lên thì đơn giản là cấu hình ngu ngốc
Để giả mạo toàn bộ quá trình trao đổi thư, cần lưu lượng cỡ terabyte chỉ cho một email vài byte, và nếu STARTTLS bị bắt buộc thì điều đó trở nên bất khả thi
Chúng tôi đang dùng Cloudflare Workers + MailChannels trong production. Thật rợn người
Chúng tôi vốn đã đang chuyển từ CF Workers sang máy chủ thật, giờ có lẽ cũng phải rời MailChannels
Rủi ro bảo mật không đáng đổi lấy sự tiện lợi
_mailchannelstrong DNS thì không thể gửi email qua MailChannels từ Workers“Hiển thị banner cho mọi email không có chữ ký DKIM nhưng đến từ một tên miền đã triển khai DKIM” theo cách tôi hiểu thì hầu như là không thể. Vì không có cách nào biết chắc một tên miền đã triển khai DKIM hay chưa
Về lý thuyết có thể truy vấn DNS tới
"_domainkey.example.com"để xem là NXDOMAIN hay NOERROR. Trường hợp sau thường có nghĩa là có tên miền con, và do đó có thể hàm ý rằng trong DNS có một số khóa DKIMNhưng bạn không thể biết tên selector, cũng không biết khóa đó đang hoạt động hay chỉ định kích hoạt sau này
Một tên miền có thể có nhiều bên gửi đã được xác thực, trong đó một số dùng chữ ký DKIM còn một số thì không
Không phải máy chủ DNS nào cũng tuân thủ chuẩn đúng cách, nên việc phân biệt NXDOMAIN/NOERROR nhìn chung cũng chỉ hoạt động tương đối
Câu được trích có vẻ muốn nói là nên từ chối thư đến từ MailChannels mà không có chữ ký DKIM
“Khách hàng chính của MailChannels là các nhà cung cấp web hosting không sở hữu tên miền của những email họ gửi” là lời biện minh tệ nhất tôi nghe được trong một thời gian qua
Nhà cung cấp web hosting thường không “sở hữu” các tên miền họ hosting, nhưng họ chắc chắn biết mình đang hosting những tên miền nào. Định tuyến tên miền tới tài khoản/thư mục của khách hàng chính là cốt lõi của web hosting
Điều cần làm chỉ là một dạng tích hợp như cPanel để báo cáo danh sách tên miền và gắn mỗi tên miền với một khóa được tạo ngẫu nhiên
Tất cả những việc này có thể và nên được tự động hóa mà không làm phiền người dùng cuối
Sẽ tốt nếu đặc tả DMARC phát triển để có cách chỉ dùng DKIM cho việc xác thực, chứ không phải SPF. Đáng tiếc là những thứ như lời mời Google Calendar hiện vẫn thất bại với DKIM
https://mailarchive.ietf.org/arch/msg/dmarc/PDktxOYkB28k6ukL...
Tôi thấy đây là một ý tưởng rất hay, vì chủ sở hữu tên miền có thể dùng DMARC nhưng vẫn chỉ định rằng “cơ chế thực sự xác thực lưu lượng của tên miền tôi chỉ nên là DKIM”
Trong ngành có nhiều cách lách qua điểm yếu của SPF và DMARC, như macro SPF cho phép điều chỉnh xác thực một cách động dựa trên các tiêu chí chỉ có thể biết tại thời điểm diễn giải SPF
Nhưng không cách lách nào tốt hơn việc nói “với tên miền của tôi, xin chỉ dùng DKIM”
Gần đây tôi đã tự trải qua việc chuẩn bị email cho tên miền của mình, và đặc biệt là cực kỳ bực bội vì ISP quy định rằng “muốn gửi email từ thiết bị của mình thì phải là tài khoản doanh nghiệp”; những chuyện như thế này thật sự khiến tôi nổi giận
Tôi đã cố hết sức để trở thành một thành viên có trách nhiệm của mạng lưới, đào sâu và mổ xẻ đến mức cập nhật nhất hiện nay để cấu hình hệ thống của mình cho đúng
Vậy mà không chỉ có những người như vậy tồn tại, họ còn vận hành hời hợt gần như một open relay, và gần nửa Internet phải trả giá cho điều đó — thật không thể tin nổi
Tóm lại, câu chuyện là họ đã phát hiện các open relay được đưa vào nhiều bản ghi SPF
Bài trình bày DEFCON không chứng minh sự tồn tại của một lỗ hổng khổng lồ, mà cho thấy một sự thật đã tồn tại từ những ngày đầu của email Internet
Nếu không dùng chữ ký thông điệp như S/MIME hay DKIM, không thể xác thực đầy đủ tên miền người gửi
Ngay cả khi có DKIM, tấn công phát lại DKIM vẫn có thể bị lạm dụng trên diện rộng
Tác động của header ARC lên điểm spam khá thú vị. Với tư cách người vận hành máy chủ mail cá nhân, liệu chỉ cần thêm một bộ header ARC vô nghĩa vào email của mình là có thể tăng tỷ lệ gửi đến nơi không?
Những spammer có tổ chức và hiểu biết chắc chắn đang đào bới tất cả những thứ kiểu này, và chắc chắn sẽ dùng chúng để vượt qua bộ lọc
Có vẻ việc này đã được xác nhận từ tháng 5/2022: https://news.ycombinator.com/item?id=30533032
“Chúng tôi có năng lực phát hiện spam và phishing trên diện rộng, và có thể xử lý lạm dụng”
À, ra vậy :D