Phân tích rủi ro bảo mật và khai thác từ việc rò rỉ Giá trị Sentinel của động cơ Chrome V8

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

Khám phá những rủi ro an ninh do sự rò rỉ Sentinel Value trong động cơ Chrome V8

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

Giá trị Sentinel trong V8

Tập tin roots.h trong mã nguồn V8 định nghĩa một lượng lớn đối tượng gốc, chúng được sắp xếp liền kề trong bộ nhớ. Một khi những đối tượng này bị rò rỉ vào JavaScript, điều đó có thể dẫn đến việc thoát khỏi sandbox.

Chúng ta có thể xác minh điều này 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 thay vì đối tượng TheHole.

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

Vượt qua bảo vệ HardenType

Việc sử dụng đối tượng Uninitialized Oddball có thể thực hiện việc đọc bộ nhớ tương đối tùy ý. Chìa khóa nằm ở hàm đọc JavaScript đã được tối ưu hóa, chỉ kiểm tra thuộc tính prop của đối tượng có đúng hay không, nhưng không kiểm tra giá trị với khóa là obj.prop. Điều này dẫn đến sự nhầm lẫn kiểu trong quá trình tính toán, từ đó thực hiện việc đọc tùy ý.

Phân tích mã lắp ráp đã được tối ưu hóa cho thấy, khi truyền uninitialized_oddball, chương trình sẽ trực tiếp tính toán độ lệch và đọc dữ liệu, mà không thực hiện kiểm tra kiểu. Phương pháp này dễ dàng xây dựng và khai thác hơn so với đối tượng TheHole.

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

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

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

Độc quyền tiết lộ 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 lộ giá trị Sentinel

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

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

Cảnh báo an ninh PatchGap

Ngoài việc chú ý đến các lỗ hổng lịch sử đã biết, chúng ta còn cần lưu ý đến những vấn đề mà nhà sản xuất âm thầm sửa chữa trong các thành phần cơ bản. Qua phân tích, phát hiện phần mềm Skype đến nay vẫn chưa khắc phục được lỗ hổng này. Trên nền tảng x86, do thiếu nén địa chỉ, phạm vi đọc và ghi tùy ý lớn hơn, gần như có thể đọc và ghi toàn bộ không gian tiến trình.

Lần này, PatchGap không chỉ liên quan đến Issue1352549, mà còn bao gồm Issue1314616 và Issue1216437 cùng các lỗ hổng tương tự khác. Sau khi phương pháp vượt qua mới được công khai, độ khó khai thác các lỗ hổng này đã giảm đáng kể, khiến kẻ tấn công gần như không cần nghiên cứu thêm để hoàn thành chuỗi khai thác hoàn chỉnh.

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

Tóm tắt

Bài viết này tóm tắt việc khám phá phương pháp đọc tùy ý thông qua việc rò rỉ Uninitialized Oddball. Trong V8 cũng tồn tại nhiều giá trị Sentinel khác, chúng cũng có thể dẫn đến các vấn đề tương tự. Điều này nhắc nhở chúng ta:

  1. Các lỗ hổng uninitialized_Oddball khác cũng có thể dẫn đến việc thoát khỏi sandbox V8.

  2. Vấn đề này có nên được coi là lỗ hổng bảo mật chính thức hay không vẫn còn gây tranh cãi.

  3. Xem xét việc thêm giá trị Sentinel như một biến trong kiểm tra mờ để phát hiện các phương pháp khai thác mới.

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

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

SENC0.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
  • 4
  • Chia sẻ
Bình luận
0/400
MoonBoi42vip
· 5giờ trước
Có chút hoảng sợ, lỗ hổng quá nhiều.
Xem bản gốcTrả lời0
SleepyArbCatvip
· 18giờ trước
Con mèo mệt mỏi đến nỗi chỉ có thể gõ mã...zZz
Xem bản gốcTrả lời0
ChainDetectivevip
· 18giờ trước
Ôi trời, lỗ hổng động cơ v8, ổn rồi.
Xem bản gốcTrả lời0
LadderToolGuyvip
· 18giờ trước
Sững sờ rồi lại chơi đùa với việc phá vỡ.
Xem bản gốcTrả lời0
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)