Hatena::ブログ(Diary)

思い立ったら書く日記

2014-02-23

AutoCADの脆弱性CVE-2014-0818, CVE-2014-0819が修正された

| 17:44 | AutoCADの脆弱性CVE-2014-0818, CVE-2014-0819が修正されたを含むブックマーク

2014年2月21日、AutoCAD の脆弱性 CVE-2014-0818(JVN#33382534), CVE-2014-0819(JVN#43254599)が修正されたことが公表されました。この日記では、これらの脆弱性について次の 4 点を書きます。

  • 脆弱性を発見した経緯
  • IPA への脆弱性届出情報(抜粋)
  • 脆弱性を修正したバージョンにおける再現手順の実施結果
  • 報告から修正までの時系列

脆弱性を発見した経緯

まず、僕が直接 CVE-2014-0818(JVN#33382534)を発見したわけではありません。発見者よりは報告者という表現が適切です。

2012 年 6 月、ESET が AutoCAD の AutoLISP で書かれたワーム「ACAD/Medre.A」のブログ記事を公開しました。このブログ記事では、「ACAD/Medre.A」が感染するために AutoLisp コードの自動読み込み機能を悪用していることを説明していました。このとき、僕は読み込む AutoLisp コードを決定する探索パスに疑問を持ちました。そして、AutoCAD の公式ドキュメントを読むと、ファイル名だけ指定された場合に、まずカレントディレクトリを探索することを確認できました。

そこで、ESET のブログ記事をもとに実証コードを作成したうえで、「ACAD/Medre.A」の感染原因を「ファイル探索パスに関する脆弱性」として IPA に報告しました。なお、報告内容をまとめる過程で、DLL 読み込みに関する脆弱性の可能性も確認できたため、これもあわせて報告しました。

IPA への脆弱性届出情報(抜粋)

IPA への脆弱性届出情報(様式はここを参照)のうち、「2. 脆弱性関連情報」と「6. その他」を抜粋します。この抜粋した情報には、JVN#33382534 に関連する AutoCAD 公式ドキュメントへのリンクや再現手順などを含みます。日記に転載するうえで【】の記述を加筆しましたが、それ以外は原文のままです。

======================================================================
(抜粋)

2. 脆弱性関連情報

  1) この脆弱性関連情報の入手先
     □ 自分で発見した    □ 人から入手した
     ■ ウェブサイトから入手した
        (http://blog.eset.com/2012/06/21/acadmedre-a-technical-analysis-2)

  2) 脆弱性を確認したソフトウエア等に関する情報
     名称:AutoCAD 2013
     バージョン:G.55.0.0
     パッチレベル:-
     言語:日本語
     設定情報:-

  3) 脆弱性の種類
     ファイル探索パスに関する脆弱性
     (CWE-427: http://cwe.mitre.org/data/definitions/427.html)

  4) 再現手順
     (1) 「AutoCAD 2013」を起動して、AutoCAD 2013 図面ファイル
         「Drawing1.dwg」を作成する。この「Drawing1.dwg」と検証
         コード「Acad.fas」を同じフォルダに保存しておく。
         (添付ファイル:AutoCAD2013_exploit01.png)【後述】

     (2) 「Drawing1.dwg」をダブルクリックで開く。このとき、別途
         「Process Monitor」も起動しておく。

     (3) 「AutoCAD 2013」が起動すると同時に、電卓プログラム(calc.exe)
         が起動してしまう。
         (添付ファイル:AutoCAD2013_exploit02.png)【後述】

         (2) の「Process Monitor」の結果を確認すると、「Drawing1.dwg」
         と同じフォルダに保存した「Acad.fas」が読み込まれているこ
         とが分かります。
         (添付ファイル:AutoCAD2013_exploit03.png)【後述】

         さらに「Process Monitor」の [Event Properties] - [Stack] で
         確認したところ、accore.dll のコードが「Acad.fas」を読み込ん
         でいるようです。
         (添付ファイル:AutoCAD2013_exploit03-2.png)【後述】

  5) 再現の状況
     ■ 常に    □ 時々    □ まれに
     補足説明(バージョンによる、言語による、などを記入)

  6) 脆弱性により発生しうる脅威
     第三者が用意した FAS ファイル(*)が読み込まれることで、任意の
     VBScript が実行されてしまう恐れがあります。本届出の情報入手
     先にあるように、実際にマルウェア「ACAD/Medre.A」が本届出情報
     を悪用したようです。

     (*) コンパイルされた AutoLisp コード
         http://exchange.autodesk.com/autocadmechanical/jpn/online-help/AMECH_PP/2012/jpn/pages/WS73099cc142f4875516d84be10ebc87a53f-7bc0.htm

  7) 回避策
     ・運用における回避策(現実的には難しい)
     「AutoCAD 2013」に関連付いたファイルをダブルクリックで開くと
     きに、同じフォルダに FAS ファイルがないことを確認する。

  8) 検証コード
     http://blog.eset.com/2012/06/21/acadmedre-a-technical-analysis-2
     を参考に次の AutoLisp コードを書きました。
