Уразливість системи Windows від Microsoft може призвести до ризиків безпеки Web3
У минулому місяці в безпековому патчі, випущеному компанією Microsoft, містився експлуатований вразливість підвищення привілеїв win32k. Здається, ця вразливість існує лише в ранніх версіях Windows, її не можна активувати в Windows 11.
Використання таких вразливостей має давню історію. На фоні постійного вдосконалення нових заходів безпеки, ми сподіваємося проаналізувати, як зловмисники можуть продовжувати експлуатувати цю вразливість. Процес аналізу виконувався в середовищі Windows Server 2016.
Цей нульовий експлойт не був опублікований і виправлений, може бути використаний зловмисно без виявлення, має величезну руйнівну силу. Завдяки цьому вразливості хакери можуть отримати повний контроль над системою Windows. Це може призвести до крадіжки особистої інформації, збоїв системи, втрати даних, фінансових втрат, впровадження шкідливого програмного забезпечення та інших серйозних наслідків. Для користувачів Web3 це може призвести до крадіжки приватних ключів, а цифрові активи можуть бути переведені. З більш широкої точки зору, ця вразливість навіть може вплинути на всю екосистему Web3, що працює на базі інфраструктури Web2.
Аналізуючи патч, ми виявили, що проблема полягає в тому, що підрахунок посилань на об'єкт був оброблений зайвий раз. win32k є старішим кодом, ранні коментарі до виходу коду показують, що старий код блокував лише об'єкт вікна, не блокуючи об'єкт меню в об'єкті вікна, що могло призвести до неправильного посилання на об'єкт меню.
При реалізації концепції підтвердження (PoC), ми виявили, що передане xxxEnableMenuItem() меню зазвичай вже заблоковано у верхньому функціоналі, неясно, який об'єкт меню потрібно захистити. Подальший аналіз показав, що меню, яке повертає функція MenuItemState, може бути основним меню вікна, а також підменю або навіть підпідменю.
Щоб активувати вразливість, ми сконструювали спеціальну чотирирівневу структуру меню та встановили деякі специфічні умови для проходження перевірки функції xxxEnableMenuItem. Коли xxxRedrawTitle повертається до користувацького рівня, ми видаляємо відносини посилання меню C та B, успішно звільнивши меню C. Врешті-решт, коли функція xxxEnableMenuItem повертається до xxxRedrawTitle, об'єкт меню C, на який нам потрібно було посилання, вже недійсний.
Під час розробки експлуатації (Exp) ми в основному розглядали два варіанти: виконання shellcode та використання операцій читання/запису для зміни адреси токена. Враховуючи доцільність, ми вибрали останній варіант. Увесь процес експлуатації можна розділити на два етапи: як використати вразливість UAF для контролю значення cbwndextra та як реалізувати стабільні операції читання/запису.
Ми через ретельно спроектовану розкладку пам'яті використовуємо об'єкт імені вікна класу WNDClass, що займає звільнений об'єкт меню. Через специфічні операції в функції xxxRedrawWindow ми реалізували перше записування даних.
https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
У реалізації читання та запису примітивів ми використовуємо GetMenuBarInfo)( для випадкового читання, SetClassLongPtr)( для випадкового запису. Крім операції заміни TOKEN, інші записи здійснюються за допомогою класу першого об'єкта вікна через зміщення.
![Numen ексклюзив: вразливість Microsoft 0day може знищити Web3 гру на системному+фізичному рівні])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
Хоча вразливість win32k існує вже давно, Microsoft намагається переписати відповідний код ядра за допомогою Rust, і в майбутніх системах подібні вразливості можуть бути усунуті. Процес експлуатації цієї вразливості відносно простий, основна складність полягає в тому, як контролювати перший запис. Ця вразливість серйозно залежить від витоку адреси дескриптора купи робочого столу, що все ще є безпековою загрозою для застарілих систем.
Ми припускаємо, що виявлення цієї вразливості могло бути зумовлене більш досконалим моніторингом покриття коду. Для виявлення експлуатації вразливостей, крім моніторингу ключових точок, цілеспрямоване виявлення аномальної пам'яті та читання/запису даних у вікні також може допомогти виявити такі вразливості.
![Numen ексклюзив: 0day уразливість Microsoft може зруйнувати Web3 гру на системному + фізичному рівні])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Вразливості системи Windows загрожують безпеці активів Web3 Закритий ключ може бути вкрадений
Уразливість системи Windows від Microsoft може призвести до ризиків безпеки Web3
У минулому місяці в безпековому патчі, випущеному компанією Microsoft, містився експлуатований вразливість підвищення привілеїв win32k. Здається, ця вразливість існує лише в ранніх версіях Windows, її не можна активувати в Windows 11.
Використання таких вразливостей має давню історію. На фоні постійного вдосконалення нових заходів безпеки, ми сподіваємося проаналізувати, як зловмисники можуть продовжувати експлуатувати цю вразливість. Процес аналізу виконувався в середовищі Windows Server 2016.
Цей нульовий експлойт не був опублікований і виправлений, може бути використаний зловмисно без виявлення, має величезну руйнівну силу. Завдяки цьому вразливості хакери можуть отримати повний контроль над системою Windows. Це може призвести до крадіжки особистої інформації, збоїв системи, втрати даних, фінансових втрат, впровадження шкідливого програмного забезпечення та інших серйозних наслідків. Для користувачів Web3 це може призвести до крадіжки приватних ключів, а цифрові активи можуть бути переведені. З більш широкої точки зору, ця вразливість навіть може вплинути на всю екосистему Web3, що працює на базі інфраструктури Web2.
Аналізуючи патч, ми виявили, що проблема полягає в тому, що підрахунок посилань на об'єкт був оброблений зайвий раз. win32k є старішим кодом, ранні коментарі до виходу коду показують, що старий код блокував лише об'єкт вікна, не блокуючи об'єкт меню в об'єкті вікна, що могло призвести до неправильного посилання на об'єкт меню.
При реалізації концепції підтвердження (PoC), ми виявили, що передане xxxEnableMenuItem() меню зазвичай вже заблоковано у верхньому функціоналі, неясно, який об'єкт меню потрібно захистити. Подальший аналіз показав, що меню, яке повертає функція MenuItemState, може бути основним меню вікна, а також підменю або навіть підпідменю.
Щоб активувати вразливість, ми сконструювали спеціальну чотирирівневу структуру меню та встановили деякі специфічні умови для проходження перевірки функції xxxEnableMenuItem. Коли xxxRedrawTitle повертається до користувацького рівня, ми видаляємо відносини посилання меню C та B, успішно звільнивши меню C. Врешті-решт, коли функція xxxEnableMenuItem повертається до xxxRedrawTitle, об'єкт меню C, на який нам потрібно було посилання, вже недійсний.
Під час розробки експлуатації (Exp) ми в основному розглядали два варіанти: виконання shellcode та використання операцій читання/запису для зміни адреси токена. Враховуючи доцільність, ми вибрали останній варіант. Увесь процес експлуатації можна розділити на два етапи: як використати вразливість UAF для контролю значення cbwndextra та як реалізувати стабільні операції читання/запису.
Ми через ретельно спроектовану розкладку пам'яті використовуємо об'єкт імені вікна класу WNDClass, що займає звільнений об'єкт меню. Через специфічні операції в функції xxxRedrawWindow ми реалізували перше записування даних.
https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
У реалізації читання та запису примітивів ми використовуємо GetMenuBarInfo)( для випадкового читання, SetClassLongPtr)( для випадкового запису. Крім операції заміни TOKEN, інші записи здійснюються за допомогою класу першого об'єкта вікна через зміщення.
![Numen ексклюзив: вразливість Microsoft 0day може знищити Web3 гру на системному+фізичному рівні])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
Хоча вразливість win32k існує вже давно, Microsoft намагається переписати відповідний код ядра за допомогою Rust, і в майбутніх системах подібні вразливості можуть бути усунуті. Процес експлуатації цієї вразливості відносно простий, основна складність полягає в тому, як контролювати перший запис. Ця вразливість серйозно залежить від витоку адреси дескриптора купи робочого столу, що все ще є безпековою загрозою для застарілих систем.
Ми припускаємо, що виявлення цієї вразливості могло бути зумовлене більш досконалим моніторингом покриття коду. Для виявлення експлуатації вразливостей, крім моніторингу ключових точок, цілеспрямоване виявлення аномальної пам'яті та читання/запису даних у вікні також може допомогти виявити такі вразливості.
![Numen ексклюзив: 0day уразливість Microsoft може зруйнувати Web3 гру на системному + фізичному рівні])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(