Hệ thống Microsoft Windows có lỗ hổng 0day nghiêm trọng, có thể đe dọa đến an ninh Web3
Gần đây, bản vá bảo mật được Microsoft phát hành đã khắc phục một lỗ hổng nâng quyền trên hệ thống Windows đang bị tin tặc khai thác. Lỗ hổng này chủ yếu tồn tại trong các phiên bản hệ thống Windows cũ, không thể kích hoạt trên Windows 11.
Lỗ hổng nâng cao quyền win32k này đã có từ lâu. Trong bối cảnh các biện pháp bảo mật ngày càng được cải thiện, cách mà kẻ tấn công tiếp tục khai thác lỗ hổng này rất đáng chú ý. Chúng tôi đã thực hiện phân tích sâu về lỗ hổng này trong môi trường Windows Server 2016.
Lỗ hổng 0day chỉ những lỗ hổng hệ thống chưa được công bố và sửa chữa, có thể bị tin tặc âm thầm khai thác, gây ra thiệt hại lớn. Thông qua lỗ hổng 0day ở cấp độ hệ thống Windows này, tin tặc có thể chiếm quyền kiểm soát hoàn toàn hệ thống.
Một khi hệ thống bị tin tặc kiểm soát, hậu quả bao gồm nhưng không giới hạn ở việc rò rỉ thông tin cá nhân, hệ thống sập, mất dữ liệu, tổn thất tài chính, cài đặt phần mềm độc hại, v.v. Đối với người dùng cá nhân, khóa riêng của tiền điện tử có thể bị đánh cắp, tài sản kỹ thuật số bị chuyển nhượng; từ một khía cạnh rộng hơn, lỗ hổng này thậm chí có thể ảnh hưởng đến toàn bộ hệ sinh thái Web3 hoạt động trên cơ sở hạ tầng Web2.
Bằng cách phân tích mã vá, chúng tôi phát hiện ra rằng vấn đề nằm ở chỗ số lượng tham chiếu của một đối tượng đã bị xử lý nhiều lần. Tham khảo các chú thích mã nguồn trước đây, có thể thấy rằng mã trước đây chỉ khóa đối tượng cửa sổ, không khóa đối tượng menu trong đối tượng cửa sổ, dẫn đến việc đối tượng menu có thể bị tham chiếu sai.
Chúng tôi đã xây dựng một cấu trúc menu lồng ghép đa lớp đặc biệt để kích hoạt lỗ hổng này. Bằng cách thiết kế cẩn thận các thuộc tính menu và mối quan hệ tham chiếu, có thể giải phóng thành công một đối tượng menu cụ thể khi một số hàm trả về lớp người dùng, dẫn đến việc mã tiếp theo tham chiếu đến đối tượng không hợp lệ.
Chìa khóa để khai thác lỗ hổng này là cách kiểm soát tham số cbwndextra với một giá trị rất lớn. Chúng tôi cuối cùng đã chọn cách bố trí bộ nhớ, kiểm soát dữ liệu bộ nhớ của các đối tượng liền kề để đạt được mục tiêu này.
Để xây dựng một lỗ hổng ổn định, chúng tôi đã thiết kế một cách bố trí bộ nhớ đặc biệt, bao gồm nhiều đối tượng cửa sổ và đối tượng lớp cửa sổ liên tiếp. Bằng cách giải phóng và chiếm lại các đối tượng cụ thể, có thể kiểm soát các tham số quan trọng.
Trong việc đọc và ghi nguyên thủy, chúng tôi sử dụng GetMenuBarInfo() để thực hiện đọc tùy ý, sử dụng SetClassLongPtr() để thực hiện ghi tùy ý. Ngoài việc thay thế thao tác ghi của TOKEN, các thao tác ghi khác đều được thực hiện bằng cách sử dụng đối tượng class của đối tượng cửa sổ đầu tiên với độ lệch.
Mặc dù Microsoft đang cố gắng tái cấu trúc mã liên quan đến win32k bằng Rust, nhưng đối với hệ thống Windows hiện tại, những lỗ hổng này vẫn gây ra mối đe dọa nghiêm trọng. Quá trình khai thác lỗ hổng tương đối đơn giản, chủ yếu dựa vào việc rò rỉ địa chỉ của các handle ngăn xếp trên desktop.
Chúng tôi suy đoán rằng việc phát hiện lỗ hổng này có thể nhờ vào công nghệ phát hiện độ bao phủ mã được cải thiện hơn. Trong tương lai, việc phát hiện các lỗ hổng loại này, ngoài việc chú trọng đến các điểm quan trọng trong hàm kích hoạt lỗ hổng, còn nên chú trọng đến việc phát hiện bố trí bộ nhớ bất thường và việc đọc/ghi dữ liệu.
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.
19 thích
Phần thưởng
19
8
Chia sẻ
Bình luận
0/400
ForumLurker
· 50phút trước
Lại sắp nâng cấp hệ thống rồi hả?
Xem bản gốcTrả lời0
SurvivorshipBias
· 3giờ trước
Chuyển sang mac rồi, tạm biệt!
Xem bản gốcTrả lời0
MEVHunter
· 8giờ trước
Một cơ hội Kinh doanh chênh lệch giá nữa không thể đến tay không.
Lỗ hổng 0day Windows đe dọa bảo mật tài sản Web3, chuyên gia giải thích nguyên lý tấn công
Hệ thống Microsoft Windows có lỗ hổng 0day nghiêm trọng, có thể đe dọa đến an ninh Web3
Gần đây, bản vá bảo mật được Microsoft phát hành đã khắc phục một lỗ hổng nâng quyền trên hệ thống Windows đang bị tin tặc khai thác. Lỗ hổng này chủ yếu tồn tại trong các phiên bản hệ thống Windows cũ, không thể kích hoạt trên Windows 11.
Lỗ hổng nâng cao quyền win32k này đã có từ lâu. Trong bối cảnh các biện pháp bảo mật ngày càng được cải thiện, cách mà kẻ tấn công tiếp tục khai thác lỗ hổng này rất đáng chú ý. Chúng tôi đã thực hiện phân tích sâu về lỗ hổng này trong môi trường Windows Server 2016.
Lỗ hổng 0day chỉ những lỗ hổng hệ thống chưa được công bố và sửa chữa, có thể bị tin tặc âm thầm khai thác, gây ra thiệt hại lớn. Thông qua lỗ hổng 0day ở cấp độ hệ thống Windows này, tin tặc có thể chiếm quyền kiểm soát hoàn toàn hệ thống.
Một khi hệ thống bị tin tặc kiểm soát, hậu quả bao gồm nhưng không giới hạn ở việc rò rỉ thông tin cá nhân, hệ thống sập, mất dữ liệu, tổn thất tài chính, cài đặt phần mềm độc hại, v.v. Đối với người dùng cá nhân, khóa riêng của tiền điện tử có thể bị đánh cắp, tài sản kỹ thuật số bị chuyển nhượng; từ một khía cạnh rộng hơn, lỗ hổng này thậm chí có thể ảnh hưởng đến toàn bộ hệ sinh thái Web3 hoạt động trên cơ sở hạ tầng Web2.
Bằng cách phân tích mã vá, chúng tôi phát hiện ra rằng vấn đề nằm ở chỗ số lượng tham chiếu của một đối tượng đã bị xử lý nhiều lần. Tham khảo các chú thích mã nguồn trước đây, có thể thấy rằng mã trước đây chỉ khóa đối tượng cửa sổ, không khóa đối tượng menu trong đối tượng cửa sổ, dẫn đến việc đối tượng menu có thể bị tham chiếu sai.
Chúng tôi đã xây dựng một cấu trúc menu lồng ghép đa lớp đặc biệt để kích hoạt lỗ hổng này. Bằng cách thiết kế cẩn thận các thuộc tính menu và mối quan hệ tham chiếu, có thể giải phóng thành công một đối tượng menu cụ thể khi một số hàm trả về lớp người dùng, dẫn đến việc mã tiếp theo tham chiếu đến đối tượng không hợp lệ.
Chìa khóa để khai thác lỗ hổng này là cách kiểm soát tham số cbwndextra với một giá trị rất lớn. Chúng tôi cuối cùng đã chọn cách bố trí bộ nhớ, kiểm soát dữ liệu bộ nhớ của các đối tượng liền kề để đạt được mục tiêu này.
Để xây dựng một lỗ hổng ổn định, chúng tôi đã thiết kế một cách bố trí bộ nhớ đặc biệt, bao gồm nhiều đối tượng cửa sổ và đối tượng lớp cửa sổ liên tiếp. Bằng cách giải phóng và chiếm lại các đối tượng cụ thể, có thể kiểm soát các tham số quan trọng.
Trong việc đọc và ghi nguyên thủy, chúng tôi sử dụng GetMenuBarInfo() để thực hiện đọc tùy ý, sử dụng SetClassLongPtr() để thực hiện ghi tùy ý. Ngoài việc thay thế thao tác ghi của TOKEN, các thao tác ghi khác đều được thực hiện bằng cách sử dụng đối tượng class của đối tượng cửa sổ đầu tiên với độ lệch.
Mặc dù Microsoft đang cố gắng tái cấu trúc mã liên quan đến win32k bằng Rust, nhưng đối với hệ thống Windows hiện tại, những lỗ hổng này vẫn gây ra mối đe dọa nghiêm trọng. Quá trình khai thác lỗ hổng tương đối đơn giản, chủ yếu dựa vào việc rò rỉ địa chỉ của các handle ngăn xếp trên desktop.
Chúng tôi suy đoán rằng việc phát hiện lỗ hổng này có thể nhờ vào công nghệ phát hiện độ bao phủ mã được cải thiện hơn. Trong tương lai, việc phát hiện các lỗ hổng loại này, ngoài việc chú trọng đến các điểm quan trọng trong hàm kích hoạt lỗ hổng, còn nên chú trọng đến việc phát hiện bố trí bộ nhớ bất thường và việc đọc/ghi dữ liệu.