2017年11月15日

マイクロソフト CVE-2017-11882 を手作業でパッチを当てた? 調べてみたところ

「Microsoft Office」に17年前からの脆弱性が発覚、月例パッチで修正 - CNET Japan
0patch Blog: Did Microsoft Just Manually Patch Their Equation Editor Executable? Why Yes, Yes They Did. (CVE-2017-11882)

Microsoft が Office 2000から組み込んでいる数式エディタ  EQNEDT32.EXE に脆弱性が見つかりました

0Patch Blogによると、Microsoftが 17年前のバイナリを1回も更新せずにいて、それに手作業でパッチを当てた理由は「Microsoft がやらかした(ソース紛失)」だからだといっています。

さて、本当にそんなことがあるのか調べてみました








link1
まず、冒頭
BFCE0A3A -> 88FA9159 リンク日時
74710800 -> 092d0900 チェックサム
0000 -> 0040 DllCharacteristics IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE (ASLR が有効)
481a->e83e 証明書テーブルサイズが大きくなった

          not    ecx
          sub    edi,ecx
          mov    eax,ecx
          mov    edx,edi

          lea    edi,[ebp-28h]
          mov    esi,edx
          shr    ecx,02h
          rep movsd
          mov    ecx,eax
          and    ecx,00000003h
          rep movsb
          lea    eax,[ebp-28h]
          push    eax

          not    ecx
          sub    edi,ecx
          cmp    ecx,00000021h
          jc     L00411656
          mov    ecx,00000020h
 L00411656:

          mov    esi,edi
          lea    edi,[ebp-28h]
          rep movsb
          xor    eax,eax
          stosb
          nop

          lea    eax,[ebp-28h]
          push    eax
処理速度を落として、赤字の処理をするようになっています ・ω・!
(水色は同じ処理)

          not    ecx
          sub    edi,ecx
          cmp    ecx,00000021h
          jc     L004116C7
          mov    ecx,00000020h
 L004116C7:

          mov    esi,edi
          lea    edi,[ebp-00000088h]
          rep movsb
          xor    eax,eax
          stosb
          nop

          movsx    eax,[ebp-43h]
          cmp    eax,00000001h
少し後ろに同じ処理の修正があります

          not    ecx
          sub    edi,ecx
          cmp    ecx,00000021h
          jc     L00411795
          mov    ecx,00000020h
 L00411795:

          mov    esi,edi
          mov    edi,[ebp+10h]
          rep movsb
          xor    eax,eax
          stosb
          nop

          mov    eax,00000001h
          jmp    L00411870

          not    ecx
          sub    edi,ecx
          cmp    ecx,00000021h
          jc     L00411809
          mov    ecx,00000020h
 L00411809:
          mov    esi,edi
          mov    edi,[ebp+10h]
          rep movsb
          xor    eax,eax
          stosb
          nop

          mov    eax,00000001h
          jmp    L00411870

          not    ecx
          sub    edi,ecx
          cmp    ecx,00000021h
          jc     L00411854
          mov    ecx,00000020h
 L00411854:
          mov    esi,edi
          mov    edi,[ebp+10h]
          rep movsb
          xor    eax,eax
          stosb
          nop

          mov    eax,00000001h
          jmp    L00411870

          not    ecx
          sub    edi,ecx
          mov    eax,ecx
          mov    edx,edi
          mov    edi,[ebp-04h]
          mov    esi,edx
          shr    ecx,02h
          rep movsd
          mov    ecx,eax
          and    ecx,00000003h
          rep movsb

          mov    ax,[ebp+0Ch]

          not    ecx
          sub    edi,ecx
          cmp    ecx,00000021h
          jc     L00421A37
          mov    ecx,00000020h
 L00421A37:

          mov    esi,edi
          mov    edi,[ebp-04h]
          rep movsb
          xor    eax,eax
          stosb
          nop

          mov    ax,[ebp+0Ch]


6箇所同じ修正がありました。

なにやってるかというと、バッファーオーバーフロー時に32バイトに丸めています

 L00416503:
          mov    eax,[ebp+08h]
          mov    [ebp-04h],eax
          inc    [ebp+08h]
          call    SUB_L00416352
          mov    ecx,[ebp-04h]
          mov    [ecx],al
          mov    eax,[ebp-04h]
          movsx    eax,[eax]
          test    eax,eax
          jz     L00416529
          jmp    L00416503
 L00416529:
          mov    eax,[ebp+08h]
          mov    byte ptr [eax],00h


          mov    edi,[ebp+08h]
          mov    ecx,[ebp+0Ch]
          test    ecx,ecx
          jz     L00416521

 L0041650D:
          xchg    ebx,ecx
          call    SUB_L00416352
          stosb
          test    al,al
          jz     L00416521
          xchg    ecx,ebx
          loop    L0041650D
          dec    edi
          xor    eax,eax
          stosb
 L00416521:
