Apache Commons の HttpClient におけるSSLサーバ証明書検証不備



Similar documents
Apache Tomcatにおけるクロスサイトリクエストフォージェリ(CSRF)保護メカニズム回避の脆弱性

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

JBoss Application Server におけるディレクトリトラバーサルの脆弱性

Apache ActiveMQ における認証処理不備の脆弱性

この 章 では 電 子 入 札 システムをご 利 用 いただくための 事 前 準 備 について 説 明 します 事 前 準 備 と して ID 初 期 パスワードの 確 認 初 期 パスワード 初 期 見 積 用 暗 証 番 号 の 変 更 IC カード 登 録 またはICカード 更 新 を 行 っ

全設健発第     号

Spacewalkにおけるクロスサイトフォージェリ(CSRF)の脆弱性

目 次 機 能 運 用 上 の 注 意 処 理 手 順 画 面 説 明 ログイン 直 送 先 選 択

4 参 加 資 格 要 件 本 提 案 への 参 加 予 定 者 は 以 下 の 条 件 を 全 て 満 たすこと 1 地 方 自 治 法 施 行 令 ( 昭 和 22 年 政 令 第 16 号 ) 第 167 条 の4 第 1 項 各 号 の 規 定 に 該 当 しない 者 であること 2 会 社

<4D F736F F D F4390B3208A948C E7189BB8CE F F8C668DDA97702E646F63>

text

CSV_Backup_Guide


(2)大学・学部・研究科等の理念・目的が、大学構成員(教職員および学生)に周知され、社会に公表されているか

1. 業 務 概 要 貨 物 情 報 登 録 済 の 貨 物 に 対 して システムを 介 さずに 行 われた 税 関 手 続 きについて 税 関 が 許 可 承 認 等 を 行 った 旨 を 登 録 する また システムで 行 われた 以 下 の 税 関 手 続 き( 以 下 輸 出 申 告 等

Untitled

一般競争入札について

2. ど の 様 な 経 緯 で 発 覚 し た の か ま た 遡 っ た の を 昨 年 4 月 ま で と し た の は 何 故 か 明 ら か に す る こ と 回 答 3 月 17 日 に 実 施 し た ダ イ ヤ 改 正 で 静 岡 車 両 区 の 構 内 運 転 が 静 岡 運

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

1

iStorage ソフトウェア VMware vSphere Web Client Plug-in インストールガイド

資料 H3ロケットへの移行に関する課題と対応

ができます 4. 対 象 取 引 の 範 囲 第 1 項 のポイント 付 与 の 具 体 的 な 条 件 対 象 取 引 自 体 の 条 件 は 各 加 盟 店 が 定 めます 5.ポイントサービスの 利 用 終 了 その 他 いかなる 理 由 によっても 付 与 されたポイントを 換 金 すること

<95CA8E A4F C B A C E786C7378>

Microsoft PowerPoint - 報告書(概要).ppt

Microsoft Word - ML_ListManager_10j.doc

続 に 基 づく 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 再 認 定 を 受 けていること ) c) 会 社 更 生 法 に 基 づき 更 生 手 続 開 始 の 申 立 てがなされている 者 又 は 民 事 再 生 法 に 基 づき 再 生 手 続 開 始 の 申 立 てがなさ

(Microsoft Word - \203A \225\345\217W\227v\227\314 .doc)

CENTNET 導 入 の 手 引 き 変 更 履 歴 No. 変 更 日 変 更 番 号 変 更 枚 数 備 考 /07/ 版 発 行 - システムリプレースにより 全 面 刷 新 //07/ 版 発 行 3 誤 字 等 の 修 正 /

V-CUBE One

1 総 合 設 計 一 定 規 模 以 上 の 敷 地 面 積 及 び 一 定 割 合 以 上 の 空 地 を 有 する 建 築 計 画 について 特 定 行 政 庁 の 許 可 により 容 積 率 斜 線 制 限 などの 制 限 を 緩 和 する 制 度 である 建 築 敷 地 の 共 同 化 や

ユーザーガイド

第316回取締役会議案

