- Một lỗ hổng bảo mật nghiêm trọng đã được phát hiện trong ứng dụng hẹn hò có tên Cerca
- OTP bị lộ ngay trong phản hồi, khiến bất kỳ ai chỉ cần biết số điện thoại cũng có thể truy cập tài khoản
- Nhiều API endpoint mở mà không cần xác thực khiến dữ liệu cá nhân bị rò rỉ rất dễ dàng
- Xu hướng tính dục, nội dung tin nhắn, giấy tờ tùy thân và các dữ liệu nhạy cảm khác của người dùng bị lộ với quy mô lớn
- Phía dịch vụ không phản hồi và không thông báo đầy đủ dù nhà nghiên cứu đã báo cáo một cách có trách nhiệm
Tầm quan trọng của việc các startup phải nghiêm túc với bảo mật
- Gần đây, trong quá trình gấp rút đưa sản phẩm ra thị trường, nhiều startup đã xem nhẹ bảo mật
- Dù là ứng dụng hẹn hò tập trung rất nhiều dữ liệu cá nhân, người dùng vẫn bị đặt vào rủi ro vì sự non kém trong phát triển và vận hành
Quy trình phát hiện và thông báo lỗ hổng
- Ngày 23/2/2025, tác giả đã gửi email cho phía Cerca để mô tả lỗ hổng bảo mật và các vấn đề liên quan
- Ngày 24/2, hai bên đã thảo luận chi tiết về lỗ hổng, phương án ứng phó và các bước tiếp theo qua cuộc họp video
- Nhóm Cerca cho biết họ đã nhận thức được mức độ nghiêm trọng, hứa sẽ xử lý nhanh và sẽ thông báo cho người dùng
- Sau đó, tác giả nhiều lần hỏi về tiến độ, nhưng tính đến ngày 21/4 vẫn không có phản hồi hay thông báo nào
- Theo xác minh độc lập, lỗ hổng này hiện đã được vá
Lỗ hổng OTP và quá trình hack đơn giản
- Trong quá trình đăng nhập ứng dụng, mật khẩu dùng một lần (OTP) bị lộ nguyên vẹn trong phản hồi mạng
- Kẻ tấn công chỉ cần biết số điện thoại là có thể truy cập tài khoản một cách dễ dàng và nhanh chóng
Truy cập API endpoint và rò rỉ thông tin
- Đã xác nhận rằng chỉ cần điền header phiên bản ứng dụng là có thể truy cập mọi đường dẫn API
- Toàn bộ tài liệu OpenAPI bị lộ thông qua endpoint
/docs
- Có thể điều khiển API bằng cách dùng các công cụ như Burp Suite để tự động chèn header và token của ứng dụng
- Một số endpoint chỉ thay đổi business logic, nhưng các endpoint cốt lõi lại trả về lượng lớn dữ liệu cá nhân nghiêm trọng
- Với
user/{user_id} và các endpoint tương tự, có thể lấy thông tin cá nhân, số điện thoại, thậm chí chiếm đoạt tài khoản
Tình trạng lộ lọt quy mô lớn dữ liệu cá nhân và giấy tờ tùy thân
- Thông qua endpoint dữ liệu cá nhân, PII như giới tính, thành phố, ngày sinh, email trường học, thông tin giấy tờ tùy thân... bị lộ trên diện rộng
- Đặc biệt, ở các trường liên quan đến giấy tờ tùy thân như
national_id_verified, có thể truy cập các tệp nhạy cảm như ảnh hộ chiếu, ảnh căn cước
- Bằng script tấn công, tác giả xác định được 6.117 người dùng, trong đó 207 người đã nhập cả thông tin giấy tờ tùy thân
- Trong đó cũng có một số tài khoản ghi là thuộc Đại học Yale
- Theo Instagram chính thức của Cerca, quy mô này tương ứng với 10.000 người dùng trong tuần đầu tiên
Nguy cơ thiệt hại thực tế và mức độ nghiêm trọng của vấn đề
- Xu hướng tính dục, nội dung trò chuyện, giấy tờ tùy thân và các dữ liệu cực kỳ nhạy cảm khác đã bị lộ, dẫn đến nguy cơ nghiêm trọng như theo dõi, đánh cắp danh tính, tống tiền
- Cerca từng cho biết họ tuân thủ các tiêu chuẩn ngành như mã hóa, nhưng điều này không phù hợp với thực tế vận hành
- Người dùng không thể tự mình xác minh, nên việc nhà cung cấp ứng dụng chủ động và có trách nhiệm trong quản lý bảo mật là điều bắt buộc
- Trên thực tế, cũng có khả năng một số lượng lớn người không xác định đã đánh cắp dữ liệu cá nhân trên diện rộng
Kết luận và sự cần thiết của văn hóa bảo mật có trách nhiệm
- Việc vận hành một ứng dụng yếu kém về bảo mật đến mức ai cũng có thể hack là một vấn đề xã hội nghiêm trọng
- Nếu không đặt bảo vệ dữ liệu người dùng lên ưu tiên hàng đầu, thiệt hại có thể xảy ra theo thời gian thực
- Trường hợp của Cerca, nơi phản hồi với báo cáo của nhà nghiên cứu bảo mật và hướng dẫn người dùng đều không đầy đủ, là một bài học cảnh tỉnh
- Để xây dựng một môi trường Internet an toàn hơn, việc thiết lập hệ thống bảo mật phải là ưu tiên số một của mọi nhà phát triển
1 bình luận
Ý kiến trên Hacker News
Ngay cả khi xét rằng ứng dụng này là sản phẩm khá sơ cấp do sinh viên đại học làm ra, tôi vẫn nghĩ họ phải làm hết sức về bảo mật và giao tiếp. Tuy vậy, nhìn thấy cả những công ty người lớn được các VC lớn rót vốn cũng vướng các vấn đề như thế và hành xử tương tự, tôi cũng thấy không cần quá khắt khe với mấy sinh viên này. Chia sẻ link bài viết
Là một lập trình viên làm ở công ty nhỏ, đôi khi tôi lo về trách nhiệm cá nhân của mình. Nhiều công ty hoạt động trong lĩnh vực không bị ràng buộc bởi các quy định như PCI hay HIPAA. Ở các tổ chức nhỏ, bảo mật thường bị xem là việc của kỹ thuật chứ không phải trách nhiệm của toàn tổ chức. Đội sản phẩm chỉ tập trung vào tính năng, PM chỉ nhìn lịch trình, QA chỉ nhìn bug, và hiếm ai lên tiếng về bảo mật. Không khí chung là kỹ sư chỉ cần làm phần việc được giao. Nếu kỹ sư cố lo luôn cả bảo mật thì tốt, còn không thì lại bị PM hoặc người khác phàn nàn. Và lúc nào cũng nghe những câu như: "Cái này mất bao lâu?", "Khả năng chuyện đó thực sự xảy ra là bao nhiêu?", "Cứ ra MVP nhanh trước rồi vá sau". Thế nên với tư cách nhân viên, tôi chỉ làm điều công ty yêu cầu. Nhưng khi công ty bị kiện vì bị hack hay rò rỉ dữ liệu, tôi thường lo liệu mình có phải là kỹ sư "đáng lẽ phải biết rõ hơn" nên phải chịu trách nhiệm hay không
Để giảm trách nhiệm pháp lý cho nhà nghiên cứu, tôi nghĩ chỉ cần tạo thêm một tài khoản hoặc tạo hồ sơ với sự đồng ý của bạn bè để có quyền truy cập là đủ. Không cần thực sự cào dữ liệu về; ví dụ nếu id của tôi là 12345 và id của bạn tôi là 12357, thì chỉ cần chứng minh có thể truy cập hồ sơ tài khoản khác bằng các id ở giữa là được. Như nhiều người đã nói, không cần phải truy cập dữ liệu cá nhân của hàng nghìn người; chỉ cần mức đủ để chứng minh lỗ hổng và công bố là được
Bản thân bài viết này cũng khiến tôi thấy khá rối. Có vẻ API nhận OTP (mật khẩu dùng một lần) đơn giản đến mức OTP bị lộ ngay trong phản hồi từ server, nên ai chỉ cần biết số điện thoại là có thể truy cập tài khoản. Vì API kiểu như otp/số-điện-thoại và OTP nằm trong phản hồi, nên có vẻ chỉ cần đoán đúng số điện thoại là lấy được mã luôn. Rồi tác giả nói đã dùng script liệt kê ID người dùng, đặt điều kiện dừng khi gặp 1.000 ID trống liên tiếp, và xác nhận tổng cộng 6.117 người dùng, 207 thông tin giấy tờ tùy thân, 19 sinh viên Yale. Nhưng việc truy cập dữ liệu cá nhân của người khác đến mức này mà không có sự đồng ý khá giống vụ weev hack AT&T rồi vào tù trước đây. Dù quy mô nhỏ hơn, kiểu nghiên cứu này vẫn rủi ro về mặt pháp lý, và tôi lo rằng tác giả không nhận thức được môi trường pháp lý vốn không bảo vệ các nhà nghiên cứu bảo mật
otp/sốtrả lại ngay OTP cuối cùng. Nghĩa là chỉ cần đúng số điện thoại là nhận được OTP ngay lập tứcTôi cũng từng có trải nghiệm tương tự: muốn báo bug cho một app hẹn hò khác nhưng không liên lạc được, nên tôi đổi hồ sơ của nhà sáng lập thành "hãy liên hệ tôi", rồi họ phục hồi lại từ bản sao lưu. Vài năm sau tôi thấy app đó trên quảng cáo Instagram và thử lại, thì vẫn còn đúng lỗ hổng đó. Chỉ cần biết API endpoint là ai cũng có quyền admin, truy cập toàn bộ tin nhắn/match. Tôi đang cân nhắc có nên liên hệ lại không
Tôi nghĩ khi thu thập dữ liệu nhạy cảm như hộ chiếu hay địa chỉ trong app thì thật sự phải cân nhắc đi cân nhắc lại. Không thể xem nhẹ kiểu "à vì là app sinh viên làm" rồi cho qua
Việc trả nguyên OTP trong phản hồi API là chuyện quá khó tin. Tôi không hiểu nổi tại sao lại làm thế
Chia sẻ link một bài báo khác liên quan từ Yale Daily News
Tôi ước có luật đối xử với dữ liệu cá nhân như chất thải hạt nhân, nguy hiểm ở mức đó. Nếu bị rò rỉ thì không chỉ công ty phá sản mà cả những người chịu trách nhiệm cũng phải đối mặt với rủi ro pháp lý. Hiện giờ việc thu thập dữ liệu người dùng quá dễ, mà lộ ra thì chỉ xin lỗi rồi cho qua
Trên iOS tôi mới biết đến công cụ Charle's Proxy. Trước đây tôi từng pentest bằng cách tự tìm chuỗi trong binary của app. Với việc phân tích app chỉ có trên iOS, có vẻ nó sẽ cực kỳ hữu ích