こっちは、関数に最大バッファーサイズを設けて、超えた場合関数が強制的に終了するように変更されています

          lea    eax,[ebp-000001FCh]
          push    eax
          call    SUB_L004164FA
          add    esp,00000004h
          call    SUB_L00416569
          push    eax
          lea    eax,[ebp-000001FCh]
          push    eax
          call    SUB_L00418544
          add    esp,00000008h
          jmp    L00418318
          jmp    L00418318

          push    000001F4h
          lea    eax,[ebp-000001FCh]
          push    eax
          call    SUB_L004164FA
          add    esp,00000008h

          call    SUB_L00416569
          push    eax
          lea    eax,[ebp-000001FCh]
          push    eax
          call    SUB_L00418544
          add    esp,00000008h
          jmp    L00418318
よび出し元1

          movzx    ax,al
          mov    [ebp-00000108h],ax
          call    SUB_L00416352
          movzx    ax,al
          mov    [ebp-0000010Ch],ax
          lea    eax,[ebp-00000104h]
          push    eax
          call    SUB_L004164FA
          add    esp,00000004h
          mov    eax,[ebp-0000010Ch]
          push    eax
          lea    eax,[ebp-00000104h]
          push    eax
          call    SUB_L004214C6
          add    esp,00000008h
          movsx    ecx,[ebp-00000108h]
          mov    [L0045ABE6+ecx*2],ax

          movzx    ebx,al
          call    SUB_L00416352
          movzx    ax,al
          mov    [ebp-0000010Ch],ax
          push    00000100h
          lea    eax,[ebp-00000104h]
          push    eax
          call    SUB_L004164FA
          add    esp,00000008h
          mov    eax,[ebp-0000010Ch]
          push    eax
          lea    eax,[ebp-00000104h]
          push    eax
          call    SUB_L004214C6
          add    esp,00000008h
          mov    ecx,ebx
          nop dword [dword rax + rax + 0x00000000]
  // 何もしない
          mov    [L0045ABE6+ecx*2],ax
よび出し元2

8バイトの何もしない命令が埋め込まれてるのは笑った ・ω・




後は、リソーステーブルが少しいじられてバージョン情報などが書き換わっているのと
電子署名のバイナリデータで差異があることぐらいです


link2

バイナリエディタで操作した決定的な証拠はこれです

なんと、エクスポートテーブルがバイナリとして書き出された日時が 2000/11/9 のままなのです ・ω・

link3
リソーステーブルもそうですね ・ω・ニヤソ



blackwingcat at 08:30│Comments(2) | このエントリーをはてなブックマークに追加 mixiチェック |
このエントリーをはてなブックマークに追加
技術 | Office関連ソフト

Twitter Feedback

この記事へのコメント

1. Posted by anonymous   2017年11月20日 20:19
命令長が大きく同じ結果になる別のオペコードに置き換えて誤魔化したりせず、素直にnopで埋めてくるのがMSの萌えポイントだと思うの
2. Posted by plum   2017年11月20日 21:18
そもそもサードパーティ製なのでソース持ってなかったんじゃね?って話も出てるようですね。

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
livedoor プロフィール

黒翼猫

【募集】Windows 2000で動かしたいソフト/ハードを貸してくださる方、コメントかTwitterでご連絡を。
【BM】はブクマ推奨記事です

My PC
SNOWSTORM(P5E3 Premium)
OS:Win2000AdvancedSv
CPU:Xeon(4Core) 2.83G
Memory:8G
VGA:NVIDIA GTX 780Ti
HDD:SSD(32G)
    +SATA(540G+180G)
