[PR]小規模ECサイトに最適なWAF、SiteGuard Lite
徳丸浩の日記
2008年10月14日
_書籍「PHP×携帯サイト デベロッパーズバイブル」の脆弱性
「PHP×携帯サイト デベロッパーズバイブル」という携帯サイト開発のノウハウを解説した書籍が今月初頭に発売され、話題になっている。Amazonの「インターネット・Web開発」カテゴリで1位ということで、たいしたものだ。私も発売前から予約して購入した。
私がこの書籍を購入した動機は大きく二つある。一つは、携帯サイトの最新の開発ノウハウをまとめた書籍に対する期待をしていたということ。もう一つは、セキュリティに対する記述がどの程度あるのかを見てみたいというものだった。
このうち、前者については、期待は叶えられた。非常に盛りだくさんのテーマが手際よくまとめられていて、かつ読みやすい。あまり原理・理屈のことは書いていないが、開発現場では、コピペの情報源として重宝されることだろう。
しかし、問題はセキュリティについての記述である。
本社のサンプルをざっと眺めた限りでは、クロスサイトスクリプティング(XSS)やSQLインジェクションが問題になりそうなサンプルは見あたらなかった(DBは使用しておらず、表示は固定的なものが多いため)。一方、携帯向けWebアプリケーションのセキュリティ問題の定番である認証とセッション管理については問題がある。具体的には、本書の7章である。
著者のブログから、本書の7章の目次を引用する。
Chapter.7 ログイン状態の管理 7-1 本章のゴール 7-2 携帯を使ったログイン 7-2-1 IDとパスワードのログイン 7-2-2 個体識別情報によるログイン 7-3 個体識別情報を理解する 7-3-1 個体識別情報の種類 7-3-2 docomoの個体識別情報 7-3-3 auの個体識別情報 7-3-4 SoftBankの個体識別情報 7-4 ログイン状態を維持する方法 7-4-1 ログイン状態を維持するとは 7-4-2 携帯サイトでのセッション管理 7-5 かんたんログインを実装する
このうち、「7-4-2 携帯サイトでのセッション管理」と「7-5 かんたんログインを実装する」が問題である。
携帯サイトでのセッション管理については、Cookieを実装していないdocomoやSoftbankの一部の端末を考慮して、URLにセッションIDを付与するように説明している。これ自体は正しいのだが、URLにセッションIDを付与した場合のセキュリティ上の注意点が抜けている。既によく知られたことだが、セッションIDをURL上に保持した場合、HTTP Refererにより、他のドメインにセッションIDが漏洩する。また、ユーザの不注意により、セッションID付きのURLをソーシャルブックマークなどで公開したり、メールで知人に送信した結果、セッション情報が外部に漏洩するような事故が現実に発生している。
「かんたんログインを実装する」については、PCで個体識別番号やユーザエージェントを偽装することによる「なりすまし」対策について記述されていない。すなわち、PCからだと自ら収集するなどした個体識別情報により簡単になりすましができるので、ケータイのゲートウェイからのIPアドレスのみアクセスできるように限定しなければならないのだが、その説明が抜けている。
いや、厳密には、以下のように、7章の冒頭の図(本書P250から引用)を見ると、キャリアゲートウェイの「IPアドレスチェック」をせよと指示しているようにも受け取れるのだが、3章「キャリア/機種の判別」を読むと、キャリアの識別をする理由は、HTMLや画像の規格の違いを吸収して適切な表示を行うことが目的と説明されており、セキュリティに関する記述はない。そのため、IPアドレスのチェックが必須だとも書いていない。これでは、本書の読者の多くが、IPアドレス制限をかけないまま「かんたんログイン」機能を実装・公開する懸念がある。
「かんたんログイン」機能そのものは高木浩光氏によりセキュリティ上の問題が疑問視されている(無責任なキャリア様に群がるIDクレクレ乞食 ―― 退化してゆく日本のWeb開発者)のだが、そこで議論されている問題は、キャリアゲートウェイのIPアドレス情報が正しくサイト運営者に行き渡るのかという問題であって、本書のように、キャリアのゲートウェイの確認をしていないのは問題外といえよう。
本書が価値の高い情報を満載していて全体として価値の高い書籍であること、冒頭で述べたように多くの読者が購入しているだろうことを考えると、セキュリティに対する配慮の欠如を惜しむとともに、本書のコピペによる脆弱なサイトが乱造されることを強く懸念する次第である。
参考文献:
WASForum Conference 2008: 携帯電話向けWebのセキュリティ
携帯電話向けWebアプリの脆弱性事情はどうなっているのか
携帯電話向けWebアプリケーションのセッション管理手法
プログラミング解説書籍の脆弱性をどうするか
- http://php.designlinkdatabase.net/data/search_2000... ×7 : 1, 1, 1, 1, 1, 1, 1
- http://ameblo.jp/katyos/entry-10225718588.html ×6
- https://www.google.co.jp/ ×18
- http://www.tokumaru.org/ ×8
- http://memo.hirosiki.jp/article/108099626.html ×8
- http://ideaup.seesaa.net/article/108141154.html ×4
- http://blogs.yahoo.co.jp/wqcyr956/11662978.html ×4
- http://www.ideaxidea.com/archives/2008/10/php_1.ht... ×3
- http://devmng.yktest.allabout.co.jp/doll-search/ ×2
- http://slashdot.jp/firehose.pl?op=view&id=81410 ×2
- http://bakera.jp/ebi/topic/3295 ×2
- https://www.google.com/ ×1
- https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&... ×1
- http://www.sogou.com/sogou?query=jisサッシ&pid=sogou-... ×1
- http://srad.jp/firehose.pl?op=view&id=81410 ×1
- http://neta.ywcafe.net/001133.html ×1
- http://m.blogs.yahoo.co.jp/wqcyr956/11662978.html ×1
- http://kjunichi.cocolog-nifty.com/misc/ ×1
- http://ideaup.seesaa.net/s/article/108141154.html ×1
- http://d.hatena.ne.jp/ockeghem/20070224 ×1
- http://bakera.jp/ebi/2008/10/15 ×1
- htmlentities 携帯 ×1 / ログイン状態を識別 ×1
[PR]小規模ECサイトに最適なWAF、SiteGuard Lite
HASHコンサルティング株式会社
最近の記事
- 2011年08月30日
- 1. RSSフィードをリダイレクトします
- 2011年07月01日
- 1.
- 2011年03月29日
- 1. PDO/MySQL(Windows版)の文字エンコーディング指定の不具合原因
- 2011年03月22日
- 1. PHP5.3.6からPDOの文字エンコーディング指定が可能となったがWindows版では不具合(脆弱性)あり
- 2011年01月27日
- 1. CSRF対策のトークンをワンタイムにしたら意図に反して脆弱になった実装例
- 2011年01月04日
- 1. escapeshellcmdの危険な実例
- 2011年01月01日
- 1. PHPのescapeshellcmdの危険性
- 2010年10月03日
- 1. 問題点の概要
- 2010年09月27日
- 1. 文字コードに起因する脆弱性を防ぐ「やや安全な」php.ini設定
- 2010年07月25日
- 1. ツッコミSPAM対策で、ツッコミ抜きのRSSフィードを用意しました
- 2010年07月01日
- 1. ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション)
- 2010年04月06日
- 1. PROXY(プロキシ)経由でのDNSリバインディングと対策
- 2010年04月05日
- 1. JavaアプレットのDNSリバインディングはJRE側で対策済みだった
- 2010年03月29日
- 1. DNSリバインディングによる無線LANパスフレーズの読み出しに成功
- 2010年03月25日
- 1. DNSリバインディングによるルータへの侵入実験
- 2010年02月22日
- 1. ケータイtwitter(twtr.jp)においてDNS Rebinding攻撃に対する脆弱性を発見・通報し、即座に修正された
- 2010年02月12日
- 1. かんたんログイン手法の脆弱性に対する責任は誰にあるのか
- 2010年01月18日
- 1. iモードブラウザ2.0のXMLHttpRequestでPOSTデータの扱いが困難になった
- 2009年10月19日
- 1. quoteメソッドの数値データ対応を検証する
- 2009年10月14日
- 1. htmlspecialchars/htmlentitiesはBMP外の文字を正しく扱えない
- 2009年10月09日
- 1. htmlspecialcharsのShift_JISチェック漏れによるXSS回避策
- 2009年09月30日
- 1. htmlspecialcharsは不正な文字エンコーディングをどこまでチェックするか
- 2009年09月24日
- 1. SQLの暗黙の型変換はワナがいっぱい
- 2009年09月18日
- 1. 文字エンコーディングバリデーションは自動化が望ましい
- 2009年09月14日
- 1. 既にあたり前になりつつある文字エンコーディングバリデーション
- 2009年08月05日
- 1. 携帯JavaScriptとXSSの組み合わせによる「かんたんログイン」なりすましの可能性
- 2009年03月28日
- 1. IPAは脆弱性の呼び方を統一して欲しい
- 2009年03月27日
- 2009年03月11日
- 1. U+00A5を用いたXSSの可能性
- 2008年12月22日
- 1. JavaとMySQLの組み合わせでUnicodeのU+00A5を用いたSQLインジェクションの可能性
以下のように全く書いていないという訳ではないですが、書いてある位置が実際に影響のある機能の章とかけ離れていたり、問題があるということが曖昧に示されているだけにとどまっています。これでセキュリティ的な知識を持っていない人に理解しろと言うのは無理というものでしょう。せめて詳しいことは他の資料を見てくださいみたいな事が書いてあればよかったのですが。
P.64
--------------------
3-9-1 なぜアクセス制限を行うのか
携帯サイトでアクセス制限を行う理由はいくつかありますが、大別して2つの目的があります。
・対応していないキャリア/端末で表示させないようにしたい
・ユーザーエージェント偽装などによるセキュリティ対策
--------------------
P.266
--------------------
○セッション管理のセキュリティ
URLにセッションIDを付与する方法は、セキュリティ上安心とは言えません。そのため、セッション時間をできるだけ短くし、早めにセッション情報を破棄したり、アクセスしているキャリアなどを判別し、不正なセッションIDを利用させないといった対策をとって行くことが肝心です。
--------------------
ちなみに携帯端末ではセキュリティに配慮したばっかりに嵌まる罠というのが色々あってなかなか面白いです。Softbank端末でhttpsでUTF-8なページの絵文字が化けるとか、auではセッション限りのクッキーがいつまで経っても有効とか、クッキーに対応していないけどSSL通信できるau端末ではhttpsの場合だけクッキーが来ないとか。