23 điểm bởi xguru 2024-11-06 | 1 bình luận | Chia sẻ qua WhatsApp
  • Cách đây không lâu, đã có thể tạo ra một chuỗi tấn công dẫn đến thực thi mã trên thiết bị bằng cách khai thác lỗ hổng JSON injection trên thiết bị Samsung
  • Đây có thể là một bài học về cách lạm dụng các API mù quáng tin tưởng JSON trong payload

Tiêm vào mọi thứ theo kiểu “thông minh”

  • Với Samsung Smart Hub, ứng dụng di động có thể giao tiếp từ xa với hub để điều khiển mọi thiết bị được kết nối
  • Bằng cách gửi yêu cầu POST độc hại tới endpoint /credentials, có thể sửa đổi thông tin xác thực dùng để hub kết nối tới máy chủ từ xa và làm sai lệch dữ liệu, từ đó dẫn tới SQL injection
  • Thư viện json-c mà Samsung phụ thuộc được biên dịch với JSON_TOKENER_STRICT=0, cho phép định nghĩa chuỗi bằng cả dấu nháy đơn lẫn dấu nháy kép
  • Điều này cho phép kẻ tấn công tạo các cột tùy chỉnh trong cơ sở dữ liệu sqlite nội bộ của hub
  • Sau khi chèn một chuỗi ROP quá dài vào bảng camera, rồi gửi lệnh DELETE tới endpoint /cameras, có thể khiến tiến trình video-core bị crash khi cố đọc dữ liệu, từ đó gây ra lỗi tràn bộ đệm dựa trên ngăn xếp kiểu truyền thống
  • Bài học rút ra ở đây là JSON injection → SQL injection → buffer overflow → ROP = chiếm quyền

JSON injection là gì?

  • JSON injection là một lỗ hổng cho phép chèn dữ liệu độc hại vào luồng JSON để thay đổi hành vi ứng dụng hoặc kích hoạt các thao tác ngoài ý muốn
  • JSON injection phía máy chủ xảy ra khi dữ liệu từ nguồn không đáng tin cậy không được làm sạch đúng cách trên máy chủ và được dùng trong mã theo cách trực tiếp hoặc gián tiếp

Vấn đề nằm ở parser

  • Trong các ứng dụng web và API hiện đại, nhiều parser có thể được dùng trong pipeline xử lý request, mỗi parser có đặc tính và điểm yếu riêng
  • Sự không nhất quán giữa các parser kết hợp với xử lý request nhiều giai đoạn có thể tạo ra các lỗ hổng nghiêm trọng
  • Các parser JSON gặp khó khăn vì RFC JSON chính thức để ngỏ những chủ đề như khóa trùng lặp và biểu diễn số
  • RFC chính thức không phải là đặc tả duy nhất; còn có ECMAScript, JSON5, HJSON và Binary JSON (BSON)
  • Khả năng tương tác giữa các parser làm lộ ra những rủi ro bảo mật mà nhiều người thậm chí không biết là tồn tại

Các vấn đề bảo mật trong khả năng tương tác giữa parser JSON

  • Sự không nhất quán trong cách xử lý khóa trùng lặp
  • Sự không nhất quán trong cách xử lý ký tự đặc biệt hoặc comment
  • Sự không nhất quán trong quá trình (de)serialize JSON

JSON bị khai thác như thế nào?

  • Có thể thao túng JSON để chèn dữ liệu khiến ứng dụng hoạt động theo cách mà nhà phát triển không lường trước
  • Khi có thể thao túng cách dữ liệu đi qua các thành phần trong hạ tầng API, sẽ xuất hiện cơ hội kiểm soát business logic
  • Nếu hiểu cách parser xử lý đầu vào, có thể lợi dụng hành vi của parser để khiến dữ liệu được diễn giải theo cách hỗ trợ thao túng dữ liệu, từ đó vượt qua kiểm tra đầu vào

Kết luận

  • Vụ tấn công Samsung Smart Hub chỉ là một ví dụ cho thấy JSON injection có thể dẫn tới chuỗi lỗ hổng phức tạp, từ SQL injection đến thực thi mã từ xa
  • Nguyên nhân gốc rễ thường nằm ở sự không nhất quán trong cách các parser JSON xử lý dữ liệu, đặc biệt khi có nhiều parser khác thường cùng tham gia
  • Bằng cách kiểm tra kỹ cách đối tượng JSON được serialize, deserialize và xử lý, có thể tìm ra cách tạo payload vượt qua bộ lọc làm sạch và ảnh hưởng đến business logic
  • Khi API tiếp tục là nền tảng cốt lõi của các ứng dụng hiện đại, việc bảo đảm an toàn cho cách API xử lý dữ liệu trở nên quan trọng hơn bao giờ hết

1 bình luận

 
yangeok 2024-11-08

Có lẽ sẽ phải siết chặt việc xác thực dữ liệu nhận qua phần thân json.