Enviar pesquisa
Carregar
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
•
1 gostou
•
1,422 visualizações
J
JPCERT Coordination Center
Seguir
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 33
Baixar agora
Baixar para ler offline
Recomendados
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
JPCERT Coordination Center
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JPCERT Coordination Center
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
JPCERT Coordination Center
MySQL Connector/J における SQL インジェクションの脆弱性
MySQL Connector/J における SQL インジェクションの脆弱性
JPCERT Coordination Center
Apache Axis2におけるXML署名検証不備
Apache Axis2におけるXML署名検証不備
JPCERT Coordination Center
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
JPCERT Coordination Center
Apache Struts2 における任意の Java メソッド実行の脆弱性
Apache Struts2 における任意の Java メソッド実行の脆弱性
JPCERT Coordination Center
Mais conteúdo relacionado
Mais procurados
Struts2を始めよう!
Struts2を始めよう!
Shinpei Ohtani
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
JPCERT Coordination Center
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
JPCERT Coordination Center
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
JPCERT Coordination Center
クロスサイトリクエストフォージェリ(CSRF)とその対策
クロスサイトリクエストフォージェリ(CSRF)とその対策
JPCERT Coordination Center
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
JPCERT Coordination Center
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JPCERT Coordination Center
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
Yosuke HASEGAWA
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Hiroshi Tokumaru
Spring fest2020 spring-security
Spring fest2020 spring-security
土岐 孝平
Use JWT access-token on Grails REST API
Use JWT access-token on Grails REST API
Uehara Junji
Lt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdi
Norito Agetsuma
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
Synthesijer jjug 201504_01
Synthesijer jjug 201504_01
Takefumi MIYOSHI
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
Hiroshi Tokumaru
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
JPCERT Coordination Center
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
Sen Ueno
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)
Masatoshi Tada
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
とある診断員とSQLインジェクション
とある診断員とSQLインジェクション
zaki4649
Mais procurados
(20)
Struts2を始めよう!
Struts2を始めよう!
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
クロスサイトリクエストフォージェリ(CSRF)とその対策
クロスサイトリクエストフォージェリ(CSRF)とその対策
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Spring fest2020 spring-security
Spring fest2020 spring-security
Use JWT access-token on Grails REST API
Use JWT access-token on Grails REST API
Lt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdi
Keycloak拡張入門
Keycloak拡張入門
Synthesijer jjug 201504_01
Synthesijer jjug 201504_01
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
とある診断員とSQLインジェクション
とある診断員とSQLインジェクション
Destaque
OWASP ZAP(など)で挑む SECCON
OWASP ZAP(など)で挑む SECCON
Jun Matsumoto
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
JPCERT Coordination Center
Blojsom におけるクロスサイトスクリプティングの脆弱性
Blojsom におけるクロスサイトスクリプティングの脆弱性
JPCERT Coordination Center
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
JPCERT Coordination Center
脆弱性情報はこうしてやってくる
脆弱性情報はこうしてやってくる
JPCERT Coordination Center
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
JPCERT Coordination Center
自分よりも技術力の高い会社に入社して感じたこと
自分よりも技術力の高い会社に入社して感じたこと
Suzuki Masayuki
Devsumi2015_20E1 エンジニアが知っておきたいお金の話
Devsumi2015_20E1 エンジニアが知っておきたいお金の話
Akio Doi
とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達
zaki4649
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
teapipin
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
Shinichi Hirauchi
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
Muneaki Nishimura
Android Secure Coding
Android Secure Coding
JPCERT Coordination Center
フーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組み
yuichi takeda
Destaque
(14)
OWASP ZAP(など)で挑む SECCON
OWASP ZAP(など)で挑む SECCON
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
Blojsom におけるクロスサイトスクリプティングの脆弱性
Blojsom におけるクロスサイトスクリプティングの脆弱性
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
脆弱性情報はこうしてやってくる
脆弱性情報はこうしてやってくる
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
自分よりも技術力の高い会社に入社して感じたこと
自分よりも技術力の高い会社に入社して感じたこと
Devsumi2015_20E1 エンジニアが知っておきたいお金の話
Devsumi2015_20E1 エンジニアが知っておきたいお金の話
とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
Android Secure Coding
Android Secure Coding
フーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組み
Semelhante a Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Java/Androidセキュアコーディング
Java/Androidセキュアコーディング
Masaki Kubo
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 Java
Kazuhiro Hara
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Hirofumi Iwasaki
マイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karate
Takanori Suzuki
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
hiroya
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
Hiroyuki Ohnaka
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
Naoto Gohko
cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)
iret, Inc.
Java EE8 Report
Java EE8 Report
Norito Agetsuma
Apache Torqueについて
Apache Torqueについて
tako pons
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoT
Shin-ya Koga
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
Shotaro Suzuki
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
Yuji Kubota
SAStruts Seminar In Tripodworks
SAStruts Seminar In Tripodworks
tripodworks
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
Takakiyo Tanaka
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
WebRTC meetup Tokyo 1
WebRTC meetup Tokyo 1
mganeko
JavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jp
Norito Agetsuma
Semelhante a Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
(20)
Java/Androidセキュアコーディング
Java/Androidセキュアコーディング
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 Java
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
マイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karate
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)
Java EE8 Report
Java EE8 Report
Apache Torqueについて
Apache Torqueについて
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoT
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
SAStruts Seminar In Tripodworks
SAStruts Seminar In Tripodworks
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
WebRTC meetup Tokyo 1
WebRTC meetup Tokyo 1
JavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jp
Mais de JPCERT Coordination Center
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
JPCERT Coordination Center
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
JPCERT Coordination Center
DLL読み込みの問題を読み解く
DLL読み込みの問題を読み解く
JPCERT Coordination Center
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
JPCERT Coordination Center
ソフトウェアセキュリティ保証成熟度モデル
ソフトウェアセキュリティ保証成熟度モデル
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
JPCERT Coordination Center
Mais de JPCERT Coordination Center
(9)
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
DLL読み込みの問題を読み解く
DLL読み込みの問題を読み解く
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
ソフトウェアセキュリティ保証成熟度モデル
ソフトウェアセキュリティ保証成熟度モデル
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
1.
Copyright©2013 JPCERT/CC All
rights reserved. 「Javaアプリケーション脆弱性事例調査資料」について この資料は、Javaプログラマである皆様に、脆弱性を身 近な問題として感じてもらい、セキュアコーディングの 重要性を認識していただくことを目指して作成していま す。 「Javaセキュアコーディングスタンダード CERT/Oracle版」と合わせて、セキュアコーディングに 関する理解を深めるためにご利用ください。 JPCERTコーディネーションセンター セキュアコーディングプロジェクト secure-coding@jpcert.or.jp 1 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:16:49 +09'00'
2.
Apache ActiveMQにおける 認証処理不備の脆弱性 AMQ-1272 2
3.
Copyright©2013 JPCERT/CC All
rights reserved. ActiveMQ とは サーバへの処理要求を非同期処理するためのミドルウェ ア APIとしてJMS(JavaMessageService) を実装しており、 Javaとの親和性が高い OpenWireやStomp等9種類以上のプロトコルが使用可能 3 Webサービス Server Server App App アプリケーション
4.
Copyright©2013 JPCERT/CC All
rights reserved. ActiveMQ の使用例: IM 中継サーバ 送信者は、受信者の状態に関わらずActiveMQに メッセージを預ければよい 受信者は好きなタイミングでメッセージを受け 取ることが可能 4 友人に同報送信 今受け取れる人 にはすぐ届く 今受け取れない人には 受け取れる状態になっ たら届く 受け取り状況を 随時確認できる Jabber IM Server Powered by
5.
Copyright©2013 JPCERT/CC All
rights reserved. 脆弱性の概要 ActiveMQサーバに接続する際、IDとパスワード による認証を行うが、この認証処理が正しく行 われず、誰もがログインできる状態だった。 存在するユーザになりすますことも、存在しな いユーザで操作することも可能になってしまっ ていた。 5 ※本ドキュメントは、脆弱性を内包する ActiveMQ 5.0 を対象に記載している。
6.
Copyright©2013 JPCERT/CC All
rights reserved. 脆弱性が悪用された場合のリスク 権限のないユーザに操作を許可してしまう —利用できないはずのユーザ(登録されていない ユーザ)がキューへアクセス —既に登録されているユーザに成りすましてキュー へアクセス —情報が漏えいしたり改竄される恐れがある。 6 ID: userA /PW:foo ID: userA /PW:s#4xC OKOK
7.
Copyright©2013 JPCERT/CC All
rights reserved. キューを介したメッセージ処理 ActiveMQはキュー構造を用いて、要求側が指示 したい処理を蓄積する。 —これを、「メッセージング」と呼ぶ。 7 各種端末からの接続を受け付ける。 リクエスト1 リクエスト2 リクエスト3 リクエスト4 リクエスト5 指示したい処理=リクエストは順番にキューへ登録され、 先に登録されたものから処理される。 Queue
8.
Copyright©2013 JPCERT/CC All
rights reserved. Publisher と Subscriber クライアントはサーバへの要求(メッセージ)をActiveMQ に登録し、サーバはその要求を受け取り処理する。また、 逆の流れで結果を返却する。 8 ActiveMQ を用いた非同期のクライアント/サーバ構成例 Enqueue(Request) Dequeue(Request) Enqueue(Response)Dequeue(Response) クライアント サーバ Publisher Subscriber ActiveMQを介して通信するアプリケーションを、その機能に応じて 以下のように呼び分ける。 — Publisher: 処理を要求するアプリケーション(一般的なクライアント機能) — Subscriber: 要求を処理し結果を返却するアプリケーション(一般的なサーバ機能)
9.
Copyright©2013 JPCERT/CC All
rights reserved. ActiveMQ を介したメッセージング処理フロー 9 ActiveMQを介したPublisher/Subscriber間の処理フロー ① [Publisher] ActiveMQへリクエスト登録 ② [Subscriber] ActiveMQからリクエストメッセージを取得・処理、 ActiveMQへレスポンス登録 ③ [Publisher] ActiveMQからレスポンスメッセージを取得・処理
10.
Copyright©2013 JPCERT/CC All
rights reserved. Queue 3 ① [Publisher] ActiveMQへリクエストメッセージ登録 10 【キュー情報】Stomp Protocol キュー名: Queue1 登録内容: 処理nを実行 処理1 処理2 Queue 2 Queue 1 New 処理nを実行 処理73 Publisher
11.
Copyright©2013 JPCERT/CC All
rights reserved. ② [Subscriber] リクエストメッセージを取得・処理、レスポンス登録 11 Subscriber 処理nを実行 処理nの結果 【キュー情報】Stomp Protocol キュー名: Queue11 登録内容: 処理nの結果 Queue 11 処理nを実行 処理nの結果 New Queue 1
12.
Copyright©2013 JPCERT/CC All
rights reserved. ③ [Publisher] レスポンスメッセージを取得・処理 12 【キュー情報】Stomp Protocol キュー名: Queue11 返却内容: 処理nの結果 Queue 11 Publisher 処理nの結果
13.
Copyright©2013 JPCERT/CC All
rights reserved. ActiveMQの認証(概要) SimpleAuthenticationPluginという認証モジュールで ID/PW認証が簡単に実装できる 13 ②認証 OK/NG ID/PW 認証リクエストメッセージ 認証レスポンスメッセージ Publisher 側の認証フロー ①認証リクエスト送信 ③認証レスポンス受信 ※PublisherもSubscriberも同様に、接続時に認証が必要となる。 以降、Publisher側を例に認証フローを説明する。
14.
Copyright©2013 JPCERT/CC All
rights reserved. 認証メッセージの処理 ActiveMQが認証リクエストメッセージを受信すると、 キューを経由して認証モジュールに認証リクエストメッ セージを送信する仕組みになっている。 14 Queue 認証用キューに認証リクエ ストメッセージを登録 認証 モジュール ID/PW ID/PW ID/PW メッセージ ID/PW 認証 キューを経由することで複数の認証リ クエストを1つの認証モジュールで処 理できるようにしている
15.
Copyright©2013 JPCERT/CC All
rights reserved. 「認証後関数」 ActiveMQが認証リクエストメッセージをキュー に登録する際、認証後処理を定めた「認証後関 数」も一緒に渡している。 —認証モジュールは認証処理後に認証後関数を呼び出し、 認証結果を渡す —認証後処理では、接続セッションの確立とクライアン トへの認証結果の返却を行う 15 ID/PW Queue 認証 モジュール 認証リクエストメッセージと認 証後関数両方を受け取る メッセージ Function キューへの登録時に 「認証後関数」 (=Function) も渡す
16.
Copyright©2013 JPCERT/CC All
rights reserved. 認証成功時の処理 ① 認証モジュールにて認証を行う⇒OK ② 認証後関数を実行する — ③ 認証後処理(接続を確立する等)を行う — ④ 結果をクライアントに返却する 16 認証 モジュール ②認証後関数 (Function) を呼び出す ①OKOK Function ③ 認証後処理を行う 認証モジュール からは OK/NG が返却されてくるた め、このFunction内にて後続 の処理を決定・実行する。 ④ 結果を返却
17.
Copyright©2013 JPCERT/CC All
rights reserved. 認証失敗時の処理 ① 認証モジュールにて認証を行う⇒NG ② 認証後関数を実行する — ③ NG時処理を行い認証後関数を異常終了する — ④ 結果(NG)をクライアントに返却する 17 認証 モジュール②認証後関数 (Function) を呼び出す ①NG NG Function ③ NG時処理を実行・ 異常終了 ④ 結果を返却
18.
Copyright©2013 JPCERT/CC All
rights reserved. 認証モジュールにて認証する際の処理フローに沿って解説する。 ソースコード解説 18 ユーザID/パスワード認証を実行する処理フロー ① クライアントから送信された認証要求をActiveMQが受け取り解析し、 ID/PW等を認証情報(connectionInfo)に格納する。 ② 認証モジュールが持つキューに対し認証リクエストを登録する。 ⇒メッセージは認証モジュールで処理される。 ③ 認証後処理関数が呼び出され、結果をクライアントに返却する。
19.
Copyright©2013 JPCERT/CC All
rights reserved. コードの全体構成 無名クラスを用いて認証後の処理を定義している。 (new ResponseHandler(){ … }) 19 … protected void onStompConnect(StompFrame command) throws ProtocolException { … … sendToActiveMQ(connectionInfo, new ResponseHandler() { public void onResponse(ProtocolConverter converter, Response response) throws IOException { … … }); } } … ProtocolConverter.java ID/PW退避処理 結果返却処理 メッセージ登録(認証リクエストメッセージ) ③認証処理終了時に呼び出される ①メッセージ受信後呼び出される ②キューにメッセージを登録する処理 =ここでは、認証モジュールへの認証リクエストを登録 ①~③の処理は、以下のコードで構成されている。
20.
Copyright©2013 JPCERT/CC All
rights reserved. コードの全体構成(詳細) ActiveMQが認証要求を受けると onStompConnect() が呼び出される。 20 … protected void onStompConnect(StompFrame command) throws ProtocolException { sendToActiveMQ(connectionInfo, new ResponseHandler() { // <- 認証要求メッセージ登録 public void onResponse(ProtocolConverter converter, Response response) throws IOException { … }); } } … ProtocolConverter.java ①パース処理 ③結果返却処理 ②メッセージ登録(認証リクエストメッセージ) protected void onStompConnect(StompFrame command) throws ProtocolException 本処理内で、認証モジュールに対し認証要求を行っている。
21.
Copyright©2013 JPCERT/CC All
rights reserved. CONNECT user: user01 Password: pass01 ^@ 接続要求コマンド ユーザ情報 EOS(End of Stream)マーク ①クライアントから送信された内容を解析し、認証情報に格納する 接続要求データを解析する。(例: Stompプロトコルでのリクエスト) 21 protected void onStompConnect(StompFrame command) throws ProtocolException { … String login = headers.get(Stomp.Headers.Connect.LOGIN); String passcode = headers.get(Stomp.Headers.Connect.PASSCODE); String clientId = headers.get(Stomp.Headers.Connect.CLIENT_ID); final ConnectionInfo connectionInfo = new ConnectionInfo(); … connectionInfo.setUserName(login); connectionInfo.setPasseword(passcode); … ProtocolConverter.java 解析処理 Stompリクエスト connectionInfo に格納する。 ユーザ名(user01) パスワード(pass01)
22.
Copyright©2013 JPCERT/CC All
rights reserved. ② 認証モジュールが持つキューに対し認証を要求するメッセージを登録する 認証リクエストを受け取ったActiveMQは、認証モジュール向けの キューに認証リクエストを登録する。(1.) 22 Queue 2) Function (ResponseHandler) 1)connectionInfo → ID, PW 情報 → 認証後処理関数 1) 2) 1.メッセージ登録 2.認証モジュール がポーリング 3.connectionInfoを 認証 4.認証後処理関数 呼び出し 5.認証後処理にて 結果返却 認証 モジュール
23.
Copyright©2013 JPCERT/CC All
rights reserved. ② 認証モジュールが持つキューに対し認証を要求するメッセージを登録する メッセージを登録するメソッド(sendToActiveMQ)を呼び出す。 23 … protected void onStompConnect(StompFrame command) throws ProtocolException { sendToActiveMQ(connectionInfo, new ResponseHandler() { // <- 認証要求メッセージ登録 public void onResponse(ProtocolConverter converter, Response response) throws IOException { … } }); } … ProtocolConverter.java ①パース処理 ③結果返却処理 sendToActiveMQ(connectionInfo, new ResponseHandler() { … }); 1) connectionInfo パースした情報を格納したクラス。 この情報を基に認証を行う。
24.
Copyright©2013 JPCERT/CC All
rights reserved. ② 認証モジュールが持つキューに対し認証を要求するメッセージを登録する 認証後の処理は onResponse() で定義されている。 24 … protected void onStompConnect(StompFrame command) throws ProtocolException { sendToActiveMQ(connectionInfo, new ResponseHandler() { // <- 認証要求メッセージ登録 public void onResponse(ProtocolConverter converter, Response response) throws IOException { … } }); } … ProtocolConverter.java ①パース処理 ③結果返却処理 sendToActiveMQ(connectionInfo, new ResponseHandler() { … }); 2) … ResponseHandler() { … } 認証処理後関数の本体(無名クラスによる定義)。 認証モジュールは処理完了後に onResponse() を呼び出す。
25.
Copyright©2013 JPCERT/CC All
rights reserved. ③セッション情報キューと送信オブジェクトの生成指示メッセージを登録する。 25 Queue 2) Function (ResponseHandler) 1)connectioninfo → ID, PW 情報 → 認証後処理関数 1) 2) 1.メッセージ登録 2.認証モジュール がポーリング 3.connectioninfoを 認証 4.認証後処理関数 呼び出し 5.認証後処理にて 結果返却 認証 モジュール 認証モジュールが認証を行い、認証後処理関数を呼び出して 結果を返却する。 (4~5)
26.
Copyright©2013 JPCERT/CC All
rights reserved. ③セッション情報キューと送信オブジェクトの生成指示メッセージを登録する。 呼び出された認証後処理関数(onResponse)は、無条件に セッションを確立し、結果「成功」を返却する。 26 … new ResponseHandler() { … public void onResponse(ProtocolConverter converter, Response response) throws IOException { … … StompFrame sc = new StompFrame(); sc.setAction(Stomp.Responses.CONNECTED); sc.setHeaders(responseHeaders); sendToStomp(sc); } } … ProtocolConverter.java > onStompConnect() > onResponse() 結果返却処理 5.認証後処理にて結果返却 Stompプロトコルの形式で、接続 完了ヘッダを作成し、送出する。 セッション確立処理等 4.認証後処理関数呼び出し 認証終了後 onResponse が呼び出される 認証後処理関数(ResponseHandler.onResponse)は、以下の コードで構成される。
27.
Copyright©2013 JPCERT/CC All
rights reserved. 問題点 認証失敗時、認証後関数内で異常終了すべきところを、 NG時処理が存在しなかった。 —その結果、認証結果がNGであってもOK時処理を行ってお り、どんなID/PWでも接続できてしまった。 27 NGを返却すべきところ、認証後関数にて認証OK時の処理を実施していた ため、接続が不正に確立されてしまった。 OK 認証 モジュール②認証後関数 (Function) を呼び出す ①NG Function ④ 結果を返却 ③ 認証後処理を行う NG時処理 がない
28.
Copyright©2013 JPCERT/CC All
rights reserved. 問題点 認証後処理関数は引数を2つ持ち、第二引数の response には認証結果が設定 されている。 28 public void onResponse(ProtocolConverter converter, Response response) … new ResponseHandler() { … public void onResponse(ProtocolConverter converter, Response response) throws IOException { … } } … ProtocolConverter.java > onStompConnect() > onResponse() セッション確立処理等 結果返却処理(成功) response を評価する処理が無い エラー情報が格納されている response の値を全く評価していなかっ たため、接続の成功/失敗にかかわらず接続処理が完了してしまった。
29.
Copyright©2013 JPCERT/CC All
rights reserved. 問題点 今回のアプリケーションにおける具体的な問題点 認証後処理関数(onResponse)が認証結果をチェックして おらず、認証成功時の処理だけを行っていた。 問題点に対してどうすべきだったか。 認証結果 OK, NG それぞれに対する処理をきちんと 実装すべきだった。 29 問題となったProtocolConverterクラスはSTOMPプロトコル用に ActiveMQ 4.1で新設されたもの。それ以前のSTOMP用クラス群を統 合し大幅にリニューアルされている。 このリニューアルの際に実装内容の検討と動作チェックが不十分 だったものと考えられる。
30.
Copyright©2013 JPCERT/CC All
rights reserved. 認証モジュールの処理フロー③に認証失敗時の処理を追加した。 修正版コード 30 ユーザID/パスワード認証を実行する際の認証モジュールの処理フロー ① クライアントから送信された内容を解析しID/PW等を認証情報に格納 する。 ② 認証モジュールが持つキューに対し認証リクエストを登録する。 ⇒メッセージは認証モジュールで処理される。 ③ 認証終了後処理が呼び出され、結果をクライアントに返却する。 ⇒[認証失敗時処理] 認証に失敗した場合は例外オブジェクトを設定し処理を中断する。 ※ActiveMQ 5.1.0 Release で修正が行われている。
31.
Copyright©2013 JPCERT/CC All
rights reserved. 修正版コード ③認証終了後処理が呼び出され、結果をクライアントに返却する。 31 … protected void onStompConnect(StompFrame command) throws ProtocolException { sendToActiveMQ(connectionInfo, new ResponseHandler() { public void onResponse(ProtocolConverter converter, Response response) throws IOException { … if (response.isException()) { // If the connection attempt fails we close the socket. Throwable exception = ((ExceptionResponse)response).getException(); handleException(exception, command); getTransportFilter().onException(IOExceptionSupport.create(exception)); return; } } }); } … ProtocolConverter.java ①パース処理 ②メッセージ登録(認証リクエストメッセージ) セッション確立処理等 結果返却処理(成功) 認証失敗時処理 例外オブジェクト を呼び出し元に通 知する処理 認証処理後に呼び出される 認証モジュールで認証エラー(Security Exception)が発生したことを isException() で判別し、後続の処理に遷移しないように修正。 ③response 引数評価処理
32.
Copyright©2013 JPCERT/CC All
rights reserved. まとめ 32 ■認証機能の実装 認証結果 OK, NG それぞれに対する処理を正しく 実装すること ■実装のテスト 認証結果 OK, NG それぞれに対する実装が正しく 行われているか動作テストを行う
33.
Copyright©2013 JPCERT/CC All
rights reserved. 著作権・引用や二次利用について 本資料の著作権はJPCERT/CCに帰属します。 本資料あるいはその一部を引用・転載・再配布する際は、引用元名、資料名および URL の明示を お願いします。 記載例 引用元:一般社団法人JPCERTコーディネーションセンター Java アプリケーション脆弱性事例解説資料 Apache ActiveMQ における認証処理不備の脆弱性 https://www.jpcert.or.jp/securecoding/2012/No.06_Apache_ActiveMQ.pdf 本資料を引用・転載・再配布をする際は、引用先文書、時期、内容等の情報を、JPCERT コーディ ネーションセンター広報(office@jpcert.or.jp)までメールにてお知らせください。なお、この連絡 により取得した個人情報は、別途定めるJPCERT コーディネーションセンターの「プライバシーポ リシー」に則って取り扱います。 本資料の利用方法等に関するお問い合わせ JPCERTコーディネーションセンター 広報担当 E-mail:office@jpcert.or.jp 本資料の技術的な内容に関するお問い合わせ JPCERTコーディネーションセンター セキュアコーディング担当 E-mail:secure-coding@jpcert.or.jp 33
Baixar agora