piyolog

piyokangoの備忘録です。セキュリティの出来事を中心にまとめています。このサイトはGoogle Analyticsを利用しています。

第16回 まっちゃ445勉強会に行ってきた。

さて、ボッチで昼飯を食べ終わったのでお昼からはいよいよ本編に入ります。隣を見るとなんと徳丸さんが座っておりびっくりしました。(じっとしていました。) もしかすると後日資料が公開されるかもしれませんが、お話いただいた内容をまとめてみようかと思います。

ちなみにお話頂いた内容のざっくりした流れは次のような感じです。
・徳丸本のメイキング話
・特にこだわりを持った箇所
・Q&A、質疑応答
  

1.今明かされる徳丸本の誕生秘話

何故徳丸さんが書くことになったのか

 キッカケは2つあり、1つはさかのぼること2年前、WAS Forum2008で提言したこと。そしてもう1つは2007年7月当時発売され注目を受けていた金床本のレビューを行った記事によるもの、つまり言いだしっぺの法則だとか。
特にWASF2008では、高木先生の前で同氏監修のIPAの「安全なWebサイトの作り方」で十分ではないところを語られたそうで、それがキッカケでIPAの「安全なSQLの呼び出し方」が発行されることになったとのこと。この本は徳丸さんが実質お一人で書き上げ、他お二人がレビュー、高木先生が監修といった体制で生まれたそうです。この本は様々なところでSQLを用いた安全な対策手法の指針として大活躍しています。
 

動き出す徳丸本プロジェクトとレビューアの公募

実際に書籍化に向けた動きとして、2010年の5月初めにSBクリエイティブの担当者の方から執筆の打診を受けたことが発端だそうです。年末(12/21)には初稿を書きあげていたそうですが、3度見直しが行われ、一通り完了したのは2月の中旬頃。3月3日が発売日だったので、結構余裕がない感じだったのですね。
そして執筆を始められるにあたって、徳丸さんは自身のBlogでレビューアの公募をされます。レビューアの打診をされた理由は、文章的な問題(表現など)の他、入門的な位置づけの本を書くため、そして執筆にあたり主言語として取り上げるPHPは予想以上に落とし穴が多いなどがあったそうです。その結果として、14名のレビューアの方が選出されます。レビューをされた方は徳丸本にも記載がありますし、またBlogにもあります。見てわかる通り、どの分野でも第一線のスペシャリストの方ばかり。徳丸さんいわく「レビューアが豪華すぎて非常に悩む結果となった」とのこと。(もちろん、「最終的にレビューをお願いしたことは正解」ともお話されていました。)
 

WAS本無双状態突入

 執筆を始めるにあたり、多くの先行書籍を参考にされたそうです。先のゆまのさんの発表では過去の書籍も勉強になるとはあったものの、「Webアプリケーションセキュリティに関しては昔の情報は書いてあることが古く、昔はよいとされていたものも、現在はダメというものが多い」とお話されていました。確かにそうですね。
というわけで、今回はいくつかのWAS本をばっさばっさと斬り捨て取り上げられていました。(無双状態)
・サテ技本(PHPサイバーテロの技法)
簡潔でスピード感がある本。ただし5年以上前の本ということで、記載内容に古さが目立つ。「サニタイズ」や「addslashes()関数を使え」といった点はまさに先ほどの事例にあたるとのこと。
 
・金床本(ウェブアプリケーションセキュリティ)
SQLインジェクションDNSに対する攻撃、WAFについてなど「詳しいところはやたら詳しい」本とのこと。ただ、どうしても1冊目としては薦めるのは難しく、網羅的なWebアプリケーションセキュリティの本ではないとのこと。執筆された金床さんいわくスタンスは「プログラマーの視点」だそうですが、徳丸さんが読んだ限り、「客観的にみると攻撃者視点」との話です。
 
・佐名木本(セキュアWebプログラミングTips集)
これも金床本同様に詳しいところはやたら詳しく、まさにTipsといった本。OSコマンドインジェクション、CrLfインジェクションなど割とどうでも良いところも詳しく、どうしてもその人が興味のある内容に偏ってしまうのは仕方がないと徳丸さんも話していました。また、「SQLリファレンスを通読することをおすすめする。」が名文句。
ちなみに当日はこの佐名木本を執筆された佐名木さん(@tomoki0sanaki)もいらしていました。
 

レビューは大変!

レビューはGoogleのグループ機能を使って行われていたそうです。XSSCSRFSQLインジェクションなど各脆弱性ごとに徳丸さんが原稿をあげ、それらを書き終わるごとにレビューアの方へ送るというもの。初めの3,4行あたりが「遅れてすみません…」といった感じの内容であったのが印象に残ります。
 実際にレビューで受けたご指摘は次のようなものだそうです。
 ・想定読者は誰なのか。
 ・「〜のような」といった表現は減らしたほうがいい
 ・指摘された脆弱性が動くと結局何が問題なのか
 ・SameOriginPolicyの話は長くなってもすべきではないか
