Dự án mã nguồn mở của tôi bị lợi dụng để lừa đảo 14.000 người

Phần mềm29 tháng 5, 2026·7 phút đọc

Tác giả của Kaneo, một công cụ quản lý dự án mã nguồn mở, đã phát hiện phiên bản đám mây của mình bị lợi dụng để gửi 14.000 email lừa đảo. Kẻ tấn công không khai thác lỗ hổng mã nguồn mà chỉ sử dụng các tính năng hợp pháp, làm nổi bật sự khác biệt về mô hình mối đe dọa giữa tự lưu trữ và SaaS.

Dự án mã nguồn mở của tôi bị lợi dụng để lừa đảo 14.000 người

Dự án mã nguồn mở của tôi bị lợi dụng để lừa đảo 14.000 người

Sáng thứ Năm, tôi nhận được email từ Resend thông báo rằng hạn ngạch gửi email của cloud.kaneo.app đã bị sử dụng hết, dù tôi đã nhiều ngày không gửi bất cứ thứ gì. Tôi là người điều hành Kaneo, một công cụ quản lý dự án mã nguồn mở với triết lý đơn giản: những thứ bạn cần và không có gì thừa thãi. Phiên bản đám mây (cloud) tồn tại để mọi người có thể dùng thử mà không cần cài đặt Postgres, về cơ bản nó là phần mềm giống hệt những gì người dùng tự lưu trữ (self-hosted) sử dụng.

Cho đến cuối tuần trước, phiên bản này gần như chỉ được các nhà phát triển dùng để đánh giá cho nhóm của họ. Nhưng cuối tuần đó, một người khác đã tìm thấy nó.

Những gì tôi phát hiện

Tôi đăng nhập vào server và chạy một truy vấn. Các workspace mới trông giống như sau:

🔒 Paul Brown từ BANKING OPERATION mời bạn tham gia 3.4090_BTC receipt...

Có tổng cộng 949 workspace như vậy. Tất cả đều được tạo trong khung thời gian 3 giờ vào ngày 28 tháng 5. Mỗi tài khoản đến từ một nhà cung cấp email tạm khác nhau: yomail.info, dropmail.me, spymail.one. Mỗi tài khoản đã tạo một workspace có tên là dòng tiêu đề hoàn chỉnh của một email lừa đảo, sau đó gửi khoảng 100 lời mời từ workspace đó cho danh sách những người lạ. Tổng cộng có 14.520 lời mời được gửi, chủ yếu là trong lúc tôi đang ngủ.

Email lời mời được gửi từ tên miền Resend đã được xác minh của tôi. Tiêu đề là tên của workspace. Nội dung là một lời mời lịch sự: " mời bạn tham gia trên Kaneo. Nhấn vào đây để chấp nhận." Nút "nhấn vào đây" trỏ đến trang web thực của tôi, khiến email trông rất thật, và tên workspace chứa nội dung lừa đảo cùng một liên kết đến craftum.io với hậu tố theo dõi.

Kẻ tấn công rất kiên nhẫn. Rõ ràng họ đã kiểm thử. Tên các workspace không ngẫu nhiên mà tuân theo một khuôn mẫu, với các biến đổi xoay vòng giữa tên ngân hàng, số tiền crypto và tên người trình bày. Họ đã chuẩn bị sẵn danh sách người nhận, có lẽ là mua được. Họ chọn thời điểm là 4 giờ sáng UTC vào thứ Năm. Họ có khoảng một giờ rưỡi gửi thư thoải mái trước khi cơ chế phát hiện tốc độ của Resend kích hoạt và chặn họ.

Khi tôi tỉnh dậy, mọi chuyện đã kết thúc. Cảnh báo hạn ngạch từ Resend chỉ là một sự trùng hợp ngẫu nhiên. Cuộc tấn công đã kết thúc từ nhiều giờ trước đó.

Điều khiến tôi băn khoăn

Điều ám ảnh tôi không phải là quy mô, dù việc 14.000 người nhận được email lừa đảo từ một tên miền tôi sở hữu là rất tệ. Đó là sự bình thường của nó.

Không có cuộc tấn công khai thác (exploit). Không có công bố lỗ hổng. Không có CVE nào để tôi viết. Kẻ tấn công chỉ đơn giản là điền vào biểu mẫu đăng ký của tôi 942 lần, tạo 942 workspace, gửi 942 lượt mời mỗi lượt khoảng 100 cái, rồi dừng lại. Họ sử dụng công cụ của tôi đúng như thiết kế. Chỉ là thiết kế đó đủ tệ để công cụ trở nên hữu ích cho việc lừa đảo.