Crystal SCR:244765
SNOWFOX2(W860CU)
CPU:Core i5-540M(2.53G)
OS:Win2000Pro
Memory:4G
VGA:Geforce GTX285M
HDD:SSD(160G)
Crystal SCR:176460
SNOWMOBILE3(CF-J10S)
CPU:Core i5-2410M(2.3G)
VGA:Intel HD Graphics
HDD:SSD(128G)
Windows2000
Memory:6G
Crystal SCR:133495
SNOWMOBILE(N10Jc/故障)
Windows2000/XP Home
Crystal SCR:38316
SNOWLEO(MA206J/A/休止)
OS:OSX 10.4 +
Windows2000Pro(Solo動作)
Crystal SCR:24061
Windows 2000の セキュリティ対策について
FFR yarai(脆弱性防御)
SymantecEndpointSecurity 11 MR7
Windows Defender
記事検索
訪問者数

    最近のアクセス数

    Win2000お勧め
    お勧め記事
    Misskey Win95対応Client
    ウイルス対策ソフトの評価の秘密
    Windows 2000でMinecraft
    WLU Tool
    .NET FrameworkのUninstall
    lolifox 0.3.8.x
    WindowsのシャットダウンTips
    Fox Launcher
    ウィルス感染を手動で見つける方法
    Unknown Hard Errorとサルベージ
    Dependency Walker 日本語化
    Ultra VNC 1.0.6/1.0.8 を日本語化
    IME補完計画
    BSoD(ブルースクリーン)特集
    デフラグ時の4つの心得
    不明なデバイス探し
    SETUPAPI/NTDLLBugFix
    DNSデボルブ用更新[KB957579]
    最新 update.sys!
    4Thread以上のCPU最適化
    Win2000マルチコアで最適化
    Windows 2000の通信速度改善1
    Windows 2000の通信速度改善2
    内蔵簡易FireWallを使う
    ワームに感染しないインストール
    Remote Desktop Client
    IME 辞書 Tips
    Win2000用セキュリティSOFT
    不要なファイルの削除
    Win2000カスタマイズ
    便利なキーボードショートカット
    6月末まで使える体験版セキュリティ

    非対応ハード動作編
    HTC NDIS Driver
    Intel HD Graphic Driver
    VMWare Player 3.1.x
    Conexant HD Audio Driver
    NVIDIA WHQL Driver
    Intel Chipset 最新 INF
    Sentelic Finger Pad Driver
    ATI Legacy Driver 10.2
    AMD Radeon Driver 8〜11
    ATI Ahci/Raid Driver
    Intel SATA AHCI Driver
    D21LC(eMobile)
    USB-WSIM
    UVC カメラ
    Logicool Webcam
    Logicool ゲームパッド
    XBOX360用コントローラー
    Logicool Mouse
    Microsoft IntelliPoint
    iPod Touch/iPhone Driver

    非対応アプリ動作編
    Flash Player 10.3
    Java 6 JRE
    Java 7.0 JRE
    ティルズウィーバー
    Natal Online
    コンチェルトゲートフォルテ
    シルクロードオンライン
    東方幻想麻雀
    IME2010 Installer
    Adobe Reader X for Win2000
    Baidu IME 2.x
    MMORPG ドルアーガーの塔
    Adobe Air for Windows 2000
    Baidu IME
    iTunes 10.x installer
    Evernote 4
    Janetter
    Second Life
    雀龍門
    Media Manager for PSP 2.5a
    .NET Framework 3.5SP1
    ATOK 月額版(2010/2011)
    Leaf 愛佳でいくの!!
    VistaのScreenSaver
    会計ソフト弥生シリーズ 10
    Vegas Movie Studio 9
    EyeBall Chat
    ・CanonPowerShot[Soft/DPP]
    Google SketchUp Pro 7
    dance mixer
    Lismo Port
    DivX
    SONY ScreenSaver
    mixi アプリ
    DivX v7.x
    ニコニコムービーメーカー(動画)
    RC-S330 PaSoRi
    Finale 2009
    ZoneAlarm 8.0
    ルナティア Online
    ストリートギアーズ
    xfy Blog Editor
    Photoshop Elements 7
    Premiere Elements 7
    PowerShell 1.0
    ai sp@ce
    電脳フィギュアARis
    VOCALOID2 ミク・リンレン
    Google Chrome/SRW Iron
    Media Player 10
    ・iTunes 7.6.2を使う方法
    QuickTime 7.5x/7.6x
    foobar2000 9.5.x/9.6.x
    RealPlayer11
    Safari3/4.0
    ShockwavePlayer10/11
    Windows Live Writer
    Live Messenger
    Veoh Web Player / Web TV
    Level-R

    追加機能・カスタマイズ編
    W2K Kernel32 改造計画【BM】
    W2K Update Rollup v2
    XNA/SlimDX
    CPU Core数リミット解除
    OutLook Express 6SP3
    MDAC 2.8 SP2
    GIF/PNGを使えるMSPAINT
    IE5でWindowsUpdate
    MSXML 4.0SP3
    DirectX9.0c(2010/Feb)+拡張
    MS09-062(Gdiplus.dll)更新
    Unicode 制御文字
    Internet Explorer6 Bonus Pack
    夏時間(DaylightSavingTime)
    レジストリバックアップを取る
    IME2007
    Windows Media Bonus Pack
    XPSファイルビューア
    Windows Defender
    文字化け対策(FontLink)
    Meirio(KB927489)
    msconfig
    圧縮フォルダ
    Windows Movie Maker
    IE5.01/5.5/6タブ化
    MediaTypeChanger(EISA構成)
    Win2000 SP4 Support Tool
    kill/tlist with Debugging Tools
    sc.exe with Resource kit
    reg.exe
    TaskTray 256色化
    ISO仮想CD/DVDドライバ
    IE6高速化とWSH 5.7/5.8
    MS Baseline Security Analyzer
    音声認識 API 5.1
    Text Service

    Win2000インストール編
    CF-J10S
    N10Jc
    ThinkPad X200(7454)
    Quad Core/X48/P5E3
    VAIO VGN Type S
    E6850搭載 サポートPC
    Let'snote CF-R6
    MacMini
    Dell LATITUDE D630
    Core i7 + X58 +ICH10R
    790FX + SB750
    Clevo W860CU
    最新コメント
    Categories
    アーカイブ

    このサイトはIE5.x/IE6
    IE5.x Internet Explorer 6.x

    Firefox Firefox ブラウザ無料ダウンロード
    で最適化されています。
    Technorati
    Add to iGoogle
    Amazon GIFTでカンパ

    Donation(寄付)