楽天銀行アプリがUDIDを使用していた件 - UDID使用の是非とSSL利用目的の変遷

@rocazさんの調査結果: 楽天銀行アプリのセキュリティについて | [ bROOM.LOG ! ] http://blog.rocaz.net/2011/01/1090.html 続: 楽天銀行アプリのセキュリティについて – プロトコルを解析してみた | [ bROOM.LOG ! ] http://blog.rocaz.net/2011/01/1113.html 続きを読む
5
ROCA @rocaz

セキュリティクラスタな皆さんに質問。ログイン時のユーザーIDの入力省略のためユーザーIDだけをCookieやランダム生成文字列などではなくて携帯端末の固定的なUDIDなどに紐付けてサーバーサイドで保持することは妥当?僕はよりよい方法があるのに採用しないなら脆弱という立場なんですが

2011-01-18 16:44:35
徳丸 浩 @ockeghem

@rocaz 好ましくはないが、脆弱とまではいえない、くらいの判定ですかね

2011-01-18 16:59:06
徳丸 浩 @ockeghem

脆弱性診断やっていると、お客様の中には、高危険度しか対処しない企業から、低危険度でも対処する企業があるので、その企業のセキュリティの取り組みの指標になるかもしれない。「弊社は低危険度の脆弱性にも対処します」、とか…まぁ、危険度判定の基準がベンダーによってまちまちなんですけどね

2011-01-18 17:02:12
ROCA @rocaz

@ockeghem そうなんですよね。脆弱と言い切ると語弊があるかも。ただ、単に紐付けるのならランダムな文字列生成するだけでいい訳で、決して秘密情報とは言えないUDIDを用いる理由もない、という微妙な感じではあるんですよねぇ

2011-01-18 17:07:31
ROCA @rocaz

@bywaysideway 基本的には他者のUDIDが分かればなりすましが出来ると思います。ただその結果手に入れられるのはログインに用いるメールアドレスだったりするところが判定の悩みどころです(認証には更にパスワードは必要)

2011-01-18 17:10:31
ちーきく 下北沢ときどき神楽坂 @bywaysideway

@rocaz 攻撃側の立場なら、UDID(や紐付けられているメアド)とは別に、パスワードを盗みとるアダルト偽サイトをつくって、合わせ技でなりすますとか。ここは考え出すとキリがないので、リスクとメリットのバランスではないかと。

2011-01-18 17:14:08
ROCA @rocaz

ブログ書きました: 楽天銀行アプリのセキュリティについて http://goo.gl/fb/wbBP7

2011-01-20 19:22:19
Hiromitsu Takagi @HiromitsuTakagi

@rocaz 同アプリのヘルプの「ライセンス情報」に「SFHFKeychainUtils」とありますよ。それを使って何かを /private/var/mobile/Application/… 以外の場所に保管しているのでは。> 「そちらで確認された点は事実とは異なる」

2011-01-21 11:12:17
ROCA @rocaz

@HiromitsuTakagi App以下へ置いていない可能性はあり得ると思っていました。但し再インストールで戻るのでだとしても恐らくUDIDだけではないのでしょう。多分guid付近と踏んでいます。あるいはそれらのハッシュなどで紐付けかも。キーチェーン調べられるか試してみます

2011-01-21 11:24:30
Hiromitsu Takagi @HiromitsuTakagi

@rocaz 実験結果からの推論がいろいろと論理的に変ですよ。アンインストールしたからといってkeychainのアイテムも同時に消えるとは限りませんし。実験手順も系統立てられてなくて良くない。正しい手順:(1)適当に試してあたりをつける。(2)どうなっているか仮説を立てる…

2011-01-21 12:25:50
Hiromitsu Takagi @HiromitsuTakagi

@rocaz …(3)仮説を否定するテスト計画を立てて実施、否定されないことを確認 (4)その仮説以外で同じ結果になる別の仮説の存在を検討。以下繰り返し。

2011-01-21 12:29:35
ROCA @rocaz

@HiromitsuTakagi ですね。手慣れてないですね。(3)-(4)にかけてが方法が見つけられなかったこともあり手薄なのは認識していました。嘘をまき散らすだけになると最低なので、たとえ間違っていてもきちんと公表し批判は批判で受けるつもりです

2011-01-21 12:38:51
ROCA @rocaz

@HiromitsuTakagi ビンゴでした。REGIST_KEYとUDIDの文字が見えますね。それぞれBLOB HEX換算で96Byteと80Byte。問題はここからのテストですね

2011-01-21 12:42:55
ROCA @rocaz

うーん、KeychainだとやっぱりiOSが暗号化するから、分かるのはアプリがデータをInsert/Deleteするタイミングと大体のデータサイズぐらいだなぁ。ちょっと厳しい感じ

2011-01-21 22:23:44
ROCA @rocaz

UDIDといいつつKeychain内の暗号化後サイズが80バイト、つまりブロック暗号として5ブロックを占めるのでやはりUDID以外の情報も付加されていそうではある

2011-01-21 22:29:10
ROCA @rocaz

ただシナリオとして先方の主張でも矛盾無く説明できることは分かった。但し同時にだからこそUDIDを送信していないまたは間接的にも使っていないこともまだ否定できるところまで至っていない

2011-01-21 22:34:44
ROCA @rocaz

ああそうか、楽天銀行アプリは端末確認をしていないのではないか。フロー上結果として他の端末が入り込めないようにしているだけか。であるなら端末情報を送信する必要性も無くなるけど、そうするとUDID他のチェックの意味が不明瞭・・

2011-01-22 00:57:41
ROCA @rocaz

楽天銀行アプリのプロトコル解析ようやく着手。で結論から言うと、クイックログイン時に思いっきりUDID送ってるじゃ無いかよ、どういうことだ。結局嘘だったのか。SSLで守られてるから分かりっこないと踏んでたのかも知れないけど、せっかくだからこれ全プロトコル調べてあげて公表しようかな

2011-01-22 16:23:34
ROCA @rocaz

SSLでも頑張れば何とでも解析できるんだな。いい勉強になった。隠し通せるものなど何もないと言うことだ

2011-01-22 16:24:35
ROCA @rocaz

まる半日かかりっきりだった。疲れた・・。後はのんびりやります。。

2011-01-22 16:25:24
ROCA @rocaz

UDIDを送っているタイミングは2回。初期のログイン時と、クイックログイン時には毎回送る

2011-01-22 17:39:35
ROCA @rocaz

クイックログインはクイックログイン設定時にサーバーで発行した固有トークンあたりとパスを送っているのかと思ったらそうじゃなかった。支店番号と口座番号、パスにUDIDを送っている。つまりどうもアプリから一方的に送られた支店・口座・パスワードをそのまま信じて認証してるように見えるのだ

2011-01-22 17:42:47
ROCA @rocaz

クイックログインの箇所抜粋 VER=1_0_2&CMD=SMP_CMD_0005&CID=SMP_CID_0005&TKN=1e499034eaa3ac81231ec6a4accfcd35&BCHNO=支店番号&ACNO=口座番号&PASSWD=XXXX&UDID=f1…25

2011-01-22 17:44:24