マイクロソフトセキュリティ情報 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 から入手可能です。

関連記事:
9月の Windows Update とWindows 2000/XP SP2

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です