マイクロソフトセキュリティ情報 MS10-065 の解析
Microsoft インターネット インフォメーション サービス (IIS) の脆弱性により、リモートでコードが実行される (2267960)
の解析結果です。
SUB_L70E45303: mov edi,edi push esi mov esi,ecx test byte ptr [esi],02h jz L70E45316 push [esi+08h] call SUB_L70E19A4F pop ecx L70E45316: mov esi,[esi+04h] test esi,esi jz L70E4532A mov ecx,esi call SUB_L70E45303 push esi call SUB_L70E32813 L70E4532A: pop esi retn |
旧コード1(XPSP3)
SUB_L70E452D2: test byte ptr [ecx],02h jz L70E452E0 push [ecx+08h] call SUB_L70E19A2F pop ecx L70E452E0: retn |
新コード1(XPSP3)
ばっさり、再帰処理の部分が省かれました。
恐らくスタックオーバーフローを防ぐため、コマンド解析を端折ったんじゃないでしょうか?
SUB_L70E45356: mov edi,edi push esi mov esi,ecx mov ecx,[esi+28h] test ecx,ecx mov dword ptr [esi],L70E1690C jz L70E4536F push 00000001h call SUB_L70E45331 L70E4536F: mov ecx,esi pop esi jmp SUB_L70E27884 |
旧コード2(XPSP3)
SUB_L70E45543: mov edi,edi push esi mov esi,ecx mov ecx,[esi+28h] test ecx,ecx mov dword ptr [esi],L70E168F0 jz L70E45567 push edi L70E45556: mov edi,[ecx+04h] push 00000001h call SUB_L70E452E6 test edi,edi mov ecx,edi jnz L70E45556 pop edi L70E45567: mov ecx,esi pop esi jmp SUB_L70E2788A |
新コード2(XPSP3)
こちらはコードが若干追加されています。
SUB_L749615A1: push esi mov esi,ecx mov eax,[esi] shr eax,1 test al,01h jz L749615B8 push 00000000h push 00000000h push [esi+08h] call SUB_L7494F719 L749615B8: mov esi,[esi+04h] test esi,esi jz L749615CC mov ecx,esi call SUB_L749615A1 push esi call SUB_L7494FBCE L749615CC: pop esi retn |
旧コード1(W2K/KB917537)
SUB_L749615A1: push esi mov esi,ecx mov eax,[esi] shr eax,1 test al,01h jz L749615B8 push 00000000h push 00000000h push [esi+08h] call SUB_L7494F719 L749615B8: pop esi retn 0x14 dup(0x90) |
新コード1(W2K)
SUB_L 749616AF: push esi mov esi,ecx push edi mov edi,[esi+28h] mov dword ptr [esi],L74937190 test edi,edi jz L749616CD mov ecx,edi call SUB_L749615A1 push edi call SUB_L7494FBCE L749616CD: mov ecx,esi call SUB_L74945A86 pop edi pop esi retn |
旧コード2(W2K/KB917537)
SUB_L749616AF: push esi mov esi,ecx push edi mov edi,[esi+28h] mov dword ptr [esi],L74937190 L1$: test edi,edi jz L749616CD mov ecx,edi call SUB_L749615A1 push edi call SUB_L7494FBCE mov edi,DWORD PTR[edi+4] jmp L1$ L749616CD: mov ecx,esi call SUB_L74945A86 pop edi pop esi retn |
新コード2(W2K)
と、こうしたいところですが
L1$PRE: call SUB_L7494FBCE mov edi,DWORD PTR[edi+4] jmp L1$ ;------------------------------------------------------ SUB_L749616AF: push esi mov esi,ecx push edi mov edi,[esi+28h] mov dword ptr [esi],L74937190 L1$: test edi,edi jz L749616CD mov ecx,edi call SUB_L749615A1 push edi jmp L1$PRE L749616CD: mov ecx,esi call SUB_L74945A86 pop edi pop esi retn |
新コード3(W2K)
コードエリアに余裕がないので、こうなります。
参考までに、ベースにしたのは、 asp.dll 5.0.2195.7084 です。
なお、セキュリティパッチは、Windows Legacy Update から入手可能です。
Comments