安全でないライブラリのロードにより、リモートでコードが実行される という seurity advisory が出ています。まあ、ここ読んでいるような人にとってはすでに知っていることだと思いますが。
ちょっと興味があったので、いろいろ情報あさっていましたが、正確なところはわかりませんがどうやら下記のようなことじゃないかと。
LoadLibrary や LoadLibraryEx 等を利用して DLL を動的に load する場合、絶対 path を指定しないと Dynamic-Link Library Search Order の順序に従って DLL が検索されます。
この検索先の中に current directory が含まれるのがミソで、load する予定の DLL と名前が完全に一致する DLL が存在するとそいつが読み込まれてしまう。
直接呼ばれる関数に攻撃 code を仕込んでおけばいいわけですが、Win32 DLL には DllMain という DLL を load されるときに自動的に実行される entry point があるので、こいつを使えばもっとお手軽。
ここまでは全然新しくない話なんですが、今回出てきたのは current directory が remote (SMB や WebDav) 上だった場合、remote に file を配置しておくだけで攻撃が可能ということ。
個人的には application が file を開くときに current directory を変更して開くなんて考えずらいと思っていましたが、この攻撃が可能な application は 40 以上存在するとのことなので。
Update: 40 Windows apps contain critical bug, says researcher
この問題への対応としては、Dynamic-Link Library Security にまとめられています。
基本的な対応としては application code の修正です。ということで、DLL を dynamic load している application の開発者は について既存の code に問題が無いかご確認ください。
なお、DLL の検索対象から current directory を除去する方法については WebDav や SMB のみ除去するといった設定が可能になる patch が提供されています。
DLL 検索パス アルゴリズムを制御する新しい CWDIllegalInDllSearch レジストリ エントリについて
WebDav のみ SMB のみ不可といった制限も可能なので patch を適用した上で設定を変更しておいたほうがよいでしょう。WebDav, SMB 不可程度であればほぼ影響は無いでしょうから。