は 固 定 流 動 及 び 繰 延 に 区 分 することとし 減 価 償 却 を 行 うべき 固 定 の 取 得 又 は 改 良 に 充 てるための 補 助 金 等 の 交 付 を 受 けた 場 合 にお いては その 交 付 を 受 けた 金 額 に 相 当 する 額 を 長 期 前 受 金 とし

・モニター広告運営事業仕様書

エラー 時 のリダイレクトと 同 じテクニックを 用 いて ロードマスターは URL 内 のプロトコ ルを 書 き 換 えることを 許 しています これは HTTP より HTTPS へ のプロトコル 変 換 を 強 制 させるために 役 立 つオプションです 例 えば クライアントが 貴 社 のウ

2 出 願 資 格 審 査 前 記 1の 出 願 資 格 (5) 又 は(6) により 出 願 を 希 望 する 者 には, 出 願 に 先 立 ち 出 願 資 格 審 査 を 行 いますので, 次 の 書 類 を 以 下 の 期 間 に 岡 山 大 学 大 学 院 自 然 科 学 研 究 科 等

迷惑メールフィルタリングコントロールパネル利用者マニュアル

Microsoft Word - サンプル _データベースアクセス_.doc

<6D33335F976C8EAE CF6955C A2E786C73>

スライド 1

Transcription:

Japan Computer Emergency Response Team Coordination Center 電子署名者 : Japan Computer Emergency Response Team Coordination Center DN : c=jp, st=tokyo, l=chiyoda-ku, email=office@jpcert.or.jp, o=japan Computer Emergency Response Team Coordination Center, cn=japan Computer Emergency Response Team Coordination Center 日付 : 2013.09.30 16:17:37 +09'00' Javaアプリケーション脆弱性事例調査資料 について この資料は Javaプログラマである皆様に 脆弱性を身 近な問題として感じてもらい セキュアコーディングの 重要性を認識していただくことを目指して作成していま す Javaセキュアコーディングスタンダード CERT/Oracle版 と合わせて セキュアコーディングに 関する理解を深めるためにご利用ください JPCERTコーディネーションセンター セキュアコーディングプロジェクト secure-coding@jpcert.or.jp 1

Apache CommonsのHttpClientに おけるSSLサーバ 証 明 書 検 証 不 備 CVE-2012-5783 JVNDB-2012-005217 2

Apache Commons とは 主 に Apache 関 連 製 品 で 用 いられる 再 利 用 可 能 な Java コンポーネントをまとめているプロジェクト 現 時 点 で 30 以 上 のサブプロジェクトが 存 在 カテゴリ Web 関 連 XML 関 連 ユーティリティ 主 なサブプロジェクト 名 FileUpload, HttpClient, Net 1 Betwixt, Designer, Jelly, JXPath BeanUtils, Configuration, Logging etc 1 HttpClient は 2013.06 現 在 HTTP Components プロジェクトに 移 行 されて いる 3

HttpClient とは HTTPクライアントを 開 発 するためのクラスライ ブラリ HTTP 通 信 に 関 わる 基 本 的 な 処 理 がライブラリ 化 されている HttpClientを 利 用 することでHTTP 通 信 を 行 うア プリケーション(ブラウザ 等 )を 効 率 よく 開 発 する ことができる ブラウザの 機 能 GUI/CUI デザイン 文 字 コード 処 理 HTTP プロトコル TCP 通 信 HttpClientでライブラ リ 化 されている 機 能 4

脆 弱 性 の 概 要 HttpClientがSSL 通 信 を 行 う 際 に 接 続 先 サーバのサーバ 証 明 書 の 検 証 が 行 われていなかった そのため HttpClientを 使 用 したアプリケーションは 正 規 の 証 明 書 を 持 たないサーバへのSSL 通 信 をエラーなし で 許 可 してしまった 本 ドキュメントは 脆 弱 性 を 内 包 する Apache Commons 2.0.1 を 対 象 に 記 載 している ( 脆 弱 性 は Apache Commons 2.0.1 以 降 に 存 在 ) 5

