Rủi ro an ninh của việc rò rỉ giá trị Sentinel V8 Engine vượt qua HardenProtect

Rủi ro bảo mật do rò rỉ Giá trị Sentinel trong động cơ Chrome V8

Giá trị Sentinel là một giá trị đặc biệt trong thuật toán, thường được sử dụng làm điều kiện kết thúc cho các thuật toán lặp hoặc đệ quy. Trong mã nguồn của Chrome, có nhiều giá trị Sentinel, trong đó một số đối tượng không nên bị rò rỉ vào môi trường JavaScript. Bài viết này sẽ khám phá cách lợi dụng việc rò rỉ đối tượng Uninitialized Oddball để vượt qua cơ chế HardenProtect của động cơ Chrome V8.

Giá trị Sentinel trong V8

Hầu hết các đối tượng gốc của V8 được định nghĩa trong tệp v8/src/roots/roots.h, những đối tượng này được sắp xếp liền kề trong bộ nhớ. Khi những đối tượng gốc không nên được lộ ra cho JavaScript bị rò rỉ, điều này có thể dẫn đến việc thực thi mã tùy ý trong sandbox.

Chúng ta có thể làm rò rỉ Uninitialized Oddball vào JavaScript bằng cách sửa đổi các hàm native của V8. Ví dụ, sửa đổi độ lệch của hàm %TheHole() để nó trả về đối tượng Uninitialized Oddball.

Tiết lộ độc quyền cách vượt qua Chrome v8 HardenProtect thông qua rò rỉ Sentinel Value

Vượt qua bảo vệ HardenType

Sử dụng đối tượng Uninitialized Oddball bị rò rỉ, có thể xây dựng mã sau để thực hiện đọc tương đối tùy ý:

javascript function read(obj, idx) { return obj[idx]; }

let arr = [1.1, 2.2, 3.3]; let uninitialized_oddball = %TheHole();

for (let i = 0; i < 100000; i++) { đọc(arr, 0);
}

%Tối ưu hóa chức năng trên cuộc gọi tiếp theo(đọc);

let result = read(uninitialized_oddball, 0x12345); %DebugPrint(kết quả);

Mã hợp ngữ của hàm read đã được tối ưu hóa cho thấy, trong quá trình tính toán độ lệch của mảng, không kiểm tra kiểu giá trị của obj.prop, mà tính toán trực tiếp theo ngữ nghĩa JavaScript, dẫn đến nhầm lẫn kiểu dữ liệu, cho phép đọc tùy ý.

Tiết lộ độc quyền cách vượt qua Chrome v8 HardenProtect bằng cách rò rỉ Sentinel Value

Đề xuất sửa chữa là khi hàm đã được tối ưu hóa trả về các phần tử của mảng, thêm kiểm tra đối với mảng map để tránh tính toán trực tiếp giá trị trả về của độ lệch.

Tiết lộ độc quyền cách vượt qua Chrome v8 HardenProtect thông qua việc lộ giá trị Sentinel

Cảnh báo rủi ro PatchGap

Lỗ hổng này hiện vẫn chưa được sửa trong một số phần mềm sử dụng phiên bản cũ của động cơ V8 như Skype(. Trên nền tảng x86, do không có nén địa chỉ, việc đọc và ghi tùy ý có thể được thực hiện trực tiếp liên quan đến toàn bộ tiến trình.

Sự công khai của phương pháp vượt qua mới này đã giảm bớt độ khó trong việc khai thác các lỗ hổng liên quan. Tin tặc gần như không cần nghiên cứu thêm để hoàn thành việc khai thác hoàn chỉnh lỗ hổng Uninitialized Oddball.

![Tiết lộ độc quyền cách vượt qua Chrome v8 HardenProtect bằng cách rò rỉ Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(

Tóm tắt

Còn có các giá trị Sentinel khác trong V8, có thể dẫn đến các vấn đề an ninh tương tự. Đề nghị nghiên cứu thêm:

  1. Các lỗ hổng Uninitialized Oddball khác có thể cho phép RCE V8 không?
  2. Có nên chính thức liệt kê các vấn đề như vậy là lỗ hổng an ninh không?
  3. Trong bài kiểm tra Fuzzer, có cần đưa giá trị Sentinel vào như một biến không?

Dù sao đi nữa, những vấn đề như vậy sẽ rút ngắn đáng kể chu kỳ mà hacker có thể khai thác hoàn toàn, rất đáng được chú ý.

![Độc quyền tiết lộ cách vượt qua Chrome v8 HardenProtect thông qua việc rò rỉ Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp(

![Tiết lộ độc quyền cách vượt qua Chrome v8 HardenProtect thông qua việc rò rỉ Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp(

![Tiết lộ độc quyền cách vượt qua Chrome v8 HardenProtect bằng cách rò rỉ Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.webp(

![Tiết lộ độc quyền về việc vượt qua Chrome v8 HardenProtect thông qua việc rò rỉ Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-506159c94c9e0988552cbcbd13d971e1.webp(

![Tiết lộ độc quyền cách vượt qua Chrome v8 HardenProtect bằng cách rò rỉ Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-e9e2000fd501b69ee3ee643a459a26dd.webp(

SENC-0.03%
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • 6
  • Chia sẻ
Bình luận
0/400
GateUser-bd883c58vip
· 08-04 04:05
Lỗ hổng này, cứng cáp đến mức có chút lo lắng.
Xem bản gốcTrả lời0
SerumDegenvip
· 08-02 17:19
gm bạn bè... một rò rỉ alpha khác được phát hiện trong v8, chúng ta đều rekt
Xem bản gốcTrả lời0
ThatsNotARugPullvip
· 08-02 17:19
Cái nồi này để Chrome mang theo nhé, người ta đã khoét lỗ cho bạn xem rồi.
Xem bản gốcTrả lời0
RektButStillHerevip
· 08-02 17:09
Bảo vệ sandbox sao lại kém vậy?
Xem bản gốcTrả lời0
CryptoNomicsvip
· 08-02 17:01
*thở dài* một lỗ hổng khác chứng minh phân tích hồi quy của tôi về mô hình bảo mật của chrome là có ý nghĩa thống kê... nhưng không ai lắng nghe
Xem bản gốcTrả lời0
MetaverseHobovip
· 08-02 16:58
Lỗ hổng này cũng quá hấp dẫn rồi, trực tiếp To da moon.
Xem bản gốcTrả lời0
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)