不正なSSL証明書のチェックをしないモバイルアプリにご注意を 28
ストーリー by hylom
確かにセキュリティに疎い人が設計すると発生しそうである 部門より
確かにセキュリティに疎い人が設計すると発生しそうである 部門より
SSLで利用される証明書には通常認証局の署名が入っており、それをチェックすることで接続先の組織などを確認できる仕組みになっている。Webブラウザの場合は不正な証明書が使われている場合に警告が表示され、これにより不正なサイトへの接続を知ることができるほか、通信経路に第三者が介入してその内容を傍受する「man-in-the-middle-attack」(中間者攻撃)などを防ぐことができる。しかし、モバイル向けの専用アプリなどで、このような証明書のチェックが行われていない例が多いという(ITmedia)。
テキサス大学オースティン校およびスタンフォード大学の研究者らによる研究(PDF)によると、Amazon EC2のJavaライブラリやAmazonおよびPayPalのSDK、ECサイト構築ソフトウェア、モバイル向けの広告コードなどで、証明書が正しく検証されていない例が確認されたという。また、iOS向けのネットバンキングアプリの40%で、証明書の検証に不備があるとも述べられている(Netcraft)。
spモードメールも (スコア:1)
「spモードメール」アプリに脆弱性、SSLサーバー証明書の検証不備
http://k-tai.impress.co.jp/docs/news/20120426_529559.html [impress.co.jp]
ウェブブラウザではなくメールですがこれと同じ問題ですね
NTTドコモがOK出したアプリですらこの現状なのでサードパティは言わずもがな…
斜め下から (スコア:1)
> 実際、IO Activeや学術機関が行った調査では、
> iOS向けのバンキングアプリの40%、
> Androidアプリの41%で、SSL証明書の認証に不備があるという結果も出ているという。
・・・この「1%」に強烈なカネの臭いがするわけですが、いくらくらいだろう?
Re: (スコア:0)
Re: (スコア:0)
> 審査の違いを考えると 1%勝っていたからって何も誇らしくないと思うんだけどね。
それをゴシップフィルターに通すと
以下すばらしい見出しになるわけですね。
「やはり安全なのはiOSでした!! Android利用者は口座ハイジャックにご用心!!」
Re: (スコア:0)
そもそもiOSの「バンク」アプリとAndroidのアプリを比べているので勝ってはいないのでは?
調査機関も違うみたいですし単に別々の調査結果を並べただけなんでしょうけど、
iPhoneユーザーの日頃の行いを見るとiPhoneの方が安全とミスリードさせようとしている?
…と思ってしまうのが怖いですね。
気を付けないとiPhoneユーザーと同じ病気になってしまいます。
Re: (スコア:0)
> 気を付けないとiPhoneユーザーと同じ病気になってしまいます。
それは病気ではなく適応です。
細菌やウイルスに対しての免疫力をつけることは、細菌やウイルスと同じになることではないですからね。
証明書が正当なだけではだめ (スコア:0)
接続しようとしているサイトの証明書であるかどうか(Webブラウザであればアドレスバーの確認)をしないと。
世間一般ではそれを正当な証明書とは呼びません (スコア:1)
接続しようとしているサイトの証明書であるかどうか(Webブラウザであればアドレスバーの確認)をしないと。
試したことないでしょ?違うサイトのSSL証明書が使われている場合、IEでもChromeでも「問題がある証明書を使用しています」とちゃんと警告が出ますよ。
(例えば google.co.jp にこうやって [173.194.38.88]IPアドレスでアクセスすると、証明書のドメイン名とアクセスしているドメインが違うので警告が出ます。)
Re:世間一般ではそれを正当な証明書とは呼びません (スコア:1)
URL直接叩きじゃない人もいるから、誘導される場合を考えると証明書のDNまでチェックしないとあかんよね。
本来はそこまで毎回やることが公開鍵証明書というかPKIの運用の前提ですよ。
Re:世間一般ではそれを正当な証明書とは呼びません (スコア:1)
DNS(SEC?)を枠に含めるかによるでしょうけど、初回に確認できてれば、基本後はURL見てOKな気はします。
ただ、もろもろ危険はあるので、毎回が安全ではありましょうね...
# というか認証局でのトラブルがいくつかあったので、端末側が安全と判断できても危険の場合があったりして
# そうなるともうPKI的にはどうしようもないなぁ...
M-FalconSky (暑いか寒い)
Re: (スコア:0)
まあ、URLをちゃんと確認しないといけないのですが、ここを怠る人も一定数いるでしょうから、やはりPKI自体の
限界というかがあるわけですよねぇ。単にChainされている署名検証とRevocationのチェックだけでも、ちゃんとやっていない
デバイスは多数の上に、そもそも人間に頼っている部分があるので。
Re: (スコア:0)
話を理解してない阿保
Re: (スコア:0)
ね。分からないなら書かなきゃ良いのに。
Re: (スコア:0)
不正な証明書かどうかチェックしていないのが問題、っていう話なんだから、「証明書が正当かどうか」だけチェックすれば解決でしょ?
それに対する「それだけじゃ駄目だよ、~のチェックもしないと」というコメントに、「それは元々正当かのチェックに含まれています」というレスが付いてるわけだけど。
話が理解できてる?
そうは言っても (スコア:0)
仕組みを作る側も苦労してるのは分かるけど、複雑にすればするほど開発者の負担になる。
開発者にとって、本来注力すべきはそのアプリ自体なのに。
不十分な実装の原因が開発者に帰されるとしたら、今後アプリの作り手は減るんだろうな。
要するに、開発者が特段意識しないでいいくらいのライブラリがなきゃだめだろう、と。
問題が見つかってもライブラリを更新するだけでいいくらいな。
Re:そうは言っても (スコア:2)
モバイルアプリの開発環境は知らないけど、単に SSL/TLS のライブラリを呼ぶだけじゃない? 少なくとも SSL/TLS を一から実装する事はないだろうし。
ただ、処理系やライブラリによって、証明書の検証がデフォルトで有効か、無効か、という事はあるかな。
昔、PHP でオレオレ証明書でエラーにならない件を調べていたら、SSL コンテキストオプションで証明書の検証がデフォルトでオフだったのを見つけた事があります。
PHP: SSL コンテキストオプション [php.net]
verify_peer boolean
SSL サーバー証明書の検証を要求するかどうか。
デフォルトは FALSE です。
これがデフォルト True だったら、「開発者が特段意識しないでいい」かもしれないけど、仮にそうだとしても、「False にすればエラーにならないよ」という Bad Know How に頼る開発者は後を絶たないだろうなぁ。
証明書の検証なんて、大抵、パラメータ一つの話で、単に「理解しているか否か」であって、それを「開発者の負担」と言われてもなぁ。
Re: (スコア:0)
ちゃんと信用できるルート証明書の管理と更新を忘れないようにね。
Re: (スコア:0)
いちいちアプリごとに車輪を再発明しないでブラウザ使えばいいんだよ。ブラウザはこういう点には非常に気を使って開発されてるんだから。
Re:そうは言っても (スコア:1)
> いちいちアプリごとに車輪を再発明しないでブラウザ使えばいいんだよ。
> ブラウザはこういう点には非常に気を使って開発されてるんだから。
ブラウザコンポーネントにおいて、
iOSはアップデートでコンポーネントをAppleが勝手に変更してくるのでまったく頼れません。
ちなみにSafari以外のブラウザコンポーネントを使うとリジェクトです。
Androidは機種間相違があるので、
きっちりやろうとすると対応機種を大きく絞り込み続ける必要が発生します。
結局、スマホのブラウザコンポーネントは
社会的インフラとして存在するレベルの動作プラットフォームとしてまだ未成熟、とは言わざるを得ず、
このため各企業が自力で実装を行っている側面があります。
Re: (スコア:0)
でもってタレコみではそのライブラリがチェックしてねぇ!って言ってるんじゃない?
# そもそも開発者の負荷が高くなるからセキュリティチェックがザルで
# いいという意見の段階で相手にする必要もないわけだが・・・
Re:そうは言っても (スコア:2)
OpenSSLは証明書を見る見ないをプログラムで決められる。
Re:そうは言っても (スコア:1)
opensslの0.9.7ぐらいまでだったか、付属のSSL通信のサンプルがサーバ証明書の検証をしていなかったんじゃなかったかな。
これをコピペしてそのまま使う無能なIT土方が世界的に居て問題を引き起こしたらしく、
仕方なく本家のサンプルが検証するように変更されたとか。(要出典)
Re: (スコア:0)
> でもってタレコみではそのライブラリがチェックしてねぇ!って言ってるんじゃない?
iOSでは実際そういうバグ(とされています)がありましたが、
今回の場合はアプリの作りが悪い
(アプリ自身が持つSSL鍵の管理やSSL認証処理がずさん)ことが原因の話に見えます。
ただ、SSL証明書の厳密なチェックをすると、
事業者側の運用負担も上がりますし、
政府当局の監視などもやりづらくなるものですので、
どこまでが本当に手落ちで、
どこからが意図的なものかは正直判断がつきづらいのが実際のところ。
Re: (スコア:0)
確かにアプリ開発者にとっては負担が増えることになるでしょうね。
もしかしたらSSL証明書を売りたい事業者が・・・
単純に自分のサーバーと通信したいだけだったのに、わざわざ証明書とってSSLで通信させろってことでしょ
自作CAで自分用の専用SSL証明書を使ってだとダメだと言われても・・銀行のアプリとかならわかるが、自作のくだらない(失礼)アプリにもってなると・・
Re:そうは言っても (スコア:1)
自分のサーバーと自分のクライアントで閉じているのであれば、オレオレ証明書は十分意味があると思うんですよね。
そのCAを信じるのはクライアントの自由ですからね。
その場合でも、ちゃんとそのCAかあるいは配下にあるCAが発行した正しいサーバー証明書であることの検証はしなければならないと思いますが。
Re: (スコア:0)
># そもそも開発者の負荷が高くなるからセキュリティチェックがザルで
># いい
どうしたらそう読めるのか知りたいところだ。
Re: (スコア:0)
それ本当に"開発者"?
技術力がないのをライブラリのせいにしてるだけでしょ
Re: (スコア:0)
ネットバンキングとかの金銭取引を扱うようなものでもチェックが甘い、って言ってるんじゃないの?
顧客の金銭を扱うくせにセキュリティ確保が開発者(開発側)の負担になる、なんてことをいってるんだったら、そんな会社は潰れてしまえ、と思いますが。
開発者個人あるいは受託側として言ってるんなら、ちゃんと見積もって必要性を説明しろ、と思いますね。