Lỗ hổng rò rỉ giá trị Sentinel của động cơ V8: Phân tích phương pháp thoát khỏi sandbox Chrome mới

Thảo luận về các mối nguy hiểm về an ninh của Sentinel Value 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 như một điều kiện dừng trong vòng lặp hoặc thuật toán đệ quy. Trong mã nguồn Chrome có rất nhiều giá trị Sentinel. Nghiên cứu gần đây cho thấy, việc rò rỉ các đối tượng giá trị Sentinel cụ thể có thể dẫn đến việc thực thi mã tùy ý trong sandbox của Chrome.

Bài viết này sẽ thảo luận về một đối tượng giá trị Sentinel mới: Uninitialized Oddball. Phương pháp vượt qua này lần đầu tiên xuất hiện trong một báo cáo lỗ hổng, được cung cấp mã đầy đủ bởi các nhà nghiên cứu an ninh. Đáng chú ý, phương pháp này vẫn có thể được sử dụng trong phiên bản mới nhất của V8 và chưa được khắc phục.

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

  1. Trong một lỗ hổng CVE nào đó, poc ban đầu chính là rò rỉ oddball chưa được khởi tạo nội bộ.

  2. Trong một báo cáo lỗ hổng CVE khác, các nhà nghiên cứu đã trực tiếp tiết lộ UninitializedOddball, mặc dù khi đó chuỗi khai thác chưa hoàn chỉnh, nhưng đã cho thấy mối đe dọa an ninh.

  3. Trong báo cáo lỗ hổng gần đây đã cung cấp phương pháp khai thác đầy đủ.

Các trường hợp này minh họa tính phổ biến và mức độ nghiêm trọng của vấn đề này. Tính đến thời điểm hiện tại, một phần mềm nhắn tin vẫn chưa khắc phục được lỗ hổng này.

Ứng dụng của giá trị Sentinel trong V8

Trong mã nguồn V8, định nghĩa nhiều đối tượng gốc, chúng được sắp xếp liền kề nhau trong bộ nhớ. Một khi các đối tượng gốc không nên bị lộ ra bị lộ cho JavaScript, có thể thực hiện việc thực thi mã tùy ý trong không gian sandbox.

Để xác minh tính hiệu quả của phương pháp này trong V8 mới nhất, chúng ta có thể sửa đổi các hàm native của V8 để làm lộ Uninitialized Oddball ra JavaScript.

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

Chúng ta có thể xây dựng mã, khi một hàm trả về UninitializedOddball, thực hiện việc đọc tùy ý tương đối. Phân tích mã hợp ngữ đã tối ưu cho thấy, hàm chỉ kiểm tra xem thuộc tính của đối tượng có đúng hay không, nhưng không kiểm tra giá trị tương ứng của thuộc tính, trực tiếp tính toán độ lệch theo ngữ nghĩa JavaScript để lấy phần tử mảng, từ đó gây ra sự nhầm lẫn kiểu, thực hiện việc đọc tùy ý.

Tiết lộ độc quyền cách vượt qua Chrome v8 HardenProtect thông qua việc 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

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

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

Độc quyền tiết lộ cách vượt qua Chrome v8 HardenProtect bằng cách 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

Tương tự, việc ghi ngẫu nhiên cũng có thể được xây dựng bằng phương pháp tương tự. Đề xuất khi tối ưu hóa hàm trả về phần tử mảng, hãy thêm kiểm tra mảng map để tránh tính toán trực tiếp giá trị trả về của độ dịch.

Nhắc nhở về nguy cơ an toàn

Phân tích cho thấy, một phần mềm truyền thông hiện vẫn chưa khắc phục được lỗ hổng này. Trên hệ thống x86, do thiếu nén địa chỉ, việc đọc và ghi tùy ý diễn ra trực tiếp tương ứng với toàn bộ tiến trình. Mặc dù đã kích hoạt ASLR, nhưng do tệp quá lớn, vẫn có khả năng cao để đọc và ghi vào nội dung quan trọng. Kết hợp với các phương pháp phân tích PE, có thể hoàn thành chuỗi khai thác đầy đủ trong thời gian ngắn.

Lỗ hổng an ninh lần này không chỉ liên quan đến một lỗ hổng đơn lẻ, mà còn làm giảm đáng kể độ khó khai thác của một số lỗ hổng tương tự trước đó. Tin tặc gần như không cần nghiên cứu thêm để thực hiện khai thác hoàn chỉnh, bao gồm tất cả các lỗ hổng tương tự đã báo cáo trước đó.

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 thảo luận ngắn gọn về phương pháp thực hiện đọc tùy ý thông qua việc tiết lộ Uninitialized Oddball. Trong V8 còn nhiều giá trị Sentinel khác, có thể tồn tại những lỗ hổng bảo mật tương tự. Điều này cho chúng ta một số gợi ý:

  1. Liệu việc lộ giá trị Sentinel khác có thể dẫn đến việc thoát khỏi sandbox V8 không?

  2. Những vấn đề như vậy có nên được coi là lỗ hổng bảo mật chính thức không?

  3. Có cần thiết phải thêm các biến liên quan đến giá trị Sentinel trong thử nghiệm fuzz để phát hiện nhiều vấn đề tiềm ẩn hơn không?

Dù sao đi nữa, những vấn đề như vậy có thể rút ngắn đáng kể chu kỳ mà tin tặc đạt được 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ỉ Sentinel Value

Xem bản gốc
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Phần thưởng
  • 4
  • Chia sẻ
Bình luận
0/400
ArbitrageBotvip
· 07-11 10:52
Google làm sao vậy, mà có thể xảy ra lỗi này.
Xem bản gốcTrả lời0
SelfSovereignStevevip
· 07-10 20:07
Bảo vệ trình duyệt ở đâu?
Xem bản gốcTrả lời0
StablecoinArbitrageurvip
· 07-10 19:58
hmm một lỗ hổng khác với 99.8% khả năng được sửa trước khi có bất kỳ cơ hội arb có ý nghĩa nào...
Xem bản gốcTrả lời0
DefiPlaybookvip
· 07-10 19:45
Trình duyệt cũng có airdrop sao? Lần này có thể thu hoạch không?
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)