KERBEROS.DLLの脆弱性 MS11-013の解析
続いて
マイクロソフト セキュリティ情報 MS11-013 - 緊急
の解析をしたので報告です。
この修正は以下の内容になっていました。
・ SupportsChannelBinding 関数の追加
・ Channel Binding の実装。
・ PrivChecksum on the PAC is not keyed の判定。
・ Checksum on the PAC is not keyed の判定。
ChannelBinding については
lsasrv.dll の LsaIIsSuppressChannelBindingInfo と LsaIIsChannelBindingEnabled
を参照してるんですが、あいにく Windows 2000にはこの機能が無いため機能追加はしない方向で脆弱性だけ修正することにしました。
L7828F5F4: call jmp_cryptdll.dll!CDLocateCheckSum mov esi,eax test esi,esi jl L7828F90A mov ecx,[ebp-04h] cmp dword ptr [ecx+04h],00000014h ja L7828F905 lea eax,[ebp-08h] push eax mov eax,[ebp+14h] push 00000011h push [eax+04h] push [eax+08h] call [ecx+1Ch] |
修正前1
L7828F5F4: call jmp_cryptdll.dll!CDLocateCheckSum mov esi,eax test esi,esi jl L7828F90A mov ecx,[ebp-04h] cmp dword ptr [ecx+04h],00000014h ja L7828F905 test dword ptr [ecx+08h],00000002h jnz L7828F610 mov esi,80080342h jmp L7828F90A L7828F610: lea eax,[ebp-08h] push eax mov eax,[ebp+14h] push 00000011h push [eax+04h] push [eax+08h] call [ecx+1Ch] |
修正後1
L78286004: mov eax,00004000h test eax,edx jz L78286010 or [ebp-08h],eax L78286010: mov eax,00000400h mov esi,00000800h test eax,edx jz L7828602F test esi,edx jz L7828602C mov esi,80090302h jmp L782862F5 |
修正前2
push 00000001h push eax lea eax,[ebp-2Ch] push eax call [ntdll.dll!RtlEqualUnicodeString] test al,al jz L7828F8FE mov eax,[ebp-3Ch] push [eax+04h] push [eax+08h] push [ebp+20h] call SUB_L782AA27C mov esi,eax test esi,esi jl L7828F90A cmp byte ptr [ebp+1Ch],00h jz L7828F90A lea eax,[ebp-70h] push eax mov eax,[L782B0990] call [eax+40h] mov esi,eax test esi,esi jl L7828F90A cmp byte ptr [ebp-60h],00h jnz L7828F90A lea eax,[ebp-9ch] push eax mov eax,[ebp-20h] push [eax] call jmp_cryptdll.dll!CDLocateCheckSum test eax,eax jl L7828F790 mov eax,[ebp-9ch] test dword ptr [eax+08h],00000002h jnz L7828F790 L71C65F43: mov esi,C000000Dh L71C65F48: lea eax,[ebp-2ch] push eax call SUB_L7829C009 cmp dword ptr [ebp-08h],00000000h jz L71C65F68 mov eax,[ebp-04h] test eax,eax jz L71C65F68 lea ecx,[ebp-08h] push ecx call [eax+18h] L71C65F68: test ebx,ebx jz L71C65F72 push ebx call KerbFree L71C65F72: cmp dword ptr [ebp-18h],00000000h jz L71C65F83 push [ebp-18h] mov eax,[L782B0990] call [eax+5Ch] L71C65F83: mov eax,esi jmp L7828F954 L7828F790: mov eax,[ebp-24h] mov ecx,[ebp-04h] mov esi,[ebp+08h] mov eax,[eax+04h] mov ecx,[ecx+04h] sub eax,00000004h スタックフレームの拡張 98h->9ch |
修正後2
コードの埋め込みがちょっと大変なのでリリースはしばらくお待ちください。
Comments