Một kỹ thuật mới để khai thác lỗ hổng trong SQLite đã được giới thiệu.

Các nhà nghiên cứu từ Check Point không che đậy tại hội nghị DEF CON, chi tiết về kỹ thuật mới để tấn công các ứng dụng sử dụng các phiên bản SQLite dễ bị tấn công. Phương pháp Check Point coi các tệp cơ sở dữ liệu là cơ hội để tích hợp các kịch bản khai thác lỗ hổng trong các hệ thống con SQLite nội bộ khác nhau mà không thể khai thác trực tiếp. Các nhà nghiên cứu cũng đã chuẩn bị một kỹ thuật khai thác lỗ hổng bằng cách mã hóa việc khai thác dưới dạng chuỗi truy vấn CHỌN trong cơ sở dữ liệu SQLite, cho phép bạn bỏ qua ASLR.

Để một cuộc tấn công thành công, cần có khả năng sửa đổi các tệp cơ sở dữ liệu của các ứng dụng bị tấn công, điều này hạn chế phương thức tấn công vào các ứng dụng sử dụng cơ sở dữ liệu SQLite làm định dạng cho dữ liệu đầu vào và chuyển tiếp. Phương pháp này cũng có thể được sử dụng để mở rộng quyền truy cập cục bộ hiện có, chẳng hạn như để tích hợp các cửa hậu ẩn vào các ứng dụng đã sử dụng, cũng như vượt qua các cơ chế bảo mật khi các nhà nghiên cứu bảo mật phân tích phần mềm độc hại. Hoạt động sau khi thay thế tệp được thực hiện tại thời điểm ứng dụng thực hiện truy vấn CHỌN đầu tiên đối với một bảng trong cơ sở dữ liệu đã sửa đổi.

Ví dụ: chúng tôi đã chứng minh khả năng chạy mã trong iOS khi mở sổ địa chỉ, tệp có cơ sở dữ liệu “AddressBook.sqlitedb” đã được sửa đổi bằng phương pháp được đề xuất. Cuộc tấn công đã sử dụng một lỗ hổng trong hàm fts3_tokenizer (CVE-2019-8602, khả năng tham chiếu con trỏ), đã được sửa trong bản cập nhật SQLite 2.28 tháng XNUMX, cùng với một lỗ hổng khác tính dễ bị tổn thương trong việc thực hiện các chức năng của cửa sổ. Ngoài ra, việc sử dụng phương pháp chiếm quyền kiểm soát từ xa máy chủ phụ trợ của kẻ tấn công được viết bằng PHP, phương pháp này tích lũy mật khẩu bị chặn trong quá trình vận hành mã độc (mật khẩu bị chặn được truyền dưới dạng cơ sở dữ liệu SQLite), đã được chứng minh.

Phương thức tấn công dựa trên việc sử dụng hai kỹ thuật “Query Hijacking” và “Query Oriented Programming”, cho phép khai thác các vấn đề tùy ý dẫn đến hỏng bộ nhớ trong công cụ SQLite. Bản chất của “Query Hijacking” là thay thế nội dung của trường “sql” trong bảng dịch vụ sqlite_master, xác định cấu trúc của cơ sở dữ liệu. Trường được chỉ định chứa khối DDL (Ngôn ngữ định nghĩa dữ liệu) được sử dụng để mô tả cấu trúc của các đối tượng trong cơ sở dữ liệu. Mô tả được chỉ định bằng cú pháp SQL tiêu chuẩn, tức là cấu trúc “CREATE TABLE” được sử dụng,
được thực thi trong quá trình khởi tạo cơ sở dữ liệu (trong lần khởi chạy đầu tiên
sqlite3LocateTable có chức năng tạo cấu trúc bên trong liên quan đến bảng trong bộ nhớ.

Ý tưởng là, nhờ việc thay thế “TẠO BẢNG” bằng “TẠO CHẾ ĐỘ XEM”, bạn có thể kiểm soát mọi quyền truy cập vào cơ sở dữ liệu bằng cách xác định chế độ xem của riêng mình. Khi sử dụng "TẠO XEM", thao tác "CHỌN" được liên kết với bảng, bảng này sẽ được gọi thay vì "TẠO BẢNG" và cho phép bạn truy cập các phần khác nhau của trình thông dịch SQLite. Tiếp theo, phương thức tấn công đơn giản nhất là gọi hàm “load_extension”, cho phép bạn tải một thư viện tùy ý có tiện ích mở rộng, nhưng chức năng này bị tắt theo mặc định.

Để thực hiện một cuộc tấn công khi có thể thực hiện thao tác “CHỌN”, kỹ thuật “Lập trình hướng truy vấn” được đề xuất, giúp khai thác các sự cố trong SQLite dẫn đến hỏng bộ nhớ. Kỹ thuật này gợi nhớ đến lập trình hướng trở lại (ROP, Lập trình hướng trả về), nhưng không sử dụng các đoạn mã máy hiện có để xây dựng chuỗi cuộc gọi (“tiện ích”) mà chèn vào một tập hợp các truy vấn phụ bên trong SELECT.

Một kỹ thuật mới để khai thác lỗ hổng trong SQLite đã được giới thiệu.

Một kỹ thuật mới để khai thác lỗ hổng trong SQLite đã được giới thiệu.

Nguồn: opennet.ru

Thêm một lời nhận xét