J2TEAM Security: A must-have extension for Chrome users. Install now!

Facebook bug - xóa bất kỳ video nào trên Facebook

Facebook bug | Pranav Hivarekar - một nhà nghiên cứu bảo mật đã phát hiện ra lỗ hổng trong tính năng mới của Facebook - bình luận bằng video.
facebook-bug-delete-any-video-exploit.png
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ư...
facebook-bug-delete-any-video

Nghiêm túc đấy, tôi có thể XÓA BẤT CỨ VIDEO NÀO mà tôi muốn từ FACEBOOK.

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ụng video-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.
Điều này sẽ xóa bỏ video được đính kèm bằng cách sử dụng video-id của video đó.

Ở đây có hai lỗ hổng đơn giản...
  1. 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.
  2. 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
Leader at J2TEAM. Website: https://j2team.dev/

Đăng nhận xét

Cảm ơn bạn đã đọc bài viết!

- Bạn có gợi ý hoặc bình luận xin chia sẻ bên dưới.

- Hãy viết tiếng Việt có dấu nếu có thể!