SSL 通 信 における 証 明 書 認 証 SSL 通 信 では 以 下 のようなやりとりが 行 われる クライアント サーバ 1 サーバにアクセス 2 サーバ 証 明 書 の 提 示 Server 3 サーバ 証 明 書 の 検 証 Server サーバ 証 明 書 4 クライアント 証 明 書 の 提 示 Client クライアント 証 明 書 4 5はサーバ 側 でク ライアントを 認 証 する 際 に 行 われるため 必 須 ではない 6 暗 号 化 アルゴリズムの 決 定 暗 号 化 キーの 交 換 SSL 通 信 ( 暗 号 化 通 信 )の 開 始 Client 5 クライアント 証 明 書 の 検 証 6

サーバ 証 明 書 の 検 証 クライアント-サーバ 間 でSSL 通 信 ( 暗 号 化 通 信 )をするこ とで 盗 聴 による 情 報 漏 えいを 防 ぐことができる ただし 接 続 先 サーバが 不 正 なホストに 入 れ 替 わってし まうとSSL 通 信 ( 暗 号 化 通 信 )の 意 味 がない そこで SSL 通 信 開 始 時 にサーバ 証 明 書 を 検 証 すること で 接 続 先 サーバの 身 元 を 確 認 する 本 物 の www.jpcert.or.jp サーバ 証 明 書 がおかしい! 見 るのをやめよう クライアント 偽 サーバの サーバ 証 明 書 偽 の www.jpcert.or.jp サーバ 7

