Vào ngày 10/06/2016 vừa qua, Pranav Hivarekar - một nhà nghiên cứu bảo mật đã phát hiện ra một lỗ hổng trong tính năng mới của Facebook là bình luận bằng video.
Câu chuyện phía sau
Tôi vô tình lướt qua ghi chú "New: Videos in Comments!" viết bởi Bob Baldwin - một kỹ sư làm việc tại Facebook. Ghi chú này viết về việc Facebook tung ra tính năng mới bình luận với video. VD: giờ đây, người dùng được phép tải lên một video trong bình luận.Khi tôi đọc được ghi chú này, tại thời điểm đó tính năng bình luận video này đã được tung ra 8 giờ trước. Vì vậy, tôi bắt đầu dạo một vòng và kiểm tra tính năng này để xem nó hoạt động như thế nào. Sau 2 giờ, tôi đã tìm ra một số lỗ hổng liên quan khá thú vị. Sử dụng những lỗ hổng liên quan này, tôi đã có thể tạo ra một lỗi để XÓA BẤT CỨ VIDEO NÀO!
Lúc đó, trông tôi giống như...

Lỗi này là bằng chứng về lỗ hổng trong logic chứ không phải là lỗi kỹ thuật hàng ngày mà chúng ta thấy như RCE, SSRF, v.v...
Logic của nhà phát triển
Khi chúng ta tải lên một video trong một bình luận thì video này sẽ được tải lên dòng thời gian (timeline) của người dùng/trang và sau đó nó được đính kèm vào bài viết như một bình luận video sử dụngvideo-id
.Logic tấn công của tôi
Tôi yêu thích API nên tôi chọn Graph API. Dưới đây là logic tấn công đơn giản:- Tạo một bình luận từ API.
- Sửa bình luận và đính kèm video bạn muốn bằng cách sử dụng
video-id
từ API. - Xóa bình luận từ API.
video-id
của video đó.Ở đây có hai lỗ hổng đơn giản...
- Tôi có thể đính kèm video của bất kỳ ai vào bình luận của tôi bằng cách sử dụng
video-id
. - Khi tôi xóa bình luận của tôi thì video được đính kèm cũng bị xóa. Do nó chỉ sử dụng
video-id
và không có dòng kiểm tra quyền hạn nào để xác nhận người dùng sở hữu video. Giả định được đưa ra là người dùng sẽ CHỈ tải lên/đính kèm những video của chính mình.
Proof of Concept (PoC)
1. Tạo một bình luận trên một bài viết từ API.Truy vấn API:
POST /< post id>/comments?message=test
2. Sửa bình luận và đính kèm một VIDEO bạn muốn từ API.
ID Video: 1739331926310614 (video sẽ bị xóa)
Truy vấn API:
POST /< comment id>?attachment_id=1739331926310614
Video được thêm vào như một bình luận.
3. Xóa bình luận. Chờ 20 giây (mất 20 giây để XÓA video từ máy chủ của Facebook)
Truy vấn API:
DELETE /< comment id>
Kết quả là video sẽ bị xóa.
Lỗ hổng bảo mật này sẽ được tạm thời khắc phục bởi nhóm Facebook trong 23 phút sau khi xác nhận về lỗ hổng. Khắc phục hoàn toàn sẽ được thực hiện trong 10-12 giờ sau đó.Hoan hô Facebook :)
Đặc biệt cảm ơn
Tôi muốn cảm ơn tới tất cả bạn bè và những người xung quanh tôi, những người đóng vai trò quan trọng trong động cơ thúc đẩy tôi. Và cả Facebook Security Team vì đã vá lỗ hổng này trước khi nó rơi vào tay nhầm người.Dòng thời gian
- 3:53 PM ngày 10/06/2016 - Báo cáo được gửi
- 8:36 PM ngày 10/06/2016 - Phản hồi đầu tiên từ Facebook
- 8:51 PM ngày 10/06/2016 - Phản hồi của tôi tới Facebook
- 10:11 PM ngày 10/06/2016 - Xác nhận lỗi bởi Facebook
- 10:31 PM ngày 10/06/2016 - Phản hồi của tôi tới Facebook
- 10:34 PM ngày 10/06/2016 - Khắc phục tạm thời được áp dụng bởi Facebook
- 10:44 PM ngày 10/06/2016 - Phản hồi của tôi tới Facebook
- 9:05 AM ngày 11/06/2016 - Lỗi được khắc phục và phản hồi bởi Facebook
- 9:55 AM ngày 11/06/2016 - Tôi xác nhận sự khắc phục
- 10:28 AM ngày 11/06/2016 - Xác nhận khắc phục bởi Facebook
- 10:35 AM ngày 11/06/2016 - Tin nhắn trao đổi
- 1:20 AM ngày 15/06/2016 - Tin nhắn trao đổi
- 9:03 PM ngày 20/06/2016 - Hỏi về quyết định tiền thưởng
- 1:13 AM ngày 23/06/2016 - Tiền thưởng 5 chữ số đã được trao