目 次 はじめに... 2 本 書 の 対 象 読 者... 2 本 書 における 用 語... 3 1. DOM Based XSS の 概 要... 4 1.1. XSS の 種 類... 4 1.2. DOM とは... 6 2. IPA に 報 告 された DOM Based XSS の 脆

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

検 討 検 討 の 進 め 方 検 討 状 況 簡 易 収 支 の 世 帯 からサンプリング 世 帯 名 作 成 事 務 の 廃 止 4 5 必 要 な 世 帯 数 の 確 保 が 可 能 か 簡 易 収 支 を 実 施 している 民 間 事 業 者 との 連 絡 等 に 伴 う 事 務 の 複 雑

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

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

●労働基準法等の一部を改正する法律案

2 役 員 の 報 酬 等 の 支 給 状 況 平 成 27 年 度 年 間 報 酬 等 の 総 額 就 任 退 任 の 状 況 役 名 報 酬 ( 給 与 ) 賞 与 その 他 ( 内 容 ) 就 任 退 任 2,142 ( 地 域 手 当 ) 17,205 11,580 3,311 4 月 1

参加表明書・企画提案書様式

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

文化政策情報システムの運用等

1.2. ご 利 用 環 境 推 奨 ブラウザ Internet Explorer Google Chrome(バージョン 32 時 点 で 動 作 確 認 済 み) Mozilla Firefox(バージョン 26 時 点 で 動 作 確 認 済 み) Safari 7

<4D F736F F D C689D789B582B581698AAE90AC92CA926D816A2E646F63>

Ⅰ 調 査 の 概 要 1 目 的 義 務 教 育 の 機 会 均 等 その 水 準 の 維 持 向 上 の 観 点 から 的 な 児 童 生 徒 の 学 力 や 学 習 状 況 を 把 握 分 析 し 教 育 施 策 の 成 果 課 題 を 検 証 し その 改 善 を 図 るもに 学 校 におけ

PowerPoint プレゼンテーション

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

平 成 27 年 11 月 ~ 平 成 28 年 4 月 に 公 開 の 対 象 となった 専 門 協 議 等 における 各 専 門 委 員 等 の 寄 附 金 契 約 金 等 の 受 取 状 況 審 査 ( 別 紙 ) 専 門 協 議 等 の 件 数 専 門 委 員 数 500 万 円 超 の 受

<4D F736F F D203193FA8AD45F95CA8E86325F89898F4B315F94F093EF8AA98D AD97DF914F82CC8FEE95F182CC8EFB8F C28E8B89BB2E646F63>

(Microsoft Word - \221\346\202P\202U\201@\214i\212\317.doc)

PowerPoint プレゼンテーション

<4D F736F F D E598BC68A8897CD82CC8DC490B68B7982D18E598BC68A8893AE82CC8A C98AD682B782E993C195CA915B C98AEE82C382AD936F985E96C68B9690C582CC93C197E1915B927582CC898492B75F8E96914F955D89BF8F915F2E646F6

●電力自由化推進法案

研究者情報データベース