といった感じで進められ、「入門的なものが徐々に薄く・・(泣)」とお話されていました。また、このように徐々に分厚くなっていった徳丸本ですが、当初見積もりでは400ページだったものが、気が付けば500ページになっていたそうです。
 

2.徳丸さんが語る徳丸本のこだわり

 このように生まれた徳丸本。当然ながらいくつかのこだわりもあり、それについてご紹介いただきました。
 

想定読者は誰?

想定読者はとにかく「開発者」。PHPなどを用いて独力でアプリケーションを書ける人だそうです。なので、割と専門的な人はどうでも良いそうで、情報セキュリティの専門的な話(例えば情報セキュリティのCIA)も入れてないそうです。ブラックリストホワイトリストという言葉も使っていません。
また、攻撃例を実際に試して危険だということが分かるものを取り上げられており、PHPのバージョンを出すものであったり、OPTIONSについては入れていないとのこと。(安全なWebサイトの作り方9種、Web健康診断12種を包含されています。)
  

脆弱性サンプルの四原則

サンプルだらこそ手抜きをするな」という考え。役に立つ機能、やってしまいそうなものを想定、実害がある脆弱性を想定、ターゲット以外の脆弱性を含まないことといった原則に基づいて、サンプルコードを考えられたそうで、正常系のシナリオを考えるのが一番大変だったそうです。(OSコマンドインジェクションを使うシーンを想定することがそもそも難しい。)
ちなみにOSコマンドは最初wgetを使っていたそうですが、レビューアの方からの評判が悪く、最終的にメール送信になったそうです。
他にもGET/POSTの使い分けにもこだわりがあり、冪等性で苦しんだそうです。冪等なんて言葉、初めて知りました。
 

ホワイトリストブラックリスト

まず「概念自体は非常に有益」と前提を置いた上で、「使われ方が紛らわしい、誤用もある」といった背景があり、今回本でこの文言を使うのを避けたそうです。
特にホワイトリストについてはサンプリング調査を行った結果、次の二通りのような考え方があるそうで、本によってはこれがごっちゃになっているものも。
・アプリケーションの仕様として認められたデータの一覧
・セキュリティ上安全であることが確実なデータの一覧
 

脆弱性のこだわり

ここからは各脆弱性へのこだわりです。箇条書き形式でまとめておきます。
XSS
 XSS発展編としてJSの動的生成について
  イベントハンドラの話
   script要素の話
    あまりいい対策方法が無く、過剰エスケープを利用せざるを得ない。
   EvernoteXSS問題
    実はこの手のXSSの話題はまだこうやれば確実だという情報が少ない。
    HTMLエスケープが漏れたようなものではない。
SQLインジェクションの話
 ここを見てエスケープを記載するか悩んだ。
CSRF
  XSSCSRFの比較表を最初作ったが評判が悪かった。
  最終的に絵になった。
・OSコマンドインジェクション
 最終的に4パターン。使えない場合がある。
 安全な関数を使えという話。
 じゃあどれが安全な関数なのかという点で悩んだそうですが、「それは徳丸さんのせいじゃない。PHPのせいだ。」とのことでひと段落。
また、脆弱性の名前が決まっておらず、今回はCVEを主に参考にされたそうです。
 

3.徳丸本に入れなかったネタ

 次のネタは徳丸本には含めてないそうです。ただ、Ajax/JSONについては第二版の予定があればぜひ入れたいとのこと。
  UTF-7XSS…MSのアップデートで対策されたので書かなかった
  Hidden…Hiddenパラメータによる価格改ざんの神話というのがあったのを削った
  Ajax/JSON…当初から予定がなかったので、入れていない。
 

4.ディスカッション

つだり禁止だったような気もするのでここでは割愛します。まとめを見ればどんな質問があったかわかると思います。
「どれぐらい売れたのか?」とか結構生々しいきわどい質問も飛んでたような気がします。
 

5.というわけで徳丸さんによるまとめ

・1時間では語り尽くせない
・徳丸本がすべて正しいとは思わないが、ディスカッションの基準となればいい
・安全なAP開発手法の普及の一助となれば幸い
 

6.本には直接関係なさそうな小ネタ

最後に小ネタを。
・「HASHコンサルティング」のHASHとはMD5SHA1などのハッシュ関数のことではなく、家族の頭文字をとったもの。
・職場と自宅でそれぞれ徳丸本を完備している人がいる。
・徳丸さんのPCのパスワードは127文字では無かった。
・徳丸本の原稿はWordで作られている。
・徳丸さんもHJを欲しがっていた。
 
今回も非常に勉強になり、徳丸さん、スタッフの方には本当に感謝です。多くの著名な方を巻き込んで作られた徳丸本ですが、活かすか殺すかは結局のところその本を読む私たちなので、積極的に活用していけるようにさらに読み込んで勉強していく必要があることを改めて気づかされました。

こっそりサインゲットしました。

追記

おやつネタを書き忘れてしまいました。今回は少しでも被災地の助けになればということで、ずんだ餅や萩野月などをご用意頂きました。萩の月、久々に食べましたがおいしいですね。個人的にまた買って食べたくなりました。ずんだ餅は解凍がちょっと間に合わず、プロジェクターにとりついていました。