サーバ 証 明 書 検 証 に 関 する 情 報 RFC5280: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile (http://tools.ietf.org/html/rfc5280) SSL 証 明 書 の 検 証 内 容 として 以 下 のような 項 目 を 挙 げ 検 証 に 関 するアルゴリズムを 定 義 している (Section6. Certification Path Validation) 1. 発 行 元 の 認 証 機 関 (CA)が 信 頼 されているCAであることを 確 認 する 2. 現 在 の 日 付 が 有 効 期 間 内 にあるかどうかを 確 認 する 3. 現 時 点 において 証 明 書 が 失 効 していないことを 確 認 する 4. 発 行 元 CAの 公 開 キーにより 送 信 者 のデジタル 署 名 を 検 証 する 5.サーバーの 証 明 書 のドメイン 名 がサーバー 自 体 のドメイン 名 と 一 致 するかどうかを 確 認 する 注 意!! この 資 料 では 5. のドメイン 名 (ホスト 名 )を 検 証 する 処 理 を 中 心 に 見 ていく 8

サーバ 証 明 書 の 記 載 内 容 サーバ 証 明 書 には 以 下 のような 情 報 が 含 まれる 項 目 名 記 載 内 容 CN サーバ 名 (ドメイン 含 む) www.jpcert.or.jp OU 運 営 団 体 の 部 署 名 System Administration Group O 運 営 団 体 名 Japan Computer Emergency Response Team Coordination Center L 運 営 団 体 の 所 在 ( 市 区 町 村 ) Chiyoda-ku ST 運 営 団 体 の 所 在 ( 都 道 府 県 ) Tokyo C 運 営 団 体 の 所 在 ( 国 名 ) Japan 証 明 書 の 有 効 期 間 証 明 書 を 発 行 した 証 明 機 関 (CA)のパス CNには1つのホストしか 記 述 できないため 複 数 ホスト(バーチャルホス ト) 運 用 を 想 定 した 拡 張 フィールド subjectaltname も 用 意 されており CNフィールドよりも 優 先 される 9

サーバ 証 明 書 の 検 証 内 容 RFC 2818 HTTP Over TLS では 以 下 のように 記 載 されている English the client MUST check it against the server's identity as presented in the server's Certificate message, in order to prevent man-in-the-middle attacks. ( 中 略 ) the (most specific) Common Name field in the Subject field of the certificate MUST be used. 日 本 語 中 間 者 による 攻 撃 を 予 防 するために クライアントは これをサーバーの 証 明 書 メッセージ 中 に 示 されたサーバーの 身 元 に 照 らしてチェックしなけ ればなりません(MUST) ( 中 略 ) 証 明 書 の Subject フィールドにある( 最 も 具 体 的 )な Common Name フィー ルドを 使 用 しなければなりません(MUST) RFC では 証 明 書 のCN(またはsubjectAltName)の 値 と ホスト 名 の 一 致 を 検 証 することが 必 須 とされている 10

脆 弱 性 が 悪 用 された 場 合 のリスク SSLサーバの 成 りすましが 可 能 それによりSSL 通 信 の 中 間 者 攻 撃 (Man-In-The- Middle 攻 撃 )が 可 能 SSL 通 信 内 容 の 傍 受 改 ざんが 可 能 11

脆 弱 性 の 悪 用 例 (Man-In-The-Middle 攻 撃 ) クライアントを 本 来 接 続 するサーバとは 異 なる 不 正 な サーバに 接 続 させる 不 正 なサーバでは クライアントに 代 わって 正 規 のサー バと 通 信 し クライアントに 対 しては 正 規 のサーバとし てふるまう 不 正 なサーバ 上 で 通 信 情 報 の 傍 受 や 改 ざんが 可 能 となる 中 継 クライアント 偽 サーバの サーバ 証 明 書 不 正 なサーバ 本 来 接 続 したい 正 規 のサーバ 情 報 の 搾 取 改 ざん 12

HTTPSアクセス 時 の 実 行 フロー クライアント アプリケーション HttpClient::executeMethod() クライアント 呼 出 し HttpClient SSLSocketFactory Java Native サーバ 証 明 書 を 含 む SSLSocketオブジェクトを 受 け 取 り HttpClientクラス 内 で 管 理 する 呼 出 し SSLSocketFactory:: createsocket() SSLSocket オブジェクト 結 果 返 却 接 続 処 理 SSL 接 続 サーバ 証 明 書 サーバ リクエスト 送 信 呼 出 し HTTPリクエスト リクエスト 送 信 接 続 結 果 結 果 返 却 接 続 結 果 結 果 返 却 クライアントアプリケーションには 接 続 後 のリクエスト 送 信 結 果 のみが 返 される サーバ 証 明 書 情 報 を 含 むSSLSocketオブジェクトは 返 されない 13

ソースコード 解 説 1 クライアントアプリケーションがHttpClientライブラリの executemethodメソッドを 呼 び 出 す 2 executemethodメソッドからjavax.net.ssl.sslsocketfactory ク ラスのcreateSocketメソッドが 呼 び 出 され サーバとのSSL 接 続 が 確 立 する 3 HttpClientライブラリにコネクションオブジェクト(SSLSocketオ ブジェクト)が 返 却 される 4 HttpClientがSSLSocketを 使 用 してHTTPリクエストを 送 信 する 5 サーバからHTTPレスポンスを 受 け 取 ってクライアントアプリ ケーションに 返 却 する 14

1クライアントアプリケーションがHttpClientのexecuteMethodメ ソッドを 呼 び 出 す SimpleClient.java public class SimpleClient { : public static void main(string[] args) { try { HttpClient httpclient = new HttpClient(); GetMethod httpget = new GetMethod( https://www.jpcert.or.jp/ ); try { int statuscode = httpclient.executemethod(httpget); if (statuscode!= HttpStatus.SC_OK) { // Error handling here } byte[] response = httpget.getresponsebody(); } finally { httpget.releaseconnection(); } 接 続 処 理 HttpClient インスタンスを 作 成 Get メソッドパラメータを 構 成 し executemethodを 呼 び 出 す 15

2 executemethod 内 でSSLSocketFactoryクラスのcreateSocketメ ソッドが 呼 び 出 され サーバとのSSL 接 続 が 確 立 する CALL HttpConnection.java (HttpClient.executeMethod >> HttpConnection.open) public class HttpConnection { public void open() throws IOException { : this.socket = socketfactory.createsocket( host, port, localaddress, 0, this.params); } : SSLProtocolSocketFactory.java 接 続 処 理 executemethodから 呼 び 出 される 処 理 public class SSLProtocolSocketFactory implements SecureProtocolSocketFactory { : public Socket createsocket(string host, int port, InetAddress clienthost, int clientport) } throws IOException, UnknownHostException { 接 続 処 理 return SSLSocketFactory.getDefault().createSocket(host, port, clienthost, clientport); 16

3HttpClientライブラリにコネクションオブジェクト(SSLSocketオブ ジェクト)が 返 却 される SSLProtocolSocketFactory.java public class SSLProtocolSocketFactory implements SecureProtocolSocketFactory { : public Socket createsocket(string host, int port, InetAddress clienthost, int clientport) } throws IOException, UnknownHostException { return SSLSocketFactory.getDefault().createSocket(host, port, clienthost, clientport); SSLSocketFactory::createSocketメソッドは SSLSocketオブジェクトを 返 却 する Return HttpConnection.java (HttpClient.executeMethod >> HttpConnection.open) public class HttpConnection { public void open() throws IOException { : this.socket = socketfactory.createsocket( host, port, localaddress, 0, this.params); } : HttpClientライブラリのHttpConnectionクラスの } 内 部 に SSLSocketオブジェクトを 格 納 する 17

4 HttpClientがSSLSocketを 使 用 してHTTPリクエストを 送 信 する HttpMethodDirector.java (HttpClient.executeMethod > HttpMethodDirector.executeWithRetry) private void executewithretry(final HttpMethod method) throws IOException, HttpException { : this.conn.open(); : applyconnectionparams(method); method.execute(state, this.conn); リクエスト 送 信 処 理 その 後 HttpClientライブラリ 内 に 保 持 したSSLSocket オブジェクトを 利 用 してリクエスト 送 信 が 行 われる 18

5 サーバからHTTPレスポンスを 受 け 取 りクライアントアプリケーショ ンに 返 却 する SimpleClient.java public class SimpleClient { : public static void main(string[] args) { try { HttpClient httpclient = new HttpClient(); GetMethod httpget = new GetMethod( https://www.jpcert.or.jp/ ); try { レスポンス 返 却 int statuscode = httpclient.executemethod(httpget); if (statuscode!= HttpStatus.SC_OK) { // Error handling here } byte[] response = httpget.getresponsebody(); } finally { httpget.releaseconnection(); } executemethodを 呼 び 出 した 結 果 ( 送 信 したリクエストに 対 するレス ポンス)をクライアントアプリケー ションに 返 却 する 19

問 題 点 とその 対 策 今 回 のアプリケーションにおける 具 体 的 な 問 題 点 前 述 の RFC 2818 HTTP Over TLS に 沿 っていない! ( 証 明 書 の 検 証 方 法 として ) 証 明 書 の Subject フィールドにある( 最 も 具 体 的 )な Common Name フィールドを 使 用 しなければなりません(MUST) サーバへ 接 続 後 SSLSocket がサーバ 証 明 書 を 取 得 して いるが その 検 証 を 一 切 行 っていなかったため サーバ 名 (CNやsubjectAltName)が 異 なるサーバでも 正 常 に 繋 がっ てしまった 問 題 点 に 対 してどうすべきだったか サーバ 証 明 書 の 検 証 を 実 施 する 不 正 なサーバ 証 明 書 であ ることが 判 明 したら エラー 状 態 として 扱 う 20

HTTPSアクセス 時 の 実 行 フローにおける 問 題 点 クライアント アプリケーション HttpClient::executeMethod() クライアント 呼 出 し HttpClient SSLSocketFactory Java Native HttpClientはSSL 接 続 時 にサーバ 証 明 書 の 検 証 を 行 っておら ず サーバの 正 当 性 を 確 認 していない!! 呼 出 し SSLSocketFactory:: createsocket() SSLSocket オブジェクト リクエスト 送 信 呼 出 し 結 果 返 却 接 続 処 理 SSL 接 続 サーバ 証 明 書 HTTPリクエスト サーバ リクエスト 送 信 接 続 結 果 結 果 返 却 接 続 結 果 結 果 返 却 クライアントアプリケーションでは サーバ 証 明 書 情 報 を 含 むSSLSocketオ ブジェクトを 受 け 取 れないため 証 明 書 の 検 証 はできない!! 21

HTTPSアクセス 時 の 実 行 フローにおける 問 題 点 3HttpClientライブラリにコネクションオブジェクト(SSLSocket オブジェクト)が 返 却 される のコードに 問 題 がある SSLProtocolSocketFactory.java public class SSLProtocolSocketFactory implements SecureProtocolSocketFactory { : public Socket createsocket(string host, int port, InetAddress clienthost, int clientport) } throws IOException, UnknownHostException { return SSLSocketFactory.getDefault().createSocket(host, port, clienthost, clientport); createsocket を 呼 び 出 した 後 返 却 される Socket 型 オブジェクトの 内 容 を 全 く 検 証 せず 呼 び 出 し 元 に 返 却 している 22

修 正 版 コード サーバ 接 続 時 のフローに 証 明 書 検 証 処 理 3 が 追 加 された 1 クライアントアプリケーションがサーバへの 接 続 処 理 において HttpClientライブラリのexecuteMethodメソッドを 呼 び 出 す 2 executemethodメソッドからjavax.net.ssl.sslsocketfactory クラスの createsocketメソッドが 呼 び 出 され サーバとのSSL 接 続 が 確 立 する 3 HttpClientライブラリにコネクションオブジェクト(SSLSocketオブ ジェクト)が 返 却 される 3 SSLSocketオブジェクトに 含 まれるサーバ 証 明 書 を 検 証 する 4 HttpClientがSSLSocketを 使 用 してHTTPリクエストを 送 信 する 5 サーバからHTTPレスポンスを 受 け 取 ってクライアントアプリケー ションに 返 却 する 23

修 正 版 コード ソケット 情 報 から 証 明 書 情 報 を 取 得 し ホスト 名 検 証 を 行 う SSLProtocolSocketFactory.java public Socket createsocket(string host, int port, InetAddress clienthost, int clientport) throws IOException, UnknownHostException { Socket sslsocket = SSLSocketFactory.getDefault().createSocket(host, port, clienthost, clientport); 接 続 処 理 verifyhostname(host, (SSLSocket) sslsocket); return sslsocket; ホスト 名 検 証 処 理 } 返 却 されたソケット 情 報 (SSLSocket)を sslsocket に 格 納 し ホスト 名 を 検 証 するメソッド verifyhostname() に 渡 すように 修 正 ホスト 名 が 一 致 しなかった 場 合 は SSLException がスローされ 接 続 処 理 が 異 常 終 了 するようになった SSLException は IOException の 派 生 クラス 24

補 足 :ホスト 名 検 証 処 理 1)SSL 接 続 されたセッション 情 報 から 証 明 書 情 報 取 得 証 明 書 配 列 の 取 得 SSLProtoclSocketFactory.java > verifyhostname(sslsocket) Certificate[] c erts = session.getpeercertificates(); verifyhostname(host.trim().tolowercase(locale.us), (X509Certificate) certs[0]); サーバの 証 明 書 での 検 証 処 理 証 明 書 配 列 取 得 接 続 先 サーバの 署 名 を 渡 す 2) 証 明 書 情 報 から CN(subjectAltName) エントリを 取 得 し 比 較 SSLProtoclSocketFactory.java > > verifyhostname(x509certificate) [0] String cn = getcn(cert); verifyhostname (host, cn.tolowercase(locale.us), subjectalts); CN 名 取 得 (cn) host と cn の 検 証 処 理 2) で 呼 び 出 される verifyhostname 内 にて 適 切 にワイルドカードが 使 われてい るCNも 併 せて 解 決 され 接 続 しようとしているホスト(host)と 証 明 書 のCNレコー ド(cn)が 一 致 するかチェックされる 25

サーバ 証 明 書 検 証 に 関 する 参 考 情 報 (1) ( 再 掲 ) RFC5280: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile (http://tools.ietf.org/html/rfc5280) SSL 証 明 書 の 検 証 内 容 として 以 下 のような 項 目 を 挙 げ 検 証 に 関 するアルゴリズムを 定 義 している (Section6. Certification Path Validation) 1. 発 行 元 の 認 証 機 関 (CA)が 信 頼 されているCAであることを 確 認 する 2. 現 在 の 日 付 が 有 効 期 間 内 にあるかどうかを 確 認 する 3. 現 時 点 において 証 明 書 が 失 効 していないことを 確 認 する 4. 発 行 元 CAの 公 開 キーにより 送 信 者 のデジタル 署 名 を 検 証 する 5.サーバーの 証 明 書 のドメイン 名 がサーバー 自 体 のドメイン 名 と 一 致 するかどうかを 確 認 する 26

サーバ 証 明 書 検 証 に 関 する 参 考 情 報 (2) Microsoft SSL ハンドシェイクでのサーバー 認 証 プロセスに 関 する 説 明 より http://support.microsoft.com/kb/257587/ja SSL を 有 効 にしたクライアントでは 以 下 の 手 順 を 実 行 してサーバーの 身 元 を 認 証 します 1. 現 在 の 日 付 が 有 効 期 間 内 にあるかどうかを 確 認 します 2. 発 行 元 の 認 証 機 関 (CA)が 信 頼 されている CA であることを 確 認 します 3. 発 行 元 CA の 公 開 キーにより 送 信 者 のデジタル 署 名 を 検 証 します 4. サーバー 証 明 書 のドメイン 名 がサーバー 自 体 のドメイン 名 と 一 致 するかどうかを 確 認 し ます Google Browser Security Handbook より http://code.google.com/p/browsersec/wiki/part2 ここでは 以 下 を 不 正 な 証 明 書 として 扱 っている 信 頼 される 機 関 によってサインされていない 期 限 切 れ ドメイン 名 と 合 致 しない ( 引 用 原 文 そのまま) invalid certificates (not signed by a trusted entity, expired, not matching the current domain, or suffering from any other malady) 27

CWE: Common Weakness Enumeration CWE-295: Improper Certificate Validation 全 般 的 な 話 証 明 書 を 正 しく 検 証 していない CWE-296: Improper Following of a Certificate's Chain of Trust 証 明 書 チェーンを 正 しく 検 証 していない CWE-298: Improper Validation of Certificate Expiration 期 限 が 切 れているかを 正 しく 検 証 していない CWE-299: Improper Check for Certificate Revocation 証 明 書 が 無 効 になっていないかを 正 しく 検 証 していない http://cwe.mitre.org/ 28

著 作 権 引 用 や 二 次 利 用 について 本 資 料 の 著 作 権 はJPCERT/CCに 帰 属 します 本 資 料 あるいはその 一 部 を 引 用 転 載 再 配 布 する 際 は 引 用 元 名 資 料 名 および URL の 明 示 を お 願 いします 記 載 例 引 用 元 : 一 般 社 団 法 人 JPCERTコーディネーションセンター Java アプリケーション 脆 弱 性 事 例 解 説 資 料 Apache Commons の HttpClient における SSL サーバ 証 明 書 検 証 不 備 https://www.jpcert.or.jp/securecoding/2012/no.07_apache_commons.pdf 本 資 料 を 引 用 転 載 再 配 布 をする 際 は 引 用 先 文 書 時 期 内 容 等 の 情 報 を JPCERT コーディ ネーションセンター 広 報 (office@jpcert.or.jp)までメールにてお 知 らせください なお この 連 絡 により 取 得 した 個 人 情 報 は 別 途 定 めるJPCERT コーディネーションセンターの プライバシーポ リシー に 則 って 取 り 扱 います 本 資 料 の 利 用 方 法 等 に 関 するお 問 い 合 わせ JPCERTコーディネーションセンター 広 報 担 当 E-mail:office@jpcert.or.jp 本 資 料 の 技 術 的 な 内 容 に 関 するお 問 い 合 わせ JPCERTコーディネーションセンター セキュアコーディング 担 当 E-mail:secure-coding@jpcert.or.jp 29