Mọi rào chắn mà tôi thêm sau này (captcha, chặn email tạm, giới hạn tốc độ, bộ lọc tên workspace) đều là những điều một người có tư duy bảo mật sẽ yêu cầu nếu họ nhìn vào quy trình đăng ký của tôi với tâm thế của một hoạt động lừa đảo. Tôi đã không làm vậy. Tôi nhìn vào nó với tâm thế của một người đang dùng thử Kaneo, và xây dựng cho người đó.

Kẻ tấn công không đột nhập vào bất cứ thứ gì. Họ chỉ nhận ra một điều tôi đã bỏ sót: Tôi có một tên miền gửi email đã được xác minh gắn với đăng ký mở, không cần xác minh, và đó là một "nguyên thủy" hữu ích nếu bạn không quan tâm mình gửi gì.

Công việc dọn dẹp

Tôi đầu tiên thu hồi các khóa Resend, sau đó xuất các tài khoản bot, workspace của chúng và tất cả 14.520 lời mời ra file CSV để phòng trường hợp Resend cần bằng chứng. Công việc hủy diệt này chỉ là một giao dịch Postgres. 942 người dùng bị cấm, 947 workspace bị xóa, 14.533 lời mời bị xóa theo (cascade) qua khóa ngoại. Tôi chạy nó với ROLLBACK trước để kiểm tra số lượng, sau đó là COMMIT. Tổng cộng mất khoảng một giờ.

Việc tăng cường bảo mật sau đó (captcha, giới hạn tốc độ, trình chặn email dùng một lần, bộ lọc tên workspace, không cho phép gửi lời mời từ tài khoản khách) mất một ngày. Nhưng công việc dễ dàng không phải là điều đọng lại.

Điều tôi vẫn còn suy ngẫm

Các dự án mã nguồn mở có phiên bản đám mây nằm ở một vị thế kỳ lạ. Mục đích của dự án là người lạ có thể đọc mã nguồn, fork nó, tự chạy nó. Đó là thỏa thuận. Phiên bản đám mây chỉ là sự tiện lợi thêm vào, để những người không muốn quản lý hạ tầng vẫn có thể dùng thử.

Nhưng mô hình mối đe dọa của phiên bản đám mây hoàn toàn khác với phiên bản tự lưu trữ. Ở phiên bản tự lưu trữ, người vận hành và người dùng là cùng một người, hoặc ít nhất là biết nhau. Tên workspace gây thù địch không quan trọng vì không ai tạo ra nó. Giới hạn tốc độ không quan trọng vì không có động cơ để spam chính mình.

Trên một SaaS đa người thuê (multi-tenant), người vận hành là tôi, người dùng là tất cả mọi người, và người vận hành bảo chứng cho mọi thứ người dùng làm đối với mọi hệ thống bên ngoài mà SaaS chạm tới. Resend không biết sự khác biệt giữa một lời mời tôi gửi và một lời mời người lạ gửi qua dự án của tôi. Chữ ký DKIM của tôi nằm trên cả hai.

Tôi từng nghĩ cloud.kaneo.app là "cùng một phần mềm, được lưu trữ cho bạn". Nó luôn nhiều hơn thế. Nó là "cùng một phần mềm, cộng thêm uy tín Resend của tôi, uy tín IP của tôi, mối quan hệ tên miền của tôi với mọi nhà cung cấp email trên internet". Trong 14 tháng, không ai quan tâm. Thứ Năm tuần trước, có người đã quan tâm.

Những gì tôi đang thay đổi

Captcha khi đăng ký. Chặn tên miền email tạm. Giới hạn tốc độ trên endpoint gửi lời mời. Bộ lọc tên workspace. Tài khoản khách không thể gửi lời mời nữa. Không có tính năng nào trong số này được áp dụng cho người tự lưu trữ, vì mô hình mối đe dọa của họ khác, và tôi không muốn làm chậm người dùng thực sự với sự hoang tưởng mà họ không cần.

Sự thay đổi sâu sắc hơn là ở cách tôi nghĩ về tầng đám mây. Nó không phải là sân chơi bình thường cho dự án. Đó là một mảnh hạ tầng tôi vận hành thay cho người lạ, với tất cả các trách nhiệm đi kèm. 14.000 nạn nhân lừa đảo không phải là người dùng của tôi, nhưng tên miền của tôi đã rơi vào hộp thư của họ, và trách nhiệm đó thuộc về tôi.

Tôi sẽ giữ phiên bản đám mây. Tôi sẽ thu hẹp nó. Và tôi sẽ không còn giả định rằng người tiếp theo tìm thấy nó sẽ muốn thứ tôi xây dựng nó nữa.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