Googleが公開したWindowsの未パッチ脆弱性について
グーグル、Windowsの未パッチ脆弱性情報を公開--「活発に利用されている」 - CNET Japan
これは、GWL_STYLEをWS_CHILDに設定したウィンドウハンドル上のGWLP_IDインデックスに対して、win32k.sysの NtSetWindowLongPtr()システムコールを実行することで引き起こされる。『Google Chrome』のサンドボックスは『Windows 10』上でのWin32kロックダウン緩和ポリシーを用いてwin32k.sysに対するシステムコールをブロックして、サンドボックスを回避するこの脆 弱性の悪用を防止している」 |
これについて質問があったので解説します。
まず、win32k.sysには NtSetWindowLongPtr と言う関数の実体はありません。
恐らくこれ、 NtUserSetWindowLongPtr の事だと思うのですが、プログラム上では
SetWindowLongPtr としてuser32.dll からコールされます。
ところが、32bit 版 Windows にはこの関数はなく、 SetWindowLongがコールされます。
実体があるのは 64bit 版の Windows だけです。
でこの SetWindowLongPtr 経由でwin32k.sys の NtUserSetWindowLongPtr が呼び出されるのですが、
この時のパラメータの64bitポインタ周りで、64bit 版登場時に結構問題があったのを思い出します。
SetWindowLongPtr にGWLP_IDを渡すことコントロールIDが設定できるのですが、
独自実装した 64bit版の Windows のチェック関数に不備があるのではないかと思っています。
サンドボックスや仮想OSなどのコンポーネントで影響があると思われる脆弱性で、それ以外では危険は少ないのではないでしょうか。
MSが11月8日にパッチをリリースするっていうコメントを出したようですね。
正直11月8日のパッチで全部治るかってゆうのは、自分的には疑問符がつきますね…ビスタから64bitに大きく舵を切ったのは評価できると思いますが切るなら切るでちゃんとしてよって感じですね…MSさんは。(今の更新不具合等いろいろ)