----- ここから ----------------------
【日記に掲載する上で削除しました】
----- ここまで ----------------------

     上記コードを「exploit.lsp」というファイル名で保存しました。

     この「exploit.lsp」を下記の情報を基にコンパイルして、「Acad.fas」
     という FAS ファイルを作成しました。
     http://exchange.autodesk.com/autocad/jpn/online-help/browse#WS73099cc142f4875516d84be10ebc87a53f-787d.htm

     具体的には、「AutoCAD 2013」の [管理]メニューから Visual LISP
     エディタを起動して、Visual LISP Console にて、以下のコマンドを
     実行します(「exploit.lsp」を C:\exploit フォルダに保存してい
     るという前提です)。
     (vlisp-compile 'st "c:/exploit/exploit.lsp" "c:/exploit/Acad.fas")

  9) その他
     ・バージョンについては、[AutoCAD 2013 バージョン情報]メニュー
       で確認しました。
       (添付ファイル:AutoCAD2013_version.png)
       【日記には掲載しません】

     ・本届出と類似した脆弱性としては、CVE-2011-3360 があります。
       http://cve.mitre.org/cgi-bin/cvename.cgi?name=2011-3360
       http://www.exploit-db.com/exploits/18125/

     ・AutoCAD ドキュメントの「load」関数の説明によると、
       FAS ファイルのみ指定された場合、「AutoCAD 2013」は
       まずカレントディレクトリを探索するようです。
       http://exchange.autodesk.com/autocad/jpn/online-help/browse#WS73099cc142f4875516d84be10ebc87a53f-7872.htm

(抜粋)

6. その他

  4) 再現手順の「Process Monitor」の結果を確認したところ、
  「AutoCAD 2013」には DLL 読み込みに関する脆弱性も存在している
  可能性があります。

  添付ファイル「AutoCAD_exploit.zip」の AutoCAD_exploit.PML を
  「Process Monitor」で開き、DLL の読み込み状況をご確認ください。
  【日記には掲載しません】
======================================================================

f:id:kaito834:20140222203210p:image:w420:h258

AutoCAD2013_exploit01.png


f:id:kaito834:20140222203211p:image:w420:h258

AutoCAD2013_exploit02.png


f:id:kaito834:20140222203212p:image:w387:h254

AutoCAD2013_exploit03.png


f:id:kaito834:20140222203213p:image:w387:h285

AutoCAD2013_exploit03-2.png

脆弱性を修正したバージョンにおける再現手順の実施結果

脆弱性が修正された「AutoCAD 2014」の体験版で、IPA への脆弱性届出情報 2.4) 再現手順を実施してみました*1。すると、「AutoCAD 2014」が起動すると、次の警告ダイアログウインドウが表示されました。このウインドウにて [ロードしない](初期選択)を選択すると、acad.FAS のコードが実行されずに「Drawing1.dwg」が表示されました。一方、[ロードする] を選択すると、定番の電卓プログラム(calc.exe)が起動しました。

レジストリを探索しても、AutoCAD 2013 Service Pack 1 で導入された AUTOLOAD および AUTOLOADPATH パラメータを確認できなかったこともふまえると、AutoLisp コードの自動読み込み機能を維持しつつ、(危険性のある)コードの実行可否を利用者に委ねることで、脆弱性を解消したと理解しました。

f:id:kaito834:20140223161819p:image:w278:h105

報告から公表までの時系列

IPA に脆弱性を報告してから、脆弱性が公表されるまでの時系列を下表にまとめました。

年月日事柄
2012年7月3日IPA に AutoCAD の脆弱性を報告した。同日、IPA から「脆弱性情報を受信したこと」を連絡いただいた。
2012年8月6日IPA から、「報告した脆弱性情報を脆弱性として受理したこと」および「脆弱性情報を開発者に通知したこと」を連絡いただいた。
2012年8月*2Autodesk 社がセキュリティ制御を実装した AutoCAD 2013 Service Pack 1(SP1)*3 を公開した。
2013年4月4日IPA に報告した脆弱性の対応状況を問い合わせた。
2013年4月18日IPA から「問題を一部修正したバージョン(Service Pack) を提供しており、現在も対応中」との回答をいただいた(このとき、僕は SP1 の存在を知りました)。
2013年5月11日IPA に「『FAS ファイルのファイル探索パスに関する脆弱性』(CVE-2014-0818)の修正を完了しており、現在『DLL 読み込みに関する脆弱性』(CVE-2014-0819)を修正している状況か」確認した。
2013年5月22日IPA から「『FAS ファイルのファイル探索パスに関する脆弱性』と『DLL 読み込みに関する脆弱性』どちらも対応中」との回答をいただいた。
2013年8月22日IPA に「AutoCAD の脆弱性 CVE-2013-3665 が報告した脆弱性に該当するか」問い合わせた。
2013年9月4日IPA から「Autodesk 社に(8月22日の)問い合わせ内容を確認中である」との報告をいただいた。
2013年9月中旬*4IPA から「報告した脆弱性と CVE-2013-3665 は別の脆弱性である」との回答をいただいた。
2014年2月21日IPA から「CVE-2014-0818(JVN#33382534), CVE-2014-0819(JVN#43254599)を公表したこと」を連絡いただいた。

さいごに

脆弱性を修正いただいた Autodesk 社、報告から修正および公表まで調整いただいた IPA および JPCERT/CC、ご対応ありがとうございました。

*1:「AutoCAD 2014」の動作環境は、Windows 7 Service Pack1 です。

*2「Without A Net」の記事の公開日をもとに、2012年8月に公開されていたと判断しました。

*3「Without A Net」の記事のコメントによると、SP1 が公開された後で、多数のバグを修正した SP1.1 が公開されたようです。

*4:2013 年 9 月中旬頃に IPA からメールをいただいていると思いますが、当該メールが見つかりませんでした...

トラックバック - http://d.hatena.ne.jp/kaito834/20140223/1393145077
リンク元