Phân tích lỗ hổng nghiêm trọng của hệ thống Microsoft Windows: có thể gây ra rủi ro lớn về an ninh Web3
Tháng trước, bản vá bảo mật của Microsoft đã sửa một lỗ hổng tăng quyền trong 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 Windows sớm hơn và không thể kích hoạt trên Windows 11. Mặc dù các lỗ hổng như vậy đã tồn tại nhiều năm, nhưng trong bối cảnh các biện pháp bảo mật đang ngày càng được cải thiện, vẫn đáng để phân tích sâu hơn về cách mà các kẻ tấn công tiếp tục khai thác nó.
Phân tích này dựa trên hệ thống Windows Server 2016. Đây là một lỗ hổng zero-day chưa được công bố, cho phép hacker hoàn toàn kiểm soát hệ thống Windows. Một khi hệ thống bị kiểm soát, hậu quả có thể bao gồm rò rỉ thông tin cá nhân, sập hệ thống, mất dữ liệu, thiệt hại tài chính, v.v. Đối với người dùng Web3, khóa riêng có thể bị đánh cắp, tài sản kỹ thuật số bị chuyển nhượng. Xét trên phạm vi 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.
Thông qua việc phân tích bản vá, phát hiện vấn đề nằm ở cách xử lý số lượng tham chiếu đối tượng. Chú thích mã nguồn trước đây cho thấy, mã trước đó chỉ khóa đối tượng cửa sổ, mà không khóa đối tượng menu trong cửa sổ, dẫn đến việc đối tượng menu có thể bị tham chiếu sai.
Để tái hiện lỗ hổng này, chúng tôi đã xây dựng một cấu trúc menu lồng ghép nhiều lớp đặc biệt và thiết lập các thuộc tính cụ thể cho từng menu, nhằm vượt qua các kiểm tra liên quan của hệ thống. Điều quan trọng là xóa bỏ mối quan hệ tham chiếu giữa các menu khi trở về lớp người dùng, thành công giải phóng đối tượng menu mục tiêu. Như vậy, khi chức năng kernel lại tham chiếu đến menu này, nó sẽ truy cập vào một đối tượng không hợp lệ.
Trong quá trình khai thác thực tế, chúng tôi chủ yếu xem xét hai phương án: thực thi shellcode và sử dụng các phép đọc ghi nguyên thủy để sửa đổi địa chỉ token. Xét đến cơ chế bảo mật của các phiên bản Windows cao, chúng tôi đã chọn phương án thứ hai. Toàn bộ quá trình khai thác có thể được chia thành hai bước: trước tiên, khai thác lỗ hổng UAF để kiểm soát giá trị cbwndextra, sau đó dựa trên điều này để thiết lập các phép đọc ghi nguyên thủy ổn định.
Để đạt được cấu trúc bộ nhớ ổn định, chúng tôi đã thiết kế cấu trúc của ba đối tượng HWND liên tiếp, giải phóng đối tượng ở giữa và sử dụng đối tượng HWNDClass để chiếm chỗ. Các đối tượng HWND ở đầu và cuối được sử dụng để kiểm tra qua hệ thống và làm phương tiện đọc/ghi cuối cùng. Chúng tôi cũng xác định chính xác xem sự sắp xếp của các đối tượng có phù hợp với mong đợi hay không thông qua địa chỉ của các tay cầm kernel bị rò rỉ.
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 ý, SetClassLongPtr() để thực hiện ghi tùy ý. Ngoài các thao tác thay thế TOKEN, các thao tác ghi khác đều sử dụng đối tượng class của đối tượng cửa sổ đầu tiên.
Nói chung, mặc dù Microsoft đang tái cấu trúc mã lõi liên quan bằng Rust để cải thiện độ an toàn, nhưng đối với các hệ thống hiện có, 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 heap trên desktop. Trong tương lai, việc phát hiện bố cục bộ nhớ bất thường và thao tác cửa sổ có thể giúp phát hiện những lỗ hổng tương tự.
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.
10 thích
Phần thưởng
10
5
Chia sẻ
Bình luận
0/400
GasFeeCry
· 08-02 20:43
Win thua lỗ
Xem bản gốcTrả lời0
MiningDisasterSurvivor
· 08-02 20:43
Một đợt đồ ngốc nữa sắp bị chơi đùa với mọi người, giống như đợt khóa riêng bị đánh cắp năm 18.
Lỗ hổng Windows đe dọa an ninh Web3: Hacker có thể kiểm soát hệ thống để đánh cắp Khóa riêng
Phân tích lỗ hổng nghiêm trọng của hệ thống Microsoft Windows: có thể gây ra rủi ro lớn về an ninh Web3
Tháng trước, bản vá bảo mật của Microsoft đã sửa một lỗ hổng tăng quyền trong 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 Windows sớm hơn và không thể kích hoạt trên Windows 11. Mặc dù các lỗ hổng như vậy đã tồn tại nhiều năm, nhưng trong bối cảnh các biện pháp bảo mật đang ngày càng được cải thiện, vẫn đáng để phân tích sâu hơn về cách mà các kẻ tấn công tiếp tục khai thác nó.
Phân tích này dựa trên hệ thống Windows Server 2016. Đây là một lỗ hổng zero-day chưa được công bố, cho phép hacker hoàn toàn kiểm soát hệ thống Windows. Một khi hệ thống bị kiểm soát, hậu quả có thể bao gồm rò rỉ thông tin cá nhân, sập hệ thống, mất dữ liệu, thiệt hại tài chính, v.v. Đối với người dùng Web3, khóa riêng có thể bị đánh cắp, tài sản kỹ thuật số bị chuyển nhượng. Xét trên phạm vi 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.
Thông qua việc phân tích bản vá, phát hiện vấn đề nằm ở cách xử lý số lượng tham chiếu đối tượng. Chú thích mã nguồn trước đây cho thấy, mã trước đó chỉ khóa đối tượng cửa sổ, mà không khóa đối tượng menu trong cửa sổ, dẫn đến việc đối tượng menu có thể bị tham chiếu sai.
Để tái hiện lỗ hổng này, chúng tôi đã xây dựng một cấu trúc menu lồng ghép nhiều lớp đặc biệt và thiết lập các thuộc tính cụ thể cho từng menu, nhằm vượt qua các kiểm tra liên quan của hệ thống. Điều quan trọng là xóa bỏ mối quan hệ tham chiếu giữa các menu khi trở về lớp người dùng, thành công giải phóng đối tượng menu mục tiêu. Như vậy, khi chức năng kernel lại tham chiếu đến menu này, nó sẽ truy cập vào một đối tượng không hợp lệ.
Trong quá trình khai thác thực tế, chúng tôi chủ yếu xem xét hai phương án: thực thi shellcode và sử dụng các phép đọc ghi nguyên thủy để sửa đổi địa chỉ token. Xét đến cơ chế bảo mật của các phiên bản Windows cao, chúng tôi đã chọn phương án thứ hai. Toàn bộ quá trình khai thác có thể được chia thành hai bước: trước tiên, khai thác lỗ hổng UAF để kiểm soát giá trị cbwndextra, sau đó dựa trên điều này để thiết lập các phép đọc ghi nguyên thủy ổn định.
Để đạt được cấu trúc bộ nhớ ổn định, chúng tôi đã thiết kế cấu trúc của ba đối tượng HWND liên tiếp, giải phóng đối tượng ở giữa và sử dụng đối tượng HWNDClass để chiếm chỗ. Các đối tượng HWND ở đầu và cuối được sử dụng để kiểm tra qua hệ thống và làm phương tiện đọc/ghi cuối cùng. Chúng tôi cũng xác định chính xác xem sự sắp xếp của các đối tượng có phù hợp với mong đợi hay không thông qua địa chỉ của các tay cầm kernel bị rò rỉ.
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 ý, SetClassLongPtr() để thực hiện ghi tùy ý. Ngoài các thao tác thay thế TOKEN, các thao tác ghi khác đều sử dụng đối tượng class của đối tượng cửa sổ đầu tiên.
Nói chung, mặc dù Microsoft đang tái cấu trúc mã lõi liên quan bằng Rust để cải thiện độ an toàn, nhưng đối với các hệ thống hiện có, 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 heap trên desktop. Trong tương lai, việc phát hiện bố cục bộ nhớ bất thường và thao tác cửa sổ có thể giúp phát hiện những lỗ hổng tương tự.