Mais conteúdo relacionado Semelhante a Owasp top10 2017 a4 xxe (20) Mais de OWASP Nagoya (17) Owasp top10 2017 a4 xxe2. 自己紹介
加藤 人生(かとう ひとみ)
・FB https://www.facebook.com/htmkatou
・twitter https://twitter.com/wagtail_jp
ある会社の脆弱性診断サービスを提供する部門にて脆弱性診断の仕事をしています。
(主にプラットフォーム診断とツールを使ったWebアプリケーション診断をしています。)
また、OWASP Nagoya chapter のスタッフもしております。
※念のため:今回の発表の内容はあくまでも個人の見解であり、私が所属する企業の見解では
ありません。
3. アジェンダ
1.OWASP Top 10 2017とXML 外部エンティティ参照(XXE)
2.A4:2017 XML 外部エンティティ参照(XXE)とは?
3.XML 外部エンティティ参照(XXE)の対処について
4. 1. OWASP Top 10 2017とXML 外部エンティティ参照
(XXE) ①
OWASP Top 10 2017について
● OWASP Top 10の現時点の最新版
● Webアプリケーションの代表的なセキュリティリスクを10個
に纏めたもの
● Webアプリケーションセキュリティの問題や改善提案を簡潔
にかつ確認方法を含めて提供
● OWASP Top 10はWebアプリケーションセキュリティのデファ
クト・スタンダードとなっています。
7. 1. OWASP Top 10 2017とXML 外部エンティティ参照
(XXE) ②
XML 外部エンテ
ィティ参照(XXE)
は、2017でいき
なりランクイン
8. 1. OWASP Top 10 2017とXML 外部エンティティ参照
(XXE) ③
● 主にソースコード分析を行うセキュリティテストツール(SAST)にて
多く検知されたことがランクインの根拠となっているそうです。
● XML 外部エンティティ参照(XXE)が脆弱性として報告されたのは、
2017年以前ですが、ここ最近、注目を集めている脆弱性となります。
● JVN iPedia 脆弱性対策情報データベースにて検索すると、2009年2月
には既知の脆弱性として登場しています。
JVN iPedia 脆弱性対策情報データベース
https://jvndb.jvn.jp/
10. 2. A4:2017 XML 外部エンティティ参照 (XXE) とは? ②
● 外部エンティティ参照は、XMLのDTD(Document Type Definition)定義
において、外部ファイルの内容を参照する形で実体宣言されたもの
を実体参照することを指します。
● DTDは、XML文章を一定の構文に従ってルール化したものです。
● その中で、文字列や外部ファイルを実体として事前に指定しておき、
XML内で参照することを実体参照と言います。
11. 2. A4:2017 XML 外部エンティティ参照 (XXE) とは? ③
● 外部エンティティは、DTD内で次のように定義します。
● また、 XML内で次のように参照します。
● 上記のファイル名を本来とは異なるものにして実体宣言させる
ことで発生するのがこの攻撃の原理です。
<!ENTITY 実体名 SYSTEM "ファイル名">
&実体名;
12. 2. A4:2017 XML 外部エンティティ参照 (XXE) とは? ④
外部エンティティ参照(XXE)で出来てしまうこと
● サーバからデータを収集する(システムファイルへのアクセス等)
● 別のホストへのアクセスによる情報収集
● 終わりのないファイルを処理させることによるサーバへのDoS攻撃
シナリオ#1: 攻撃者はサーバからデータを取り出そうと試みます:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/passwd"
>]><foo>&xxe;</foo>
シナリオ#2: 攻撃者は、上記のENTITY行を次のように変更して、サーバーのプライベートネット
ワークを調べようとします:
<!ENTITY xxe SYSTEM "https://192.168.1.1/private"
シナリオ#3:攻撃者は終わりのないファイルを含めることでDoS攻撃を試みます:
<!ENTITY xxe SYSTEM "file:///dev/random" >]>
13. 2. A4:2017 XML 外部エンティティ参照 (XXE) とは? ⑤
確認シナリオ:サーバのシステムファイル( win.ini )の内容を閲覧する。
①次の条件にあった対象を探します。
・リクエストにて「<?xml version=“1.0”?>」のように送信するもの。
・レスポンスにて、リクエストで投げた値をそのまま表示するもの。
②リクエストを発生させて、ローカルプロキシ※でリクエストを一時停止させます。
③リクエストの<?xml version=“1.0”?>の後に下記を入れ込みます。
<!DOCTYPE name [<!ENTITY 実体名 SYSTEM "/windows/win.ini">]>
※リクエストの一時停止や内容の書き換えは、OWASP ZAP等で実施可能です。
15. 3. XML 外部エンティティ参照 (XXE) の対処について
①
そもそも外部エンティティ参照(XXE)の発生頻度はどれほどあるのか
● 製品に対する既知の脆弱性として取り上げられる機会は増えている。しか
し、一般的なWebサイトの診断で良く見かけるものでもない。
XMLベースのWebサービスやアプリケーション等に特化した
脆弱性のため。
XMLにて外部からのデータの受け取りを行わないシステムには発生す
る要素がないと考えられます。
16. 3. XML 外部エンティティ参照 (XXE) の対処について
②
対策としては、外部からのデータの受け取りにXMLではなく、JSON等
を用いることが有効と考えられます。
ただし、外部からのデータの受け取りをJSONに変えるだけでなく、受
け取る側でXML 解析等を無効にする等の対応も必要です。(受け取り
側がXMLを解析出来る場合は、リクエスト内容とContent-Type をXMLに
書き換えることでXXEを発生させれる場合があるようです。)
Playing with Content-Type – XXE on JSON Endpoints
https://blog.netspi.com/playing-content-type-xxe-json-endpoints/
17. 3. XML 外部エンティティ参照 (XXE) の対処について
③
また、外部エンティティ参照は、不具合ではなくXMLが持つ機能です
ので、悪用されないように適切な設定等、対策を行うという観点で考
えて頂いた方が良いと思われます。
OWASP Cheat Sheet ‘XXE Prevention’に従い、アプリケーション内のすべ
てのXMLパーサでXML外部エンティティとDTD処理を無効にして下さい。
OWASP Cheat Sheet 'XXE Prevention'
https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet/
※なお、上記のURLのページは下記へのリンクの紹介ページとなっております。
https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html
19. 3. XML 外部エンティティ参照 (XXE) の対処について
④
さらに、アプリケーションまたは基盤となるオペレーティングシステ
ムで使用されているすべてのXMLプロセッサおよびライブラリにパッ
チをあてるかアップグレードを検討して下さい。
SOAPについては、SOAP 1.2かそれ以降のものへの更新を検討します。
パッチの適用または新しいバージョンにすることで、リクエスト内の
DTD を許可しないか、DTD 部分が存在する場合にこれを無視する等の
機能が組み込まれていることが期待できます。