Phân tích độ sâu rủi ro an toàn của giá trị Sentinel trong động cơ Chrome V8

robot
Đang tạo bản tóm tắt

Thảo luận sâu về ảnh hưởng an ninh của 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 dừng cho vòng lặp hoặc đệ quy. Trong mã nguồn của Chrome có nhiều loại giá trị Sentinel. Trước đây, có nghiên cứu cho thấy việc rò rỉ đối tượng TheHole có thể thực hiện thực thi mã tùy ý trong sandbox của Chrome. Đội ngũ Google sau đó đã sửa chữa các lỗ hổng liên quan.

Tuy nhiên, trong V8 còn tồn tại các đối tượng nguyên thủy khác không nên được lộ ra ngoài JavaScript. Bài viết này sẽ thảo luận về đối tượng Oddball chưa khởi tạo, phương pháp vượt qua này lần đầu tiên xuất hiện trong Issue1352549. Đáng chú ý là phương pháp này hiện vẫn có thể được sử dụng trong phiên bản mới nhất của V8 và chưa được sửa chữa.

Phương pháp này có tính phổ quát nhất định:

  1. Issue1216437(CVE-2021-30551) lần đầu tiên cung cấp poc cho việc rò rỉ internal uninitialized oddball.

  2. Issue1314616(CVE-2022-1486) cũng đã trực tiếp rò rỉ UninitializedOddball.

  3. Vấn đề 1352549(NoCVE) có ảnh hưởng đáng chú ý.

Các trường hợp này cho thấy, chúng ta cần xem xét lại phần mềm có thể bị ảnh hưởng bởi PatchGap. Hiện tại, Skype vẫn chưa khắc phục được lỗ hổng này.

Hầu hết các đối tượng nguyên thủy trong V8 được định nghĩa trong tệp v8/src/roots/roots.h, chúng nằm cạnh nhau trong bộ nhớ. Một khi những đối tượng nguyên thủy không nên bị rò rỉ này bị rò rỉ vào JavaScript, có thể thực hiện việc thực thi mã tùy ý trong sandbox.

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

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

Sử dụng phương pháp này có thể vượt qua bảo vệ HardenType, thực hiện việc đọc ghi tương đối tùy ý. Phân tích mã JavaScript đã được tối ưu hóa có thể thấy rằng, khi kiểm tra obj.prop thì không xác minh giá trị với key là obj.prop, mà trực tiếp tính toán độ lệch theo ngữ nghĩa của JavaScript và lấy giá trị trong mảng, từ đó gây ra sự nhầm lẫn loại.

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

Do uninitialized_oddball được sắp xếp ở vị trí trước trong bộ nhớ V8 và nguyên thủy hơn, nên dễ làm giả hơn đối với đối tượng TheHole. Sau khi các biện pháp liên quan đến TheHole được sửa chữa, phương pháp này trở thành lựa chọn ưu tiên để vượt qua.

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

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

Cần lưu ý rằng Skype hiện vẫn chưa khắc phục lỗ hổng này. Trên hệ thống x86, do không có nén địa chỉ, việc đọc và ghi tùy ý là tương đối với toàn bộ tiến trình. Mặc dù Skype đã bật ASLR, nhưng do tệp lớn, hacker chỉ cần đọc và ghi tại địa chỉ cố định, có khả năng cao để đọc và ghi nội dung tệp Skype. Điều này giảm đáng kể độ khó trong việc hoàn thành chuỗi khai thác.

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

Bản vá PatchGap lần này không chỉ liên quan đến Vấn đề 1352549, mà việc công khai phương pháp vượt qua mới cũng đã giảm đáng kể độ khó khai thác các lỗ hổng như Vấn đề 1314616 và Vấn đề 1216437. Tin tặc gần như không cần nghiên cứu thêm để có thể khai thác hoàn toàn bất kỳ lỗ hổng nào liên quan đến việc rò rỉ uninitialized_oddball trước đây.

Tiết lộ độc quyền cách vượt qua HardenProtect của Chrome bằng cách lộ giá trị Sentinel

Trong V8 còn tồn tại nhiều giá trị Sentinel khác, chúng cũng có thể có những rủi ro bảo mật tương tự. Đề nghị trong các bài kiểm tra fuzz, nên xem xét thêm các giá trị Sentinel như %TheHole/uninitialized_Oddball vào biến, để phát hiện các nguyên lý khai thác tiềm năng khác.

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

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 hacker có thể khai thác triệt để. Chúng ta cần tiếp tục quan tâm và nghiên cứu lĩnh vực này để nâng cao sự an toàn của các phần mềm như Chrome.

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 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 bằng cách tiết lộ giá trị Sentinel

SENC4.9%
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
  • 3
  • Đăng lại
  • Chia sẻ
Bình luận
0/400
GateUser-00be86fcvip
· 7giờ trước
Ôi v8 lại lộ ra một lỗ hổng nhỏ nữa.
Xem bản gốcTrả lời0
Blockblindvip
· 8giờ trước
Lỗi này để lâu như vậy mà chưa sửa cũng thật đáng nể.
Xem bản gốcTrả lời0
ImpermanentSagevip
· 8giờ trước
Ôi chao, lại là lỗ hổng thực thi mã.
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)