< 現 在 の 我 が 国 D&O 保 険 の 基 本 的 な 設 計 (イメージ)> < 一 般 的 な 補 償 の 範 囲 の 概 要 > 請 求 の 形 態 会 社 の 役 員 会 社 による 請 求 に 対 する 損 免 責 事 由 の 場 合 に 害 賠 償 請 求 は 補 償 されず(

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63>

<4D F736F F D D3188C091538AC7979D8B4B92F F292B98CF092CA81698A94816A2E646F63>

< DB8CAF97BF97A6955C2E786C73>

Microsoft Word - 佐野市生活排水処理構想(案).doc

Microsoft PowerPoint _2b-DOM.pptx

<4D F736F F D208ED089EF95DB8CAF89C193FC8FF38BB CC8EC091D492B28DB88C8B89CA82C982C282A282C42E646F63>

代 議 員 会 決 議 内 容 についてお 知 らせします さる3 月 4 日 当 基 金 の 代 議 員 会 を 開 催 し 次 の 議 案 が 審 議 され 可 決 承 認 されました 第 1 号 議 案 : 財 政 再 計 算 について ( 概 要 ) 確 定 給 付 企 業 年 金 法 第

平成25年度 独立行政法人日本学生支援機構の役職員の報酬・給与等について

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

セルフメディケーション推進のための一般用医薬品等に関する所得控除制度の創設(個別要望事項:HP掲載用)

●幼児教育振興法案

<4D F736F F D2095CA8E A90DA91B18C9F93A289F1939A8F D8288B3816A5F E646F63>

6 構 造 等 コンクリートブロック 造 平 屋 建 て4 戸 長 屋 16 棟 64 戸 建 築 年 1 戸 当 床 面 積 棟 数 住 戸 改 善 後 床 面 積 昭 和 42 年 36.00m m2 昭 和 43 年 36.50m m2 昭 和 44 年 36.

った 場 合 など 監 事 の 任 務 懈 怠 の 場 合 は その 程 度 に 応 じて 業 績 勘 案 率 を 減 算 する (8) 役 員 の 法 人 に 対 する 特 段 の 貢 献 が 認 められる 場 合 は その 程 度 に 応 じて 業 績 勘 案 率 を 加 算 することができる

<4D F736F F D F93878CA797708F4390B3816A819A95CA8B4C976C8EAE91E682538B4C8DDA97E12E646F6378>

PowerPoint プレゼンテーション

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2


Sea-NACCS 利用者研修 【通関編】

国立研究開発法人土木研究所の役職員の報酬・給与等について

Microsoft Word - FBE3A91F.doc

別 紙 第 号 高 知 県 立 学 校 授 業 料 等 徴 収 条 例 の 一 部 を 改 正 する 条 例 議 案 高 知 県 立 学 校 授 業 料 等 徴 収 条 例 の 一 部 を 改 正 する 条 例 を 次 のように 定 める 平 成 26 年 2 月 日 提 出 高 知 県 知 事 尾


2 役 員 の 報 酬 等 の 支 給 状 況 役 名 法 人 の 長 理 事 理 事 ( 非 常 勤 ) 平 成 25 年 度 年 間 報 酬 等 の 総 額 就 任 退 任 の 状 況 報 酬 ( 給 与 ) 賞 与 その 他 ( 内 容 ) 就 任 退 任 16,936 10,654 4,36

<6E32355F8D918DDB8BA697CD8BE28D C8EAE312E786C73>

預 金 を 確 保 しつつ 資 金 調 達 手 段 も 確 保 する 収 益 性 を 示 す 指 標 として 営 業 利 益 率 を 採 用 し 営 業 利 益 率 の 目 安 となる 数 値 を 公 表 する 株 主 の 皆 様 への 還 元 については 持 続 的 な 成 長 による 配 当 可

入 札 参 加 者 は 入 札 の 執 行 完 了 に 至 るまではいつでも 入 札 を 辞 退 することができ これを 理 由 として 以 降 の 指 名 等 において 不 利 益 な 取 扱 いを 受 けることはない 12 入 札 保 証 金 免 除 13 契 約 保 証 金 免 除 14 入

m07 北見工業大学 様式①

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

Taro-データ公安委員会相互協力事

<819A955D89BF92B28F BC690ED97AA8EBA81418FA48BC682CC8A8890AB89BB816A32322E786C7378>

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

( 別 紙 ) 以 下 法 とあるのは 改 正 法 第 5 条 の 規 定 による 改 正 後 の 健 康 保 険 法 を 指 す ( 施 行 期 日 は 平 成 28 年 4 月 1 日 ) 1. 標 準 報 酬 月 額 の 等 級 区 分 の 追 加 について 問 1 法 改 正 により 追 加

1

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

その 他 事 業 推 進 体 制 平 成 20 年 3 月 26 日 に 石 垣 島 国 営 土 地 改 良 事 業 推 進 協 議 会 を 設 立 し 事 業 を 推 進 ( 構 成 : 石 垣 市 石 垣 市 議 会 石 垣 島 土 地 改 良 区 石 垣 市 農 業 委 員 会 沖 縄 県 農

小 売 電 気 の 登 録 数 の 推 移 昨 年 8 月 の 前 登 録 申 請 の 受 付 開 始 以 降 小 売 電 気 の 登 録 申 請 は 着 実 に 増 加 しており これまでに310 件 を 登 録 (6 月 30 日 時 点 ) 本 年 4 月 の 全 面 自 由 化 以 降 申

スライド 1

T T VWAPギャランティ 取 引 とは T T VWAPギャランティ 取 引 とは これまでの 成 行 や 指 値 とは 異 なる 東 海 東 京 証 券 が 提 供 する 新 しい 形 の 売 買 方 法 です その 方 法 とは 1 金 融 商 品 取 引 所 ( 以 下 取 引 所 )に

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

( 別 途 調 査 様 式 1) 減 損 損 失 を 認 識 するに 至 った 経 緯 等 1 列 2 列 3 列 4 列 5 列 6 列 7 列 8 列 9 列 10 列 11 列 12 列 13 列 14 列 15 列 16 列 17 列 18 列 19 列 20 列 21 列 22 列 固 定

RaQuest MindManager

Microsoft Word - h doc

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

<4D F736F F D208C6F D F815B90A BC914F82CC91CE899E8FF38BB582C982C282A282C42E646F63>

全設健発第     号

目 次 ログインする 前 に... 4 メンバー 管 理 編 ( 管 理 者 )... 5 ログインする... 6 トップページについて... 7 メンバー 管 理 をする... 8 メンバー 管 理 画 面 について 医 療 機 関 指 定 新 規 追 加 指 定...

<4D F736F F D208DE3905F8D8291AC8B5A8CA48A948EAE89EF8ED0208BC696B18BA492CA8E64976C8F BD90AC E378C8E89FC92F994C5816A>

2. 更 新 内 容 下 記 機 能 改 善 仕 様 変 更 不 具 合 対 応 を 行 いました 動 作 環 境 の 追 加 3.1. 受 講 者 / 管 理 者 クライアントの 動 作 環 境 に 下 記 の OS と Web ブラウザを 追 加 しました Windows 10 Microsof

企業年金制度における個人番号の取扱いについて.PDF

(4) 武 力 攻 撃 原 子 力 災 害 合 同 対 策 協 議 会 との 連 携 1 市 は 国 の 現 地 対 策 本 部 長 が 運 営 する 武 力 攻 撃 原 子 力 災 害 合 同 対 策 協 議 会 に 職 員 を 派 遣 するなど 同 協 議 会 と 必 要 な 連 携 を 図 る

国 税 クレジットカード 納 付 の 創 設 国 税 のクレジットカード 納 付 については マイナンバー 制 度 の 活 用 による 年 金 保 険 料 税 に 係 る 利 便 性 向 上 に 関 するアクションプログラム( 報 告 書 ) においてその 導 入 の 方 向 性 が 示 されている

<4D F736F F D2093CD8F6F82AA954B977682C88C9A95A882CC94BB926682CC DD5F48508C668DDA E646F63>

(5) 給 与 制 度 の 総 合 的 見 直 しの 実 施 状 況 について 概 要 の 給 与 制 度 の 総 合 的 見 直 しにおいては 俸 給 表 の 水 準 の 平 均 2の 引 き 下 げ 及 び 地 域 手 当 の 支 給 割 合 の 見 直 し 等 に 取 り 組 むとされている

050 LGWAN-05月.indd

<4D F736F F D2090C389AA8CA72D92F18F6F2D D F ED28CFC82AF91808DEC837D836A B E838B A815B816A2E646F6378>

<4D F736F F D F5A91EE8BC F368C8E3393FA8DC48D F C8E323893FA916493C B95AA8D CE3816A>

PowerPoint プレゼンテーション

<947A957A8E9197BF C E786C73>

<4D F736F F F696E74202D B E E88E68C9A90DD8BC65F E DC58F4994C52E >

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

Taro-07-1提言概要.jtd

「給与・年金の方」からの確定申告書作成編

- 1 - 総 控 負 傷 疾 病 療 養 産 産 女 性 責 帰 べ 由 試 ~ 8 契 約 契 約 完 了 ほ 契 約 超 締 結 専 門 的 知 識 技 術 験 専 門 的 知 識 高 大 臣 専 門 的 知 識 高 専 門 的 知 識 締 結 契 約 満 歳 締 結 契 約 契 約 係 始

労働時間と休日は、労働条件のもっとも基本的なものの一つです

Flash基礎Chapter1_3稿.indd

SNSとLMSの強みと弱み 統合環境を目指して (教育学部紀要投稿用)


平成24年度 業務概況書

(2) 国 道 196 号 自 転 車 走 行 空 間 社 会 実 験 ( 平 成 21 年 度 ) 概 要 松 山 市 内 の 国 道 196 号 において 自 転 車 レーンを 設 置 する 社 会 実 験 を 実 施 し 歩 行 者 と 自 転 車 の 分 離 による 走 行 空 間 の 安

1. 前 払 式 支 払 手 段 サーバ 型 の 前 払 式 支 払 手 段 に 関 する 利 用 者 保 護 等 発 行 者 があらかじめ 利 用 者 から 資 金 を 受 け 取 り 財 サービスを 受 ける 際 の 支 払 手 段 として 前 払 式 支 払 手 段 が 発 行 される 場 合

<6D313588EF8FE991E58A778D9191E5834B C8EAE DC58F4992F18F6F816A F990B32E786C73>

0439 研究開発推進事業(防衛省所管計上)250614

 三郷市市街化調整区域の整備及び保全の方針(案)

研究者総覧システム

4 ログインをクリックして 下 さい 2. ログイン 方 法 その2 1 右 上 の 人 型 マークをクリックして 下 さい 2 ログインをクリックして 下 さい 3 ご 自 身 の ID とパスワードを 入 力 して 下 さい 4 次 回 から ID 入 力 を 省 略 のチェックボックスをクリッ

(6) 事 務 局 職 場 積 立 NISAの 運 営 に 係 る 以 下 の 事 務 等 を 担 当 する 事 業 主 等 の 組 織 ( 当 該 事 務 を 代 行 する 組 織 を 含 む )をいう イ 利 用 者 からの 諸 届 出 受 付 事 務 ロ 利 用 者 への 諸 連 絡 事 務

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

Transcription:

IPA テクニカルウォッチ DOM Based XSS に 関 するレポート ~JavaScript で HTML を 操 作 するアプリは 要 注 意!~

目 次 はじめに... 2 本 書 の 対 象 読 者... 2 本 書 における 用 語... 3 1. DOM Based XSS の 概 要... 4 1.1. XSS の 種 類... 4 1.2. DOM とは... 6 2. IPA に 報 告 された DOM Based XSS の 脆 弱 性... 9 2.1. 届 出 の 傾 向... 9 2.2. 脆 弱 性 が 作 り 込 まれた 原 因 の 考 察 と 簡 易 調 査 の 結 果... 9 3. DOM Based XSS の 事 例... 11 3.1. 脆 弱 性 があるコード 例 の 紹 介... 11 4. DOM Based XSS の 対 策 方 法... 14 コラム... 17 おわりに... 18 1

はじめに JavaScript は 動 的 にウェブページを 操 作 できる 強 力 な 言 語 であるが 使 い 方 を 誤 ればセキュリ ティ 上 の 問 題 ( 脆 弱 性 )を 作 り 込 んでしまう JavaScript が 関 連 する 代 表 的 な 脆 弱 性 には クロ スサイト スクリプティング( 以 降 XSS と 呼 ぶ)があり IPA への 届 出 も 多 い IPA への XSS の 脆 弱 性 の 届 出 状 況 だが 2012 年 の 後 半 に 変 化 があった これまで 届 出 が 少 なか った DOM Based XSS と 呼 ばれるタイプの XSS の 脆 弱 性 の 届 出 が 増 加 したのである DOM Based XSS は JavaScript から 動 的 に HTML を 操 作 しているアプリ 全 般 に 注 意 が 必 要 な 脆 弱 性 だが このタイプの XSS について 解 説 した 資 料 が 少 ないことや 類 似 の 届 出 が 多 かったことから IPA では 脆 弱 性 の 原 因 や 対 策 方 法 が 理 解 されにくい 状 況 にあると 考 えた 以 上 の 経 緯 から DOM Based XSS の 脆 弱 性 について 解 説 した 資 料 を 公 表 することにした 本 資 料 が 当 該 脆 弱 性 の 理 解 や 対 策 の 参 考 となれば 幸 いである 本 書 の 対 象 読 者 本 書 の 対 象 読 者 は ウェブサイトの 構 築 や 運 営 に 携 わる 方 および JavaScript による 動 的 な HTML 操 作 をするアプリの 開 発 者 を 想 定 している 基 本 的 な XSS の 脆 弱 性 を 知 らない 方 は まず は 下 記 コンテンツの XSS の 項 を 一 読 することをお 薦 めする 知 っていますか? 脆 弱 性 (ぜいじゃくせい) http://www.ipa.go.jp/security/vuln/vuln_contents/index.html 安 全 なウェブサイトの 作 り 方 http://www.ipa.go.jp/security/vuln/websecurity.html 本 書 の 構 成 本 書 は 4 つの 章 およびコラムで 構 成 している 最 初 に DOM Based XSS の 対 策 方 法 を 把 握 さ れたい 方 は P.3 の 本 書 における 用 語 を 確 認 した 上 で 4 章 を 参 照 いただきたい 構 成 要 素 内 容 XSS の 種 類 1. DOM Based XSS の 概 要 DOM および DOM Based XSS の 説 明 2. DOM Based XSS の 届 出 状 況 IPA に 届 け 出 られた DOM Based XSS の 傾 向 3. DOM Based XSS の 事 例 DOM Based XSS が 作 り 込 まれてしまったコード 例 4. DOM Based XSS の 対 策 方 法 対 策 の 考 え 方 対 策 方 法 の 例 同 一 生 成 元 ポリシー(Same Origin Policy)の 概 要 コラム 脆 弱 性 体 験 学 習 ツール AppGoat の 紹 介 2

本 書 における 用 語 JavaScript ウェブブラウザ 上 で 実 行 されるスクリプト 言 語 本 書 において 断 りなく スクリプト と 表 現 し ている 箇 所 は JavaScript のことを 指 す DOM Document Object Model の 略 DOM は HTML ドキュメントや XML ドキュメントをアプリ ケーションから 操 作 するためのアプリケーションプログラミングインターフェース(API)である DOM は ドキュメントの 内 容 をツリー 構 造 ( 以 降 DOM ツリーと 呼 ぶ)で 表 現 する JavaScript から DOM ツリーを 編 集 することにより ウェブブラウザ 上 に 表 示 している HTML や XML のド キュメントの 内 容 を 動 的 に 操 作 できる 図 解 を 交 えた 説 明 は 1.2 DOM とは の 項 を 参 照 いただ きたい XSS クロスサイト スクリプティング(Cross Site Scripting)の 略 リクエストや HTTP ヘッダな どに 含 まれる 情 報 をウェブページへ 出 力 する 処 理 に 問 題 がある 場 合 そのウェブページに 第 三 者 が 用 意 したスクリプト 等 を 埋 め 込 まれてしまう この 問 題 を クロスサイト スクリプティングの 脆 弱 性 と 呼 び この 問 題 を 悪 用 した 攻 撃 手 法 を クロスサイト スクリプティング 攻 撃 と 呼 ぶ XSS フィルタ 一 部 のブラウザに 備 わっている XSS 攻 撃 を 検 知 して 防 御 する 機 能 ブラウザによって 機 能 の 名 称 は 異 なる XSS フィルタにより ウェブアプリケーションに XSS の 脆 弱 性 があったとしても 一 部 の 攻 撃 は 防 ぐことが 可 能 ただし すべての 攻 撃 が 防 げる 訳 ではないため 根 本 的 には 脆 弱 性 を 修 正 する 必 要 がある WAF Web Application Firewall の 略 ウェブアプリケーションの 脆 弱 性 を 悪 用 した 攻 撃 などからウェ ブアプリケーションを 保 護 するソフトウェア またはハードウェアを 指 す WAF は 脆 弱 性 を 修 正 するといったウェブアプリケーションの 実 装 面 での 根 本 的 な 対 策 ではなく 攻 撃 による 影 響 を 低 減 する 対 策 の 一 つである 3

1. DOM Based XSS の 概 要 本 章 では XSS の 種 類 や DOM の 概 念 について 整 理 説 明 し DOM Based XSS とはどのよう な 脆 弱 性 なのかを 解 説 する なお コードを 交 えた 具 体 的 な 事 例 については 3 章 の DOM Based XSS の 事 例 で 紹 介 する 1.1. XSS の 種 類 DOM Based XSS は XSS(クロスサイト スクリプティング)の 脆 弱 性 の 一 種 である 脆 弱 性 の 種 類 をリスト 化 している CWE 1 では XSS の 脆 弱 性 は 下 記 3 種 類 に 分 類 されている Type1: Reflected XSS (or Non-Persistent) Type2: Stored XSS (or Persistent) Type0: DOM Based XSS Type1: Reflected XSS (or Non-Persistent) Type1 は ユーザからのリクエストに 含 まれるスクリプトに 相 当 する 文 字 列 を ウェブアプリケ ーションが 当 該 リクエストへのレスポンス(ウェブページ) 内 にスクリプトとして 出 力 してしまう タイプである( 図 1) スクリプトはリクエストの 送 信 者 へ 返 ることから 反 射 型 クロスサイト スクリプティング(Reflected XSS)と 呼 ばれる 脆 弱 性 のあるウェブアプリの 挙 動 攻 撃 シナリオ スクリプト 反 射!! 攻 撃 者 スクリプト 実 行 攻 撃 者 ポイント サイトA スクリプトはリクエストの 送 信 者 へ 返 る 脆 弱 性 の 原 因 箇 所 はウェブアプリの ウェブページ 出 力 処 理 スクリプト 実 行 攻 撃 対 象 者 Click サイトA 図 1: Reflected XSS の 攻 撃 イメージ Type2: Stored XSS (or Persistent) Type2 は ユーザからのリクエストに 含 まれるスクリプトに 相 当 する 文 字 列 を ウェブアプリケ ーション 内 部 に 永 続 的 に 保 存 し 保 存 した 文 字 列 をスクリプトとしてウェブページに 出 力 してしま うタイプである( 図 2) ユーザが 当 該 ページを 閲 覧 するたびに 保 存 した 文 字 列 がスクリプトと して 実 行 されることから 格 納 型 クロスサイト スクリプティング(Stored XSS)と 呼 ばれる 1 情 報 処 理 推 進 機 構 : 情 報 セキュリティ: 共 通 脆 弱 性 タイプ 一 覧 CWE 概 説 http://www.ipa.go.jp/security/vuln/cwe.html 4

脆 弱 性 のあるウェブアプリの 挙 動 攻 撃 シナリオ スクリプト 格 納!! スクリプト 格 納!! 攻 撃 者 サイトB 攻 撃 者 サイトB ポイント スクリプトはサーバに 一 旦 格 納 される 脆 弱 性 の 原 因 箇 所 はウェブアプリの ウェブページ 出 力 処 理 スクリプト 実 行 攻 撃 対 象 者 サイトB 図 2: Stored XSS の 攻 撃 イメージ Type0: DOM Based XSS Type0 は ウェブページに 含 まれる 正 規 のスクリプトにより 動 的 にウェブページを 操 作 した 結 果 意 図 しないスクリプトをウェブページに 出 力 してしまうタイプである( 図 3 ) ウェブページ を 操 作 する 際 の 仕 組 みを DOM と 呼 ぶことから このタイプの XSS は DOM ベースのクロスサイ ト スクリプティング(DOM Based XSS)と 呼 ばれている DOM については 次 項 を 参 照 いただ きたい 脆 弱 性 のあるアプリの 挙 動 攻 撃 シナリオ( 攻 撃 者 省 略 ) スクリプト(JavaScript 等 )により 動 的 にウェブページを 出 力 する 際 に 意 図 せずスクリプトタグを 生 成!! Click ポイント 正 規 のスクリプトにより 動 的 にページを 操 作 ( 出 力 )する 際 に 意 図 しないスクリプトが 生 成 される 脆 弱 性 の 原 因 箇 所 は 上 記 ス クリプトによる 処 理 攻 撃 対 象 者 スクリプト 実 行 サイトC 図 3: DOM Based XSS の 攻 撃 イメージ Type1 Type2 のいずれも ウェブアプリケーションが リクエストに 含 まれるスクリプトに 相 当 する 文 字 列 を 基 にウェブページを 出 力 することにより ユーザのウェブブラウザ 上 で 不 正 なスク リプトが 実 行 される これは ウェブアプリケーションによるウェブページ 出 力 処 理 に 問 題 がある ため 作 り 込 まれてしまう 脆 弱 性 と 言 える 5

対 して Type0 は ウェブブラウザなどのクライアント 上 で 実 行 される 正 規 のスクリプトによる ウェブページ 操 作 の 結 果 不 正 なスクリプトが 実 行 される これは スクリプトによるウェブペー ジ 出 力 処 理 (DOM 操 作 )に 問 題 があるため 作 り 込 まれてしまう 脆 弱 性 と 言 えるだろう なお ウェブページ 出 力 処 理 はスクリプトのみで 実 現 しているため 該 当 するスクリプトが 存 在 すれば サーバとの 通 信 が 発 生 しないプログラムであったとしても Type0(DOM Based XSS)の 脆 弱 性 が 作 り 込 まれてしまう 可 能 性 がある DOM 操 作 を 実 装 しているプログラムの 開 発 者 は 注 意 いただきたい 1.2. DOM とは DOM(Document Object Model)は HTML ドキュメントや XML ドキュメントをアプリケー ションから 操 作 するための API である W3C が 標 準 化 2しており 様 々なプログラミング 言 語 やラ イブラリが DOM をサポートしている ここでは 本 書 のテーマにあわせ JavaScript から HTML を 操 作 する 際 の DOM を 説 明 する HTML と DOM ツリー HTML(HyperText Markup Language)では 次 のように HTML タグを 使 用 して head や title などの 要 素 を 記 述 できる 1 <html> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 4 <title>サンプルページ</title> 5 </head> 6 <body> 7 <p id="p1">このページはサンプルです </p> 8 </body> 9 </html> 要 素 は 入 れ 子 にして 記 述 できるので 要 素 と 要 素 の 間 には 親 子 関 係 や 兄 弟 関 係 がある 上 記 の HTML ドキュメントの 場 合 head 要 素 は html 要 素 の 子 であり title 要 素 と meta 要 素 とは 兄 弟 関 係 にある このような 関 係 を DOM は 以 下 のようなノードのツリー 構 造 で 提 供 する このよう なツリーを DOM ツリーと 呼 ぶことがある なお ツリー 構 造 のルートはドキュメント 全 体 を 表 す Document ノードである Document html ノード / Node ドキュメントノード / Document Node 要 素 ノード / Element Node head body テキストノード / Text Node meta title p サンプ このペ 図 4: DOM が 提 供 する HTML ドキュメントのツリー 構 造 (DOM ツリー) 2 W3C Document Object Model http://www.w3.org/dom/ 6

DOM を 使 った HTML の 操 作 DOM には 対 象 のドキュメントを 操 作 するためのメソッドやプロパティが 定 義 されている こ こでは JavaScript から DOM を 通 じて HTML ドキュメントを 操 作 する 例 を 示 す 先 に 示 した HTML ドキュメントに JavaScript コードを 追 加 して 次 のようにする 1 <html> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 4 <title>サンプルページ</title> 5 </head> 6 <body> 7 <p id="p1">このページはサンプルです </p> 8 <script type="text/javascript"> 9 settimeout( function() { 10 var p1_textnode = document.getelementbyid('p1').firstchild; 11 p1_textnode.data = 'このページはサンプルでした '; 12 }, 5000 ); 13 </script> 14 </body> 15 </html> 赤 字 が 追 記 箇 所 この HTML ドキュメントの DOM ツリーは 以 下 のように script 要 素 が 追 加 されたものなる Document html ノード / Node ドキュメントノード / Document Node 要 素 ノード / Element Node head body テキストノード / Text Node meta title p script サンプ このペ 図 5: JavaScript コードを 追 加 した HTML ドキュメントの DOM ツリー これをウェブブラウザで 表 示 した 場 合 このページはサンプルです との 表 示 がされ 5 秒 後 には このページはサンプルでした に 書 き 換 えられる 5 秒 後 に 書 換 えられる 表 示 直 後 5 秒 後 以 降 図 6: JavaScript コードによるコンテンツの 書 き 換 え 7

この 書 き 換 えは HTML ドキュメントに 含 まれる JavaScript コードから DOM を 通 じて 行 わ れている(10~11 行 目 ) 10 行 目 は 書 き 換 え 対 象 となる 要 素 を 選 択 する 処 理 である ここでは 7 行 目 の p 要 素 の 子 のテ キストノードを 選 択 している p 要 素 には id 属 性 を 設 定 しているので getelementbyid メソッ ドを 用 いて id 属 性 の 値 p1 から 取 得 することができる その 子 ノードを 選 択 するために firstchild プロパティを 用 い 最 終 的 に 目 的 のテキストノードを 選 択 している 要 素 を 選 択 する 処 理 はこの 他 に 名 前 から 選 択 する getelementsbyname メソッドや タグ 名 か ら 選 択 する getelementsbytagname メソッドがある また 親 子 関 係 や 兄 弟 関 係 を 辿 るプロパテ ィも 他 に 様 々なものが 存 在 する 11 行 目 は 書 き 換 えの 処 理 だ ここでは data プロパティに 値 を 設 定 する 方 法 で プレーンテ キストとしてテキスト このページはサンプルでした を 設 定 している プレーンテキストとし て 扱 われるようにすれば 万 一 HTML タグがテキスト 中 に 含 まれた 場 合 でも HTML タグとして 解 釈 されることがないため 安 全 な 方 法 だ このように HTML ドキュメント 中 の 要 素 を 選 択 し 選 択 した 要 素 を 書 き 換 えるのが DOM を 使 った HTML ドキュメント 操 作 の 基 本 となる このような 操 作 と JavaScript が 持 っている 別 の 機 能 を 組 み 合 わせることで 様 々な 機 能 が 実 現 されている 以 下 はその 例 である ページ 遷 移 することなく 新 たなデータを 読 み 込 み 表 示 する たとえば 地 図 を 表 示 した 際 同 一 ページ 内 でスクロールさせたり 縮 尺 を 変 更 したりする ユーザのマウス 操 作 に 応 じて 動 的 にページの 内 容 を 書 き 換 える ウェブブラウザの 機 能 を 拡 張 する 書 き 換 えの 際 に 生 じる DOM Based XSS 前 項 で 紹 介 した 書 き 換 えの 他 の 方 法 として 要 素 の innerhtml プロパティに 値 を 設 定 する 方 法 がある innerhtml プロパティの 場 合 設 定 したテキストはプレーンテキストではなく HTML として 解 釈 展 開 されるので 表 現 力 が 高 い ただし HTML として 扱 われる 以 上 意 図 しない 値 が 設 定 されないよう 配 慮 する 必 要 がある もし 配 慮 が 行 き 届 かず 意 図 しない HTML が 展 開 された 場 合 意 図 しないスクリプトの 実 行 に 繋 がる 恐 れがある このような DOM を 通 じた HTML 操 作 の 結 果 として 意 図 しないスクリ プトが 実 行 されることや それを 許 す 脆 弱 性 を 指 して DOM Based XSS という 8

2. IPA に 報 告 された DOM Based XSS の 脆 弱 性 IPA は 情 報 セキュリティ 早 期 警 戒 パートナーシップ において 脆 弱 性 関 連 情 報 の 届 出 を 受 け 付 ける 機 関 として 活 動 している 本 章 では IPA に 届 け 出 られた DOM Based XSS の 脆 弱 性 の 傾 向 を 踏 まえ 脆 弱 性 が 作 り 込 まれてしまった 原 因 を 考 察 する 2.1. 届 出 の 傾 向 2012 年 に IPA に 届 け 出 られた DOM Based XSS の 脆 弱 性 は 累 計 130 件 であった( 図 2-1) これはウェブサイトおよびソフトウェア 製 品 の 届 出 の 合 計 件 数 である IPA への 届 出 は 発 見 者 の 善 意 で 成 り 立 っており 必 ずしも 世 の 中 のウェブサイトの 脆 弱 性 の 傾 向 が 反 映 されている 訳 ではない が DOM Based XSS の 脆 弱 性 が 一 定 数 存 在 していることは 確 認 できる DOM Based XSSの 届 出 件 数 (2012 年 ) 100 80 92 届 出 件 数 60 40 20 0 15 第 1 四 半 期 (1 月 ~3 月 ) 2 第 2 四 半 期 (4 月 ~6 月 ) 21 第 3 四 半 期 (7 月 ~9 月 ) 第 4 四 半 期 (10 月 ~12 月 ) 図 2-1: IPA に 届 け 出 られた DOM Based XSS の 届 出 件 数 累 計 130 件 中 ウェブアプリケーションに 関 連 する 届 出 は 125 件 あり 最 も 多 くの 届 出 られた ものは アクセス 解 析 アプリの 設 置 方 法 に 問 題 があるという 内 容 であった これは ウェブアプリ ケーションに 関 連 する 届 出 のうち 68%(85 件 )を 占 める 件 数 である その 他 PC 上 で 使 用 するアプリケーションに 関 する 届 出 は 5 件 であった これらは ウェブブ ラウザのプラグインやデスクトップアプリのヘルプページなどのサーバを 介 さない 箇 所 に 存 在 す る DOM Based XSS の 脆 弱 性 の 届 出 であった 2.2. 脆 弱 性 が 作 り 込 まれた 原 因 の 考 察 と 簡 易 調 査 の 結 果 2012 年 に IPA に 届 け 出 られた DOM Based XSS の 脆 弱 性 について 調 査 した 結 果 脆 弱 性 が 作 り 込 まれた 原 因 はJavaScript によるウェブページへの 出 力 処 理 に 不 備 があるためとIPAでは 考 えた また 調 査 結 果 から 問 題 の 出 力 処 理 は 独 自 開 発 部 分 だけでなく JavaScript ライブラリに 存 在 している 場 合 があることがわかった 9

届 出 の 脆 弱 性 が 作 り 込 まれた 原 因 の 調 査 届 出 の 脆 弱 性 において JavaScript によるウェブページへの 出 力 処 理 に 焦 点 をあて スクリプト に 相 当 する 文 字 列 が 入 り 込 む 箇 所 JavaScript による 該 当 情 報 の 取 得 方 法 JavaScript によ るウェブページへの 出 力 方 法 を 調 査 したところ 表 2-1 のような 結 果 になった 表 2-1 届 出 にみられた 脆 弱 性 関 連 箇 所 スクリプトに 相 当 する 文 字 列 が 入 り 込 む 箇 所 JavaScript による 該 当 情 報 の 取 得 方 法 URL document.location.href document.url URL のクエリストリング document.location.search URL のフラグメント 識 別 子 document.location.hash リファラ document.referrer input 要 素 の value 値 getelementsbytagname("input") title 要 素 のテキストノード Chrome 拡 張 機 能 の API 3 JavaScript による ウェブページへの 出 力 方 法 innerhtml document.write() jquery の html() jquery の append() JavaScript によるウェブページへの 出 力 方 法 において 表 2-1 に 掲 載 したように innerhtml や document.write()などのプロパティやメソッドが 使 われていることがわかった これらはウェブ ページの 構 造 (DOM ツリー)を 意 図 せず 変 更 してしまう 可 能 性 があるため 例 えば 引 数 として 渡 した 文 字 列 に HTML タグに 相 当 する 文 字 列 が 含 まれていれば それをタグとして 解 釈 し DOM ツリーを 変 更 してしまう 以 上 の 調 査 結 果 より innerhtml や document.write()などを 使 用 してウェブページに 情 報 を 出 力 する 処 理 に 不 備 があり 意 図 せず DOM ツリーを 変 更 してしまうことが DOM Based XSS の 脆 弱 性 を 作 り 込 む 原 因 になっていると IPA では 考 える ウェブページへの 出 力 処 理 に 関 するコード 記 述 箇 所 の 調 査 次 に JavaScript によるウェブページへの 出 力 処 理 がどこに 記 述 されているのかを 調 査 した そ の 結 果 問 題 の 出 力 処 理 が JavaScript ライブラリに 記 述 されている 届 出 が 23%(30 件 )あること がわかった JavaScript によるウェブページ 操 作 は jquery などの JavaScript ライブラリを 使 用 することがあるが そのライブラリの 古 いバージョンに 含 まれる 既 知 の 脆 弱 性 が 原 因 であった 問 題 のコードの 所 在 独 自 開 発 77% ライブ ラリ 23% 届 出 の 脆 弱 性 が 作 り 込 まれた 原 因 は JavaScript によるウェブ ページへの 出 力 処 理 の 不 備 と 言 えるが その 出 力 処 理 は 独 自 開 発 とは 限 らないという 結 果 が 出 た 2 割 以 上 の DOM Based XSS の 届 出 がライブラリに 起 因 して いることから JavaScript ライブラリのアップデートが 見 落 と されがちだと IPA では 推 測 する 3 chrome.* APIs - Google Chrome http://developer.chrome.com/extensions/api_index.html 10

3. DOM Based XSS の 事 例 本 章 では IPA に 届 け 出 られた DOM Based XSS の 脆 弱 性 関 連 情 報 を 基 に 脆 弱 性 が 作 り 込 ま れてしまった 例 を 紹 介 する どのような JavaScript のコードが 脆 弱 性 を 作 り 込 んでしまうのか 見 ていこう 3.1. 脆 弱 性 があるコード 例 の 紹 介 動 作 環 境 について JavaScript による DOM 操 作 は 特 定 ブラウザのみ 動 作 する または 動 作 はするが 挙 動 が 異 な るなどの 互 換 性 の 問 題 が 発 生 しやすい それ 故 にブラウザ 依 存 をする 攻 撃 も 存 在 する 本 項 で 紹 介 する 脆 弱 なコードについては Windows OS 上 で 動 作 する 下 記 の 主 要 ブラウザでどのような 挙 動 に なるのかを 確 認 し その 結 果 を 記 載 している なお 脆 弱 なコードは example.jp に 設 置 している ものと 仮 定 する Internet Explorer 8 Firefox 17.0.1 Opera 12.11 Internet Explorer 9 Chrome 24.0.1312.56 m Safari 5.1.7 ブラウザの XSS フィルタはデフォルトの 設 定 のまま 届 出 をもとにした 脆 弱 性 の 例 (1) リンク 情 報 を 動 的 に 出 力 する 処 理 に 問 題 がある ぼやきを 共 有 する 架 空 の 外 部 サービスがあるとする ここでは その 外 部 サービスと 連 携 する JavaScript コードに 問 題 がある 例 を 紹 介 する 問 題 のコード( 一 部 抜 粋 ) 1 2 3 4 5 6 7 8 <div id="q"></div> <script> var url = decodeuricomponent(location.href); var div = document.getelementbyid('q'); div.innerhtml = '<a href="http://(ぼやきサービスの 提 供 元 )/hoge?url=' + url + '" target="_blank">この 記 事 についてぼやく</a>'; </script> ブラウザ 毎 の 挙 動 http://example.jp/?"><img onerror='alert(document.domain)' src=x></img>にアクセスした 際 のブラウザの 挙 動 は 下 記 の 通 りである 対 象 ブラウザすべてでスクリプトが 実 行 されてしま った Internet Explorer 8 [ ] Firefox 17.0.1 [ ] Opera 12.11 [ ] Internet Explorer 9 [ ] Chrome 24.0.1312.56 m [ ] Safari 5.1.7 [ ] [ ]:スクリプトが 実 行 された [ ]:スクリプトが 実 行 されなかった 11

(2) アクセス 解 析 用 のタグの 設 置 方 法 に 問 題 がある 次 に ブラウザのリファラ 情 報 をアクセス 解 析 CGI に 送 信 する JavaScript コードに 問 題 がある 例 を 紹 介 する 問 題 のコード( 一 部 抜 粋 ) 1 <script> 2 3 4 document.write('<img src="http://example.jp/accesslog.cgi?ref=' + document.referrer + '" width="1" height="1">'); 5 </script> ブラウザ 毎 の 挙 動 http://example.com/?"><script>alert(document.domain);</script>にアクセスし そのページ から 脆 弱 なコードが 設 置 された http://example.jp/にアクセスした 際 のブラウザの 挙 動 は 下 記 の 通 りである Internet Explorer 8 [ ] Firefox 17.0.1 [ ] Opera 12.11 [ ] Internet Explorer 9 [ ] Chrome 24.0.1312.56 m [ ] Safari 5.1.7 [ ] [ ]:スクリプトが 実 行 された [ ]:スクリプトが 実 行 されなかった なお Internet Explorer 8 および 9 以 外 のウェブブラウザは リファラの 値 がパーセントエ ンコード 4 されているため 上 記 のスクリプトは 実 行 されなかった (3) JavaScript ライブラリに 問 題 がある JavaScript により 動 的 にウェブページを 操 作 する 場 合 jquery や Dojo Toolkit 5 などの JavaScript ライブラリを 使 用 することがあるが これらの JavaScript ライブラリに DOM Based XSS の 原 因 になり 得 る 問 題 が 見 つかることがあるため ウェブサイト 運 営 者 は 注 意 が 必 要 である 実 際 に IPA へ jquery Mobile というライブラリの 古 いバージョンに 起 因 する XSS の 届 出 もあっ た jquery Mobile の 古 いバージョンには ドメインが 異 なるサイトの HTML を 読 み 込 み 表 示 中 のページに 展 開 してしまう 問 題 があったため 攻 撃 者 が 用 意 したスクリプトを 表 示 中 のページで 実 行 させることも 可 能 であった 6 この 問 題 は jquery Mobile Beta 2 で 修 正 されたというアナウン スがなされている 7 なお 実 際 に DOM Based XSS の 脆 弱 性 が 作 り 込 まれるかどうかは ライブラリの 問 題 箇 所 や ウェブサイトの 作 りにも 依 存 する 4 RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax http://tools.ietf.org/html/rfc3986#section-2.1 5 Unbeatable JavaScript Tools - The Dojo Toolkit http://dojotoolkit.org/ 6 XSS with XHR level2 cross domain request Issue #1990 jquery/jquery-mobile GitHub https://github.com/jquery/jquery-mobile/issues/1990 7 jquery Mobile Beta 2 Released! jquery Mobile http://jquerymobile.com/blog/2011/08/03/jquery-mobile-beta-2-released/ 12

(4) ウェブブラウザのプラグインに 問 題 がある ウェブブラウザの 中 には 追 加 でプラグインをインストールすることにより 機 能 拡 張 が 可 能 なも のが 存 在 する ブラウザによって 呼 称 が 異 なり Firefox はアドオン Chrome は 拡 張 機 能 などと 呼 ばれる 例 えば Chrome の 拡 張 機 能 は HTML や JavaScript を 用 いて 作 成 できるが JavaScript のコードの 内 容 によっては DOM Based XSS の 脆 弱 性 を 作 り 込 んでしまう 問 題 のコード manifest.json 1 { 2 "name": "XSS-TEST", 3 "version": "1", 4 "manifest_version": 2, 5 "description": "DOM Based XSS PoC", 6 "content_scripts": [ { "matches": ["http://*/*"],"js": ["ipa.js"] } ] 7 } ipa.js 1 document.body.innerhtml += '<p>このページは' + location.href + 'です</p>'; ブラウザの 挙 動 上 記 の 拡 張 機 能 を Chrome にインストールした 状 態 で http://( 任 意 のサイト)/#<img src=x onerror=alert(document.domain)>にアクセスすると 当 該 サイトでスクリプトが 実 行 される Chrome 拡 張 機 能 の 注 意 点 とセキュリティ 機 構 注 意 点 Chrome のアドオンは 下 記 の URL 形 式 でアドオン 内 のファイルにアクセスできる 8 例 えば アドオン 内 に 開 発 者 が 用 意 した html ファイルを 設 置 し その html 内 に DOM Based XSS の 脆 弱 性 が 存 在 した 場 合 chrome-extension://<extensionid>/ipa.html#<img src=x onerror=alert(document.domain)>のような URL にユーザを 誘 導 すると 攻 撃 が 成 立 する さらに 当 該 拡 張 機 能 において 機 微 な 情 報 を localstorage 9 内 に 保 存 していた 場 合 は 攻 撃 者 が 用 意 したスクリプト 経 由 で 情 報 を 窃 取 改 ざん 削 除 される 可 能 性 がある セキュリティ 機 構 chrome-extension://<extensionid>/<pathtofile> Chrome 拡 張 機 能 では 意 図 しないスクリプト 実 行 を 回 避 するために Content Security Policy (CSP)と 呼 ばれるセキュリティ 機 構 を 実 装 し 始 めたようである この 機 構 が 動 作 すれば 特 定 の JavaScript の 実 行 を 制 限 し XSS の 脆 弱 性 の 影 響 を 軽 減 することができる 10 下 記 は CSP により Chrome がスクリプトの 実 行 を 拒 否 した 際 に Chrome の Developer Tools のコンソー ルに 出 力 されたメッセージである Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self' chrome-extension-resource:". 8 Overview - Google Chrome http://developer.chrome.com/extensions/overview.html#relative-urls 9 Web Storage API の 構 成 要 素 の 一 つ ウェブブラウザに 比 較 的 大 きなデータを 永 続 的 に 保 存 できる 通 常 は 同 一 生 成 元 ポリシーの 制 限 があるため 同 一 生 成 元 からのみデータの 取 得 が 可 能 詳 しくはコラム 参 照 10 Content Security Policy (CSP) - Google Chrome http://developer.chrome.com/extensions/contentsecuritypolicy.html 13

4. DOM Based XSS の 対 策 方 法 本 章 では DOM Based XSS の 脆 弱 性 に 関 する 対 策 方 法 の 例 を 3 つ 紹 介 する DOM Based XSS の 脆 弱 性 は JavaScript によるウェブページへの 出 力 方 法 に 原 因 があるといえる ウェブページ へ 出 力 する 内 容 を 第 三 者 が 操 作 可 能 な 情 報 をもとにする 場 合 意 図 しないスクリプトの 埋 め 込 みや HTML タグが 挿 入 されないように 対 策 していただきたい 対 策 方 法 (1) DOM 操 作 用 のメソッドやプロパティを 使 用 する DOM 操 作 用 のメソッドやプロパティを 使 用 する これらは 意 図 しない DOM ツリーの 変 更 が 起 こりにくいため 結 果 的 に DOM Based XSS の 脆 弱 性 を 作 り 込 みにくくなる DOM 操 作 用 のメ ソッドの 一 部 を 下 記 に 示 す メソッド 名 createelement() createtextnode() appendchild() insertbefore() setattribute() 用 途 新 たに 要 素 ノードを 作 成 する 新 たにテキストノードを 作 成 する 指 定 したノードの 最 後 に 指 定 したノードを 挿 入 する 指 定 したノードの 直 前 に 指 定 したノードを 挿 入 する 指 定 した 属 性 に 指 定 した 値 を 設 定 する 3.1.(1)リンク 情 報 を 動 的 に 出 力 する 処 理 に 問 題 がある のコードを DOM 操 作 用 のメソ ッドを 使 うように 修 正 した 例 を 示 す コードの 修 正 例 1 <div id="q"></div> 2 <script> 3 var url = decodeuricomponent(location.href); 4 var div = document.getelementbyid('q'); 5 var a = document.createelement('a'); 6 a.setattribute('href','http://(ぼやきサービス)/hoge?url=' 7 + encodeuricomponent(url)); 8 a.setattribute('target','_blank'); 9 var newtext = document.createtextnode('この 記 事 についてぼやく'); 10 a.appendchild(newtext); 11 div.appendchild(a); 12 </script> 赤 字 が 修 正 箇 所 jquery 等 のライブラリを 使 用 している 場 合 は そのライブラリに DOM 操 作 用 のメソッドが 用 意 されていることがあるため そちらを 使 用 しても 同 様 の 効 果 が 見 込 める 14

(2) 文 脈 に 応 じてエスケープ 処 理 を 施 す innerhtml や document.write()などは DOM ツリーを 意 図 せず 変 更 してしまう 恐 れがある こ れらを 使 用 する 場 合 は 出 力 箇 所 の 文 脈 に 応 じてエスケープ 処 理 を 実 施 する 例 えば href 属 性 や src 属 性 の 値 の 一 部 として 出 力 する 際 は 値 は URI 形 式 であることが 想 定 されるため URI として 使 用 できない 文 字 をエンコード(パーセントエンコーディング)する 必 要 がある 下 記 に 3.1.(2)アクセス 解 析 用 のタグの 設 置 方 法 に 問 題 がある のコードの 修 正 例 を 示 す コードの 修 正 例 1 <script> 2 document.write('<img src="http://example.jp/accesslog.cgi?ref=' 3 + encodeuricomponent(document.referrer) 4 + '" width="1" height="1">'); 5 </script> 赤 字 が 修 正 箇 所 上 記 例 では encodeuricomponent()によりパーセントエンコーディングした 後 に ウェブペー ジに img 要 素 を 出 力 している 厳 密 には 下 記 のように 文 脈 に 応 じた 2 段 階 のエスケープ 処 理 が 必 要 だが パーセントエンコード 後 の URL には HTML エンコードが 必 要 な 記 号 は 現 れないはず なので 上 記 修 正 例 では HTML エンコードはしていない 1. URL(URI)を 組 み 立 てるために Referer をパーセントエンコードする 2. 組 み 立 てた URL を 属 性 値 に 埋 め 込 むために HTML エンコードする なお 基 本 ではあるが 属 性 値 の 始 まりと 終 わりをダブルクォート"で 明 示 するようにしよう 明 示 しない 場 合 属 性 値 の 終 端 の 解 釈 がブラウザにより 異 なる 可 能 性 が 出 てくる さらに 解 釈 の 差 異 が 意 図 しない 属 性 の 追 加 につながる 可 能 性 がある (3) JavaScript ライブラリの 問 題 の 場 合 は ライブラリをアップデートする JavaScript ライブラリに 問 題 があり DOM Based XSS の 脆 弱 性 が 作 り 込 まれてしまう 場 合 が ある ライブラリの 問 題 の 場 合 は 対 策 済 みのバージョンにアップデートする 必 要 がある ライブ ラリに 問 題 があるかどうかは 公 式 サイトの 情 報 を 確 認 いただきたい なお Google などが CDN(Content Delivery Network)で JavaScript ライブラリを 提 供 してい るが 使 用 方 法 によっては 常 に 最 新 版 のライブラリが 使 用 できる コード 例 Google の CDN から jquery 1 系 の 最 新 版 を 読 み 込 む 場 合 1 <script 2 src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> 3 </script> 15

jquery.com の CDN から jquery の 最 新 版 を 読 み 込 む 場 合 1 <script 2 src="http://code.jquery.com/jquery-latest.min.js"> 3 </script> ただし CDN によるバージョンの 自 動 更 新 を 実 現 するためには ライブラリの 互 換 性 問 題 外 部 サービスの 利 用 可 否 などの 運 用 ポリシー 上 の 問 題 キャッシュによる 高 速 化 の 恩 恵 が 受 けにくく なる 点 についての 検 討 が 必 要 だろう 対 策 における 注 意 点 DOM Based XSS は 下 記 のような 特 徴 を 持 つため 攻 撃 を 防 ぐためには 問 題 箇 所 を 修 正 するとい う 根 本 的 な 対 策 が 他 の XSS の 脆 弱 性 と 比 べてより 重 要 となる ウェブサーバが 存 在 しなくとも DOM Based XSS の 脆 弱 性 が 作 り 込 まれる 可 能 性 がある DOM Based XSS は ウェブブラウザなどのクライアント 上 で 実 行 される JavaScript のコー ドに 問 題 があるため 作 り 込 まれてしまう 脆 弱 性 である そのため HTML+JavaScript で 構 成 されたブラウザのアドオンなどにも 当 該 脆 弱 性 が 作 り 込 まれてしまう 可 能 性 がある WAF(Web Application Firewall)や XSS フィルタで 防 ぐことが 困 難 である 上 述 したように 脆 弱 性 の 箇 所 によってはウェブサーバが 存 在 しなくとも DOM Based XSS が 作 り 込 まれる 場 合 がある また URL のフラグメント 識 別 子 の 値 を 使 った 攻 撃 の 場 合 は スクリプトに 相 当 する 文 字 列 はウェブサーバへ 送 信 されない 故 に WAF による 防 御 が 期 待 できない その 他 ウェブブラウザによっては XSS 攻 撃 を 検 知 して 防 御 する XSS フィルタ が 備 わっているが 現 状 の XSS フィルタでは DOM Based XSS の 攻 撃 を 検 知 しないケース が 多 いようだ 11 さらに JavaScript の 標 準 関 数 には HTML エスケープの 機 能 は 用 意 されていない 点 も 注 意 した い そのため HTML の 文 脈 でエスケープ 処 理 を 施 す 際 には 該 当 する 機 能 を JavaScript ライブ ラリを 使 用 して 実 装 する または 自 前 で 実 装 する 必 要 がある 11 Issue 142189 - chromium - Security: URL based DOM XSS bypass on XSS Auditor - An open-source browser project to help move the web forward. - Google Project Hosting http://code.google.com/p/chromium/issues/detail?id=142189 16

コラム 同 一 生 成 元 ポリシー(Same Origin Policy)について JavaScript から 動 的 にウェブページを 操 作 可 能 だが ウェブブラウザのセキュリティ 上 の 制 限 により 操 作 可 能 な 範 囲 を 同 一 生 成 元 (Same Origin)に 制 限 されている RFC 6454 によると 下 記 3 つが 一 致 しているリソースを 同 一 生 成 元 と 呼 んでいる スキーム://ホスト:ポート 番 号 URL のホスト( 例 :www.example.jp, trap.example.jp) スキーム( 例 :http, https, ftp) ポート 番 号 ( 例 :80, 8080, 443) JavaScript から 異 なる 生 成 元 の 情 報 は 操 作 できないため 攻 撃 者 は XSS の 脆 弱 性 を 悪 用 し 攻 撃 対 象 のウェブページで JavaScript を 実 行 させ 同 一 生 成 元 ポリシーの 制 限 を 迂 回 する 利 用 者 は 2つのサイトを 同 時 に 閲 覧 このスクリプトは trap.example.com( 同 一 生 成 元 )の 情 報 しか 操 作 できない www.example.jp 利 用 者 攻 撃 者 trap.example.com 脆 弱 性 体 験 学 習 ツール AppGoat について IPA では 脆 弱 性 が 作 り 込 まれる 原 理 や 対 策 方 法 を 学 習 するツール AppGoat を 無 償 で 公 開 し ている AppGoat のウェブアプリケーション 版 には 故 意 に 脆 弱 性 を 作 り 込 んだウェブアプリ が 内 在 しているため 実 習 形 式 で 脆 弱 性 の 学 習 が 可 能 である DOM Based XSS の 学 習 テーマも 含 まれているため 興 味 がある 方 は 下 記 からダウンロードいただきたい 脆 弱 性 体 験 学 習 ツール AppGoat http://www.ipa.go.jp/security/vuln/appgoat/index.html 17

おわりに DOM Based XSS の 脆 弱 性 について IPA への 届 出 件 数 は 増 加 傾 向 にあります しかし ウェブ サイト 運 営 者 やソフトウェア 開 発 者 の 方 々に DOM Based XSS の 脆 弱 性 を 理 解 していただくため に 提 示 する 資 料 がないという 状 況 でした そのため 本 資 料 を 執 筆 しました 執 筆 のきっかけとな る 届 出 をしていただいた 発 見 者 の 方 々に 感 謝 します 今 後 も IPA は セキュリティに 関 する 有 用 な 情 報 を 発 信 できるよう 活 動 を 続 けていきます 18

IPA テクニカルウォッチ DOM Based XSS に 関 するレポート [ 発 行 ] 2013 年 1 月 29 日 [ 著 作 制 作 ] 独 立 行 政 法 人 情 報 処 理 推 進 機 構 セキュリティセンター 編 集 責 任 小 林 偉 昭 執 筆 者 谷 口 隼 祐 永 安 佑 希 允 協 力 者 徳 丸 浩 ( 非 常 勤 研 究 員 )