Phân tích và khai thác lỗ hổng an toàn giá trị Sentinel của động cơ Chrome V8

Phân tích Giá trị Sentinel trong động cơ Google Chrome V8 và những rủi ro an ninh của nó

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

Giá trị Sentinel trong V8

Tệp roots.h trong mã nguồn V8 định nghĩa nhiều đối tượng gốc, chúng được sắp xếp lần lượt trong bộ nhớ. Nếu những đối tượng gốc không nên bị lộ cho JavaScript bị rò rỉ, có thể dẫn đến việc thoát khỏi sandbox. Vụ rò rỉ đối tượng TheHole trước đây là một ví dụ điển hình.

Để xác minh vấn đề trong phiên bản mới nhất V8, có thể sửa đổi hàm %TheHole() để nó trả về đối tượng Uninitialized Oddball:

javascript print(%DebugPrint(%TheHole())); // Xuất: Giá trị chưa được khởi tạo

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

Vượt qua bảo vệ HardenType

Sử dụng Uninitialized Oddball có thể xây dựng mã PoC như sau để thực hiện đọc tùy ý:

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

let uninitialized = %TheHole(); let arr = [1.1]; %Chuẩn bị hàm tối ưu hóa ( đọc ); read(arr, 0); đọc(arr, 0); %Tối ưu hóa hàm trong cuộc gọi tiếp theo(đọc); read(arr, 0);

print(read(uninitialized, 0x1234n));

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

Hàm read sau khi tối ưu hóa bằng cách phản biện có thể thấy rằng nó không kiểm tra nghiêm ngặt kiểu Value của obj.prop, mà trực tiếp tính toán độ lệch theo ngữ nghĩa JavaScript và trả về phần tử mảng, từ đó gây ra sự nhầm lẫn kiểu và thực hiện đọc tùy ý.

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

Đề xuất phương án sửa chữa là khi hàm đã được tối ưu 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 rò rỉ Sentinel Value

Lời khuyên rủi ro PatchGap

Phân tích cho thấy, một số phần mềm như Skype có thể gặp vấn đề PatchGap, vẫn chưa được sửa chữa lỗ hổng này. Hacker có thể lợi dụng lỗ hổng này để hoàn thành chuỗi khai thác trong thời gian ngắn.

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

Ngoài ra, sau khi công bố phương pháp vượt qua mới, độ khó khai thác một số lỗ hổng lịch sử ( như Issue1314616, Issue1216437) đã giảm đáng kể. Đề nghị các nhà sản xuất đánh giá lại rủi ro an ninh liên quan đến các lỗ hổng này.

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

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

Tóm tắt

Còn nhiều giá trị Sentinel khác trong V8 đáng để nghiên cứu thêm. Đề xuất xem xét việc đưa %TheHole/Uninitialized_Oddball và các giá trị khác vào Fuzzer, khai thác các nguyên lý khai thác mới. Dù vấn đề này có được coi là vấn đề an toàn hay không, nó có thể rút ngắn đáng kể chu kỳ khai thác hoàn chỉnh của hacker.

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

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

SENC-5.19%
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
  • Đăng lại
  • Chia sẻ
Bình luận
0/400
UncleLiquidationvip
· 1giờ trước
Còn phải nghiên cứu mã
Xem bản gốcTrả lời0
ParanoiaKingvip
· 08-11 08:12
Lại một nơi tiềm ẩn nguy hiểm nữa.
Xem bản gốcTrả lời0
WenMoon42vip
· 08-11 08:11
Lại là độ sâu nghiên cứu à
Xem bản gốcTrả lời0
CryptoSourGrapevip
· 08-11 08:09
Hóa ra ở đây cũng có hố.
Xem bản gốcTrả lời0
ForkItAllDayvip
· 08-11 07:59
Ý tưởng mới về tràn ngăn xếp
Xem bản gốcTrả lời0
Fren_Not_Foodvip
· 08-11 07:58
Vượt qua lỗ hổng thật là ngầu.
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)