Khám phá rò rỉ Giá trị Sentinel trong động cơ Chrome V8 và phân tích rủi ro an ninh

Khám phá rủi ro an ninh do rò rỉ Giá trị Sentinel trong động cơ Chrome V8

Lời nói đầu

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 trong các thuật toán lặp hoặc đệ quy. Giá trị đặc biệt này đã được sử dụng rộng rãi trong mã nguồn Chrome. Gần đây, một số nhà nghiên cứu đã khai thác đối tượng TheHole để thực hiện sự thực thi mã tùy ý trong sandbox cho CVE-2021-38003 và CVE-2022-1364. Nhóm Google sau đó đã nhanh chóng khắc phục hai lỗ hổng này.

Tuy nhiên, bên cạnh đối tượng TheHole, còn có các đối tượng nguyên thủy khác trong V8 không nên được lộ ra cho JavaScript. Bài viết này sẽ tập trung vào đối tượng Uninitialized Oddball và giới thiệu cách tận dụng nó để vượt qua cơ chế HardenProtect của V8. Cần lưu ý rằng phương pháp vượt qua này hiện vẫn áp dụng cho phiên bản mới nhất của V8 và chưa được sửa chữa.

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 tiếp trong bộ nhớ. Khi những đối tượng gốc này không nên bị rò rỉ vào JavaScript bị rò rỉ, điều đó có thể dẫn đến việc thực thi mã tùy ý trong sandbox.

Để xác minh điều này, chúng ta có thể thông qua việc sửa đổi hàm native của V8, để rò rỉ Uninitialized Oddball vào JavaScript. Cách cụ thể là sửa đổi độ lệch tương đối của hàm %TheHole() đối với isolate, để nó trả về Uninitialized Oddball.

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

Vượt qua bảo vệ HardenType

Việc sử dụng đối tượng Uninitialized Oddball có thể đạt được việc đọc và ghi gần như tùy ý. Trong mã JavaScript đã được tối ưu hóa, hàm read không kiểm tra giá trị với obj.prop làm khóa, mà trực tiếp tính toán độ lệch theo ngữ nghĩa JavaScript để lấy giá trị từ mảng. Điều này dẫn đến việc xảy ra nhầm lẫn kiểu trong quá trình tính toán, từ đó cho phép đọc tùy ý.

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

Đối với bất kỳ thao tác ghi nào, có thể tham khảo phương pháp cấu tạo trong Issue1352549 để phân tích. Giải pháp sửa lỗi được đề xuất là khi hàm đã được tối ưu trả về 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 độ dịch để trả về giá trị của mảng.

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

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

Cảnh báo PatchGap

Phân tích Issue1352549, chúng tôi phát hiện một số phần mềm có thể gặp vấn đề PatchGap. Đáng lưu ý là, tính đến thời điểm hiện tại, Skype vẫn chưa khắc phục lỗ hổng này. Trong môi trường x86, việc thực hiện đọc và ghi tùy ý sẽ có sự khác biệt, vì không có nén địa chỉ, có thể thực hiện thao tác trực tiếp tương đối so với toàn bộ tiến trình.

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

Vấn đề PatchGap lần này không chỉ liên quan đến Issue1352549, việc công khai phương pháp vượt qua mới còn làm giảm đáng kể độ khó trong việc khai thác các lỗ hổng như Issue1314616 và Issue1216437. Hacker gần như không cần bất kỳ chi phí nghiên cứu nào để hoàn thành việc khai thác đầy đủ lỗ hổng uninitialized_oddball như trước đây.

Bộc lộ độc quyền cách vượt qua Chrome v8 HardenProtect bằng cách lộ giá trị Sentinel

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

Tóm tắt

Bài viết này tóm tắt việc thảo luận về phương pháp thực hiện đọc tùy ý thông qua việc lộ giá trị Sentinel trong uninitialized_Oddball. Trong V8 còn nhiều giá trị Sentinel khác, chúng cũng có thể dẫn đến các vấn đề bảo mật tương tự. Điều này mang lại cho chúng ta những hiểu biết sau:

  1. Các lỗ hổng uninitialized_Oddball khác có thể dễ dàng thực hiện việc thực thi mã từ xa trên V8 hay không.

  2. Các vấn đề như vậy có nên được coi là vấn đề an ninh chính thức hay không vẫn còn gây tranh cãi.

  3. Cân nhắc việc thêm các giá trị Sentinel như %TheHole/uninitialized_Oddball vào biến trong fuzzer để khai thác các nguyên lý sử dụng khác.

Dù những vấn đề này có được coi là vấn đề an ninh chính thức hay không, chúng đều sẽ rút ngắn đáng kể thời gian mà hacker có thể khai thác hoàn toàn.

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

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
FUD_Vaccinatedvip
· 07-26 03:20
Lại đen Google, cái lỗ này cũng quá thường xuyên rồi.
Xem bản gốcTrả lời0
MetaverseLandlordvip
· 07-24 11:22
Ôi trời, lỗ hổng trình duyệt của nhà người ta cao cấp như vậy.
Xem bản gốcTrả lời0
SerNgmivip
· 07-23 05:34
Thực sự v8 làm tôi đau đầu...
Xem bản gốcTrả lời0
GateUser-a606bf0cvip
· 07-23 05:34
Hả? Lại là chrome gây chuyện à?
Xem bản gốcTrả lời0
StablecoinAnxietyvip
· 07-23 05:15
Lỗ hổng bảo mật trình duyệt thật kích thích!
Xem bản gốcTrả lời0
PonziDetectorvip
· 07-23 05:11
Ôi trời, lỗ hổng V8 này lớn thật đấy!
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)