Blojsom におけるクロスサイトスクリプティングの脆弱性



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

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

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

MySQL Connector/J における SQL インジェクションの脆弱性

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

<4D F736F F F696E74202D E A B D682CC91E3955C93498D558C822E707074>

Webアプリケーション脆弱性診断 ~WebSiteScan Pro~

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

スライド 1

<4D F736F F D F B B838082F090DD927582B782E995FB96405F E646F6378>

Microsoft PowerPoint - webapp.ppt [互換モード]

贈与税 faq

HTTP Web Web RFC2616 HTTP/1.1 Web Apache Tomcat (Servlet ) XML Xindice Tomcat 6-2

研究者総覧システム

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

サーバサイドスクリプトPHPを実感しよう

4.5. < 参 加 表 明 書 を 提 出 する> 調 達 案 件 一 覧 の 表 示 対 象 となる 案 件 を 検 索 し 調 達 案 件 一 覧 に 表 示 させます 参 加 したい 案 件 の 調 達 案 件 名 称 行 - 入 札 参 加 資 格 確 認 申 請 / 技 術 資 料 /

るよう 工 事 打 合 せ 簿 ( 様 式 2)により 受 注 者 に 求 めます 5-1 理 由 書 ( 様 式 3)が 提 出 され 特 別 の 事 情 を 有 すると 認 めた 場 合 は 社 会 保 険 等 の 加 入 が 確 認 できる 書 類 を 提 出 するよう 工 事 打 合 せ 簿

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

Microsoft Word - 生物学技研報告ONLINE ガイドブック.doc

設定フロー ★印は必須の設定です

目 次. WEB メールへのログイン.... メール 送 信 手 順.... メール 受 信 手 順 アドレス 帳 の 操 作 手 順 フォルダーの 操 作 手 順 メール 発 信 者 登 録 署 名 登 録 手 順 基 本 的 な 設 定

メール 受 信 画 面 のレイアウトを 変 更 することができます ここでは 初 期 設 定 のレイアウトで 表 示 されているボタ ンやマークについて 解 説 します メール 一 覧 画 面 には 受 信 したメールが 一 覧 表 示 されます メール 受 信 タブをクリックすると 受 信 箱 フ

2 / 11 ページ 第 5 講 ビジネスメールの 作 法 Active! Mail を 起 動 し ログインしておきましょう 5-1 ビジネスメールのルールとマナー ビジネスメールのルールとマナーを 確 認 しましょう 宛 先 やCC BCCを 使 い 分 ける 本 文 の 内 容 が 一 目 で

目 次 利 用 に 際 しての 注 意 事 項... ユーザー 登 録... ログイン... 課 題 申 請... 5 装 置 予 約... 6 ライセンス 取 得 方 法... 7 利 用 料 金 の 確 認 ( 準 備 中 ) 外 部 発 表 登 録 の 方 法... 5 < 附

パソコンバンクWeb21 操作マニュアル[導入・事前設定編]

施 工 P お 気 に 入 り データを 活 用 するための 準 備 施 工 パッケージデータをお 気 に 入 りに 登 録 し 単 価 を 閲 覧 するための 方 法 を 説 明 します 1. 施 工 パッケージデータをダウンロードする 施 工 パッケージデータのダウンロードは 下 記 から 行

サポートシステム操作説明書

目 次 目 次 1 ログイン ログアウト ログインする...1 ログイン 画 面 が 表 示 されないときは?... 1 初 めてログインするときのパスワードは?... 2 初 期 パスワードを 忘 れてしまったときは?... 2 変 更 したパスワードを 忘 れてしまったときは?.

学校教育法等の一部を改正する法律の施行に伴う文部科学省関係省令の整備に関する省令等について(通知)

特別徴収封入送付作業について

PowerPoint プレゼンテーション

Microsoft Word - 不正アクセス行為の禁止等に関する法律等に基づく公安

PowerPoint プレゼンテーション

Javaセキュアコーディングセミナー東京 第2回 数値データの取扱いと入力値の検証 演習解説

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

変 更 履 歴 日 付 Document ver. 変 更 箇 所 変 更 内 容 2015/3/ 新 規 追 加 2015/9/24 誤 字 修 正 2016/2/ 動 作 環 境 最 新 のものへ 変 更 全 体 オペレーター の 表 記 を 削 除 2016/5/

学校ホームページ管理ツール導入委託提案要求仕様書

WP-Single-Channel-Options-JP indd

説明会資料 JBA新会員登録システムでの登録作業

PowerPoint プレゼンテーション

第2回 制度設計専門会合 事務局提出資料

もくじ

2. 事 務 連 絡 者 用 メニュー (1) 登 録 変 更 申 請 委 員 会 メンバー メンバー 個 人 情 報 企 業 情 報 の 変 更 および JIRA 会 員 を 退 会 する 場 合 こ のメニューから 各 種 申 請 を 行 います 申 請 後 変 更 内 容 を JIRA 事 務

東京事務所BCP【実施要領】溶け込み版

サイボウズ リモートサービス ユーザーマニュアル

研究者情報データベース

Gmail 利用者ガイド

データベースS 演習資料

動 的 コンテンツは 大 きく 次 の 二 つに 分 類 されます (1) Web ブラウザからの 要 求 に 応 じて Web サーバでプログラムが 実 行 され 実 行 結 果 生 成 された Web コンテンツを Web ブラウザに 送 信 し 表 示 する 方 法 ( 例 :Perl C 言

Ver.30 改 版 履 歴 版 数 日 付 内 容 担 当 V /09/5 初 版 発 行 STS V /0/8 証 明 書 バックアップ 作 成 とインストール 手 順 追 加 STS V /0/7 文 言 と 画 面 修 正 STS V..30 0//6

1 書 誌 作 成 機 能 (NACSIS-CAT)の 軽 量 化 合 理 化 電 子 情 報 資 源 への 適 切 な 対 応 のための 資 源 ( 人 的 資 源,システム 資 源, 経 費 を 含 む) の 確 保 のために, 書 誌 作 成 と 書 誌 管 理 作 業 の 軽 量 化 を 図

産 業 カウンセラー 試 験 対 策 模 擬 試 験 のみのコース 模 擬 試 験 A お 申 込 み 5,500 円 2015 年 12 月 19 日 模 擬 試 験 学 科 問 題 40 問 逐 語 記 録 問 題 20 問 + 音 声 による 解 答 と 解 説 (2013~2015 年 の

タイトルを1~2行で入力 (長文の場合はフォントサイズを縮小)

1

Microsoft Word - FBE3A91F.doc

スライド 1

(Microsoft PowerPoint - support_policy_Dec_18_2013.ppt [\214\335\212\267\203\202\201[\203h])

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

変 更 履 歴 版 日 付 区 分 変 更 内 容 変 更 個 所 /11/30 新 規 初 版 作 成 /12/10 修 正 資 料 カバー 画 像 設 定 の 操 作 内 容 を 追 加 資 料 カバー 画 像 設 定 i

「はぴeみる電」をご利用するにあたって

PATENTBOY/Netバージョンアップ説明書(Ver.1.92)

付 録 B Wiki を 閲 覧 編 集 する B.1 Wiki を 閲 覧 する Web ブラウザのアドレス 欄 に 公 開 されている 個 人 用 Wiki の URL またはメーリ ングリストの Wiki の URL を 入 力 すると その Wiki を 閲 覧 編 集 することができ ます

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

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

おすすめページ

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

自 己 紹 介 企 業 組 織 のネットワークにセキュリティー 機 器 を 配 置 発 生 するアラートをSOCへ 集 約 アラートをSOCが 分 析 し 必 要 に 応 じてお 客 様 へご 連 絡 対 応 を 助 言 お 客 様 ネットワーク Security Operation Center

(表紙)

Taro-1-14A記載例.jtd

1.ログインするためのパソコンの 設 定 (USBトークンの 設 定 ) Internet Explorer(IE)の 場 合 方 法 1 情 報 バーからアドオン(ActiveXコントロール)をインストールする 画 面 はIE8です またIEのバージョンにより 操 作 方 法 画 面 や 表 示

ict8.key

Apache Axis2 におけるXML署名検証不備

V-CUBE One

JavaScript演習

<4D F736F F F696E74202D20938A8D65837D836A B A926B82CB82C182C E E >

ご 利 用 の 前 に 手 順 初 回 ご 利 用 時 に 必 ずご 確 認 ください ご 利 用 の 前 に (ご 利 用 環 境 の 確 認 ) P アクセス 方 法 (IMAGE WORKSサイトへアクセス) P 初 期 設 定 (JREのインストール) P

電子申告簡易マニュアル【所得税実践編】

-.HPOP について HPOP(ホームページオプション )とは お 客 様 のHPとプロ エージェント を 連 動 させるオプションサービ スのことです 以 下 の2 種 類 を 初 期 費 用 円 / 月 額 5000 円 でそれぞれ 提 供 しています JOB 自 動 公 開 機

5-2 一 般 ユーザー 用 :メール 2 送 信 者 のリンクをクリックすると 受 信 メールの 内 容 を 見 ることができます 受 信 メール 内 容 画 面 項 目 送 信 者 宛 先 CC 本 文 (テキスト) 本 文 (HTML) メールアドレスのリンクをクリックするとアドレス 帳 へ

スライド 1

<4D F736F F F696E74202D C90BF8F CC8DEC90AC97E181698A4F8D E8816A5F56322E707074>

目 次 WEB 登 録 システムの 概 要 3 システム 要 件 3 1. 事 前 準 備 4 2. 施 設 長 ( 責 任 者 )による 初 期 登 録 2-1. 初 期 登 録 画 面 へのログイン( 初 期 登 録 時 のみ) 施 設 長 ( 責 任 者 )ID とパスワードの

(2) 質 問 受 付 回 答 方 法 電 子 メールにて 行 うものとし 下 記 担 当 宛 に 送 信 すること 誤 認 防 止 のため 電 話 による 質 問 は 受 け 付 けない また 誤 送 信 等 による 不 達 を 防 止 するた め 質 問 を 送 信 後 に 下 記 担 当 に

2 Wee とは Wee はホームページの 更 新 ツールです Wee は サイトの 枠 組 みをWeb 製 作 業 者 が 作 成 し 更 新 は お 客 様 に 自 由 にしていただこうというコンセプトの 製 品 です インターネットに 繋 がる 場 所 ならどこからでも ブラウザでホームページ

為 が 行 われるおそれがある 場 合 に 都 道 府 県 公 安 委 員 会 がその 指 定 暴 力 団 等 を 特 定 抗 争 指 定 暴 力 団 等 として 指 定 し その 所 属 する 指 定 暴 力 団 員 が 警 戒 区 域 内 において 暴 力 団 の 事 務 所 を 新 たに 設

<4D F736F F F696E74202D2082C882E982D982C DD8ED88EE688F882CC82B582AD82DD C668DDA9770>

方程式を解いてみよう! C++ から PHP + JavaScriptへ

スライド 1

Microsoft Word - PayPalManual_v1.1.doc

スライド 0

目 次 電 子 申 請 を 使 用 した 申 請 の 流 れ 1ページ 申 請 書 ( 概 算 保 険 料 申 告 書 )の 作 成 2ページ 作 成 した 申 請 書 の 送 信 31ページ 状 況 照 会 電 子 納 付 を 行 う 62ページ 返 送 書 類 の 取 得 75ページ お 問 い

< F2D D D837C815B B8EC08E7B97768D80>

<4D F736F F D F6F82C58AC C A4A8BC C5816A>

Microsoft Word - 第3章.doc

4 承 認 コミュニティ 組 織 は 市 長 若 しくはその 委 任 を 受 けた 者 又 は 監 査 委 員 の 監 査 に 応 じなければ ならない ( 状 況 報 告 ) 第 7 条 承 認 コミュニティ 組 織 は 市 長 が 必 要 と 認 めるときは 交 付 金 事 業 の 遂 行 の

大見出し

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63>

目 次 1. 概 要 2.サーバーへの 設 置 3. 設 定 4. 利 用 規 定 5. 更 新 履 歴

1. 目 次 1. 目 次 2.はじめに 2-1.メールテンプレート 編 集 機 能 とは? 2-2. 対 象 読 者 3. 用 語 一 覧 4. 利 用 の 流 れ 4-1.メールテンプレート 編 集 の 流 れ 5. 機 能 説 明 利 用 方 法 5-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.27 091014 +09'00' Javaアプリケーション脆弱性事例調査資料 について この資料は Javaプログラマである皆様に 脆弱性を身 近な問題として感じてもらい セキュアコーディングの 重要性を認識していただくことを目指して作成していま す Javaセキュアコーディングスタンダード CERT/Oracle版 と合わせて セキュアコーディングに 関する理解を深めるためにご利用ください JPCERTコーディネーションセンター セキュアコーディングプロジェクト secure-coding@jpcert.or.jp 1

Blojsom におけるクロスサイト スクリプティングの 脆 弱 性 CVE-2006-4829 JVNDB-2006-001260 2

Blojsomとは BlojsomはJavaで 書 かれたブログシステム AppleのMac OS X Server 10.4 TigerのWeblog Serverは blojsomがベースとなっている 3

脆 弱 性 の 概 要 Blojsom は 入 力 された 文 字 列 の 処 理 に 不 備 があり クロスサイトスクリプティング 攻 撃 が 可 能 攻 撃 者 の 用 意 したリンクをクリックするだけでク ロスサイトスクリプティング 攻 撃 が 成 立 する クロスサイトスクリプティングにより アカウン ト 乗 っ 取 り 等 の 被 害 が 発 生 する 4

クロスサイトスクリプティングとは クロスサイトスクリプティングとは ユーザの 入 力 値 を 元 にHTMLやURLなどを 動 的 に 生 成 し ているWebサイトにおいて 攻 撃 者 によって ユーザのブラウザに 表 示 されるコンテンツに 任 意 のHTMLやJavaScriptを 埋 め 込 む 攻 撃 クロスサイトスクリプティングにより 下 記 のよ うな 被 害 が 発 生 する 不 正 なサイトへの 誘 導 Cookieの 搾 取 によるセッションの 乗 っ 取 り 不 正 プログラムの 埋 め 込 み 実 行 機 密 情 報 の 漏 えい(HTTPSページの 情 報 搾 取 や HTMLフォームの 偽 装 等 ) 5

クロスサイトスクリプティング 攻 撃 例 1ユーザーを 攻 撃 者 のWebサイトに 誘 導 2 攻 撃 者 のWebサイトにアクセス 攻 撃 者 3 攻 撃 コードを 含 むレスポンス ユーザ 攻 撃 の 流 れ 1 攻 撃 者 はユーザーを 攻 撃 者 のWebサイトに 誘 導 する 2 ユーザーは 攻 撃 者 のサイトにアクセスする 3 攻 撃 者 のサイトから 攻 撃 対 象 サイトに 対 する 攻 撃 コードを 含 むレスポンスが 返 される 4 ユーザーは 攻 撃 対 象 サイトに 対 して 攻 撃 コード を 含 むリクエストを 送 信 する 5 ユーザーは 攻 撃 コードを 含 むレスポンスを 受 信 し 攻 撃 対 象 サイトのページ 上 で 攻 撃 コードが 実 行 される 攻 撃 実 行!! 5 攻 撃 コードを 含 むレスポンス 4 攻 撃 コードを 含 むリクエスト 攻 撃 対 象 サイト 6

クロスサイトスクリプティング 攻 撃 例 6セッションIDが 奪 われる 攻 撃 実 行!! 攻 撃 者 7ユーザーになりすまし ユーザ 8 機 密 情 報 の 漏 えい 攻 撃 の 流 れ 攻 撃 対 象 サイト 6 攻 撃 コードが 実 行 され セッションIDが 奪 われる 7 攻 撃 者 は 奪 ったセッションIDを 利 用 して ユーザーになりすまして 攻 撃 対 象 サイトにアクセスする 8 攻 撃 対 象 サイト 上 のユーザー 情 報 を 奪 うことが 可 能 となる 7

Blojsom の 処 理 内 容 ブログに 新 しい 書 き 込 みを 実 施 した 場 合 の 処 理 フロー 1 クライアントのブラウザからリクエストが 送 信 され アプリケーションが 受 信 する 2 リクエストからパラメータを 取 り 出 し 処 理 (ブログの 書 き 込 み)を 実 施 3 アプリケーションは 書 き 込 み 結 果 とともに 書 き 込 み 内 容 をクライアントに レスポンスとして 送 信 し クライアントのブラウザに 表 示 される 1 3 2 8 8

Blojsomの 処 理 1クライアントからリクエストを 受 信 する クライアントから 送 信 されるリクエストは 下 記 のようになる ここではパラメータ rss-enclosure-url に 注 目 する HTTPリクエスト POST /blojsom/blog/default/ HTTP/1.1 Host 192.168.xxx.xxx Content-Length 370 ここではパラメータ rss-enclosure-url の 値 は test action=add-blog-entry&flavor=.&rss-enclosure-url=test& &submit=add+blog+entry 上 記 HTTPリクエストを 送 信 するためのHTML <form action= /blojsom/blog/default/ method= POST > <input type= text name= rss-enclosure-url value= test > <input type= submit name= post value= Add blog entry > </form> 9

Blojsomの 処 理 1クライアントからリクエストを 受 信 する ブログ 書 き 込 み 画 面 パラメータ rss-enclosure-url の 入 力 フォーム 10

Blojsomの 処 理 2リクエストの 処 理 とブログへの 書 き 込 み 処 理 リクエストからパラメータ rss-enclosure-url の 値 を 変 数 rssenclosureurl に 格 納 し ブログへの 書 き 込 み 処 理 を 実 施 する RSSEnclosurePlugin.java public class RSSEnclosurePlugin implements BlojsomPlugin, BlojsomListener { public static final String RSS_ENCLOSURE_URL = "rss-enclosure-url"; public void processevent(blojsomevent event) { ProcessBlogEntryEvent processblogentryevent = (ProcessBlogEntryEvent) event; //リクエストからパラメータrss-enclosure-urlの 値 を 取 り 出 す String rssenclosureurl = BlojsomUtils.getRequestValue(RSS_ENCLOSURE_URL, processblogentryevent.gethttpservletrequest()); (ブログへの 書 き 込 み 処 理 ) 11

Blojsomの 処 理 3 処 理 結 果 をクライアントへ 返 す 書 き 込 み 処 理 を 実 施 後 変 数 rssenclosureurlの 値 をレスポンスとしてクライ アントに 返 す RSSEnclosurePlugin.java public class RSSEnclosurePlugin implements BlojsomPlugin, BlojsomListener { public void processevent(blojsomevent event) { //クライアントに 値 を 返 す processblogentryevent.getcontext().put(rss_enclosure_url_item, rssenclosureurl); 12

Blojsomの 処 理 3 処 理 結 果 をクライアントへ 返 す アプリケーションからクライアントへ 送 信 されるHTTPレスポンスは 下 記 のよう な 内 容 になる HTTPレスポンス HTTP/1.1 200 OK Server Apache-Coyote/1.1 Pragma no-cache Content-Type text/html;charset=utf-8 Date Fri, 05 Oct 2012 072917 GMT Content-Length 26881 <html> <head> <tr> <td>url to enclosure</td> <td><input type="text" name="rss-enclosure-url" value="test" size="60" /></td> </tr> 13

Blojsomの 処 理 3 処 理 結 果 をクライアントへ 返 す 処 理 完 了 画 面 書 き 込 み 完 了 の 結 果 を 表 示 POSTした 内 容 がそのまま 表 示 される 14

攻 撃 コード 攻 撃 コードのHTTPリクエスト POST /blojsom/blog/default/ HTTP/1.1 Host 192.168.xxx.xxx Content-Length 370 action=add-blog-entry&flavor=.& rss-enclosure-url="><script>alert(123)</script>& &submit=add+blog+entry 攻 撃 コードのポイント パラメータ rss-enclosure-url にスクリプトタグを 含 む 値 を 送 信 する 15

攻 撃 コード 攻 撃 コードのHTTPリクエストを 送 信 するためのHTML <form action= /blojsom/blog/default/ method= POST > <input type= hidden name= rss-enclosure-url value= "><script>alert(123)</script> > <input type= submit name= post value= Add blog entry > </form> 被 害 者 にこのフォームのリクエストを 送 信 させることでクロスサイトスクリ プティング 攻 撃 が 成 立 する 魅 惑 のコンテンツ Click me!! 16

攻 撃 コードが 実 行 された 際 の 処 理 ブログに 新 しい 書 き 込 みを 実 施 した 場 合 の 処 理 フロー 1 クライアントのブラウザからリクエストが 送 信 され アプリケーションが 受 信 する 2 リクエストからパラメータを 取 り 出 し 処 理 (ブログの 書 き 込 み)を 実 施 3 アプリケーションは 書 き 込 み 結 果 とともに 書 き 込 み 内 容 をクライアントに レスポンスとして 送 信 し クライアントのブラウザに 表 示 される 攻 撃 が 実 施 された 際 の 処 理 フローは 正 常 な 処 理 とまったく 変 わらない 3のアプリケーションから 送 信 されるレスポンス 内 容 に 注 目 する 17

攻 撃 コードが 実 行 された 際 の 処 理 アプリケーションからクライアントに 返 されるHTTPレスポンス HTTPレスポンス HTTP/1.1 200 OK Server Apache-Coyote/1.1 <html> <head> <tr> <td>url to enclosure</td> <td><input type="text" name="rss-enclosure-url" value=""><script>alert(123)</script> size="60" /></td> </tr> <td>url to enclosure</td> <td><input type="text" name="rss-enclosure-url" value= test size="60" /></td> </tr> 挿 入 された 文 字 列 により input タグが 閉 じられ script タグが 挿 入 された 形 になる そのため ブラウザは script タグ 内 の Javascript を 実 行 してしまう 通 常 の 処 理 の 際 のレスポンス 18

問 題 点 今 回 のアプリケーションにおける 具 体 的 な 問 題 点 HTMLへ 出 力 する 際 に Javascriptとして 解 釈 される 文 字 列 を 無 害 化 していないために 脆 弱 性 が 発 生 している 以 下 のコーティングガイドに 違 反 している IDS00-J. 信 頼 境 界 を 越 えて 渡 される 信 頼 できない データは 無 害 化 する 上 記 の 問 題 点 に 対 してどうすべきだったか Javascriptとして 解 釈 される 文 字 列 を 無 害 化 してから HTMLに 出 力 すべきであった 19

修 正 版 コード 本 脆 弱 性 はバージョン2.32で 修 正 されている ブログに 新 しい 書 き 込 みを 実 施 した 場 合 の 処 理 フロー 1 クライアントのブラウザからリクエストが 送 信 され アプリケーションが 受 信 する 2 リクエストからパラメータを 取 り 出 し 処 理 (ブログの 書 き 込 み)を 実 施 3 アプリケーションは 書 き 込 み 結 果 とともに 書 き 込 み 内 容 をクライアントに レスポンスとして 送 信 し クライアントのブラウザに 表 示 される この 処 理 のコードに 修 正 が 入 っている 20

修 正 版 コード RSSEnclosurePlugin.java( 修 正 前 ) public class RSSEnclosurePlugin implements BlojsomPlugin, BlojsomListener { public void processevent(blojsomevent event) { processblogentryevent.getcontext().put(rss_enclosure_url_item, rssenclosureurl); クライアントに 値 を 返 す 際 BlojsomUtilsクラスの escapebracketsメソッドを RSSEnclosurePlugin.java( 修 正 後 ) 呼 び 出 している public class RSSEnclosurePlugin implements BlojsomPlugin, BlojsomListener { public void processevent(blojsomevent event) { processblogentryevent.getcontext().put(rss_enclosure_url_item, BlojsomUtils.escapeBrackets(rssEnclosureURL)); 21

修 正 版 コード BlojsomUtilsクラスのescapeBracketsメソッド public static String escapebrackets(string input) { if (input == null) { return null; } String unescaped = replace(input, "<", "<"); unescaped = replace(unescaped, ">", ">"); } return unescaped; 無 害 化 処 理 として 引 数 inputの 値 に 含 まれる 値 をエスケープ 処 理 している エスケープ 対 象 文 字 列 エスケープ 処 理 後 文 字 列 < < > > 22

修 正 版 コード 修 正 版 コードに 対 して 先 ほどの 攻 撃 コードを 実 行 すると 下 記 のようなHTTP レスポンスになり スクリプトが 実 行 されなくなる HTTPレスポンス HTTP/1.1 200 OK Server Apache-Coyote/1.1 <html> <head> <tr> <td>url to enclosure</td> <td><input type="text" name="rss-enclosure-url" value=""><script>alert(123)</script> size="60" /></td> </tr> エスケープ 処 理 により スクリプトが 実 行 されなくなる 23

実 はこの 修 正 では 不 十 分!! クロスサイトスクリプティングに 対 する 無 害 化 を 行 う 際 に 前 述 の 処 理 だけでは 完 全 に 無 害 化 できないケースが 存 在 する 具 体 的 にはHTMLのタグ 内 への 文 字 列 の 出 力 パラメータrss-enclosure-urlに onfocus= javascriptalert(1) という 値 を 挿 入 するこ とで 入 力 フォームにマウスカーソルを 持 っていくと Javascriptが 動 作 する パラメータrss-enclosure-urlに " onfocus="javascriptalert(1) を 挿 入 した 際 のHTTPレスポンス <td>url to enclosure</td> <td> <input type= text name= rss-enclosure-url value= " onfocus="javascriptalert(1) size="60" /></td> </tr> BlojsomUtilsクラスのescapeBracketsメソッドによる エスケープ 処 理 をバイパスできてしまう 24

さらに 修 正 次 の5 種 類 の 文 字 をHTMLエンコードする エスケープ 対 象 文 字 列 エスケープ 処 理 後 文 字 列 < < > > & & " &#39; さらにユーザからの 入 力 値 をタグの 属 性 値 に 埋 め 込 む 場 合 は 値 全 体 を (ダブルクオート) 文 字 で 括 る それにより a onmouseover= alert(1); という 文 字 列 を 挿 入 さ せられた 場 合 でも 次 のようなHTMLが 生 成 されるためJavaScript は 実 行 されない <input type="text" value="a" onmouseover="alert(1);"> 25

さらに 修 正 前 述 を 踏 まえてescapeBracketsメソッドを 修 正 すると 下 記 のようになる BlojsomUtilsクラスのescapeBracketsメソッド( 追 加 修 正 版 ) public static String escapebrackets(string input) { if (input == null) { return null; } String unescaped = replace(input, "<", "<"); unescaped = replace(unescaped, ">", ">"); unescaped = replace(unescaped, " & ", "&"); unescaped = replace(unescaped, " " ", """); unescaped = replace(unescaped, " ", "&#39;"); } return unescaped; 追 加 されたコード 3つの 特 殊 記 号 に 対 する エスケープ 処 理 を 追 記 する 26

まとめ この 脆 弱 性 から 学 べるプログラミングの 注 意 点 アプリケーションの 外 部 にデータを 出 力 する 場 合 出 力 先 でデータがどのように 使 用 されるかを 考 慮 すべきだっ た 上 記 への 対 策 データの 出 力 先 がWebブラウザの 場 合 想 定 外 の 個 所 に HTML のメタ 文 字 が 含 まれている 場 合 に 備 えてHTMLエン コーディングを 施 す 参 考 OWASP XSS Filter Evasion Cheat Sheet https//www.owasp.org/index.php/xss_filter_evasion_cheat_sheet XSS (Cross Site Scripting) Prevention Cheat Sheet https//www.owasp.org/index.php/xss_(cross_site_scripting)_prevention_cheat_sheet 27

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