Hatena::ブログ(Diary)

ockeghem(徳丸浩)の日記 このページをアンテナに追加 RSSフィード

[PR]WAFの導入はHASHコンサルティング
 

2012-01-20

PostgreSQL Conference 2012で講演します PostgreSQL Conference 2012で講演します - ockeghem(徳丸浩)の日記 を含むブックマーク

PostgreSQL Conference 2012で講演する機会を頂きましたので報告します。

日時:2012年2月24日(金曜日) 14時30分〜17時20分(徳丸の出番は16:30〜17:00

場所:AP 品川東京都港区

費用:3,500円(申し込みはこちら

講演タイトル:安全なSQLの呼び出し方

今回は、IPA安全なSQLの呼び出し方を題材として、SQLインジェクションの発生原理から、安全なSQLの利用方法を基礎から実際までを説明します。

あまりトリッキーな攻撃の方法はしないつもりで、基礎的な話が中心となります。安全なSQLの呼び出し方の作成経緯については、「今夜こそわかる安全なSQLの呼び出し方 〜 高木浩光氏に聞いてみた」を参照下さい。

さて、「安全なSQLの呼び出し方」は以下の五名による執筆となっています。

執筆者 徳丸 浩   永安 佑希允   相馬 基邦   勝海 直人

    高木 浩光 独立行政法人産業技術総合研究所

執筆者に肩書きがないのは、独立行政法人情報処理推進機構IPA)の職員ということです。安全なSQLの呼び出し方の執筆者の一人に、IPAの徳丸浩という人がいる、ということですね。一方、今回の講演は、HASHコンサルティング株式会社代表としての徳丸浩がしゃべります。

ややこしいですが、こうすることで、IPAとしての公式な立場ではなく、徳丸の個人としての意見を自由にしゃべることができます。具体的には、独立行政法人セミナーでは仕込みにくい*ネタ*を取り入れることもできるわけですね(これ、けっこう重要)。

昨年は、PHP ConferenceYAPC::Asia TOKYO(Perlの祭典)で講演する機会を頂きました。今年の講演はじめはPostgreSQL Conferenceということで、オープンソースソフトウェアカンファレンスでしゃべらせていただけることを嬉しく思います。

参加者190名ということですので、お申し込みはお早めに。

[PR]

安全なWebアプリケーションの作り方DRMフリーのPDFによる電子版もあります。

2011-10-27

YAPC::Asia Tokyo 2011でパスワードについてトークしました YAPC::Asia Tokyo 2011でパスワードについてトークしました - ockeghem(徳丸浩)の日記 を含むブックマーク

既にこのブログでも報告しましたが、10月14日、YAPC::Asia Tokyo 2011でパスワードについてトークしてきました。スライドとビデオは以下のサイトにあります。

私はWebアプリケーションセキュリティを専門にしていますが、開発系のカンファレンスでしゃべる機会を増やしたいと思っています。Webアプリケーション脆弱性は、つまるところWebアプリケーションバグなので、開発者の方々にセキュリティのことを知ってもらわないと、脆弱性をなくすことはできないからです。

ということで、今年はYAPCの他に、PHPカンファレンスでもトークさせていただきました。PHPカンファレンスYAPCも、トークを公募していて、誰でも応募できます。PHPカンファレンスの方は、昨年もトークに応募していて、文字コードの話をしました。このテーマは、ややこしい話なのに結構好評でしたので、それに味をしめて、今年は徳丸本の話をしました。この本はPHPの話題が多いので、PHPカンファレンスで話をするには向いています。

一方、YAPCでもトークしたいなぁという思いはずっとあったのですが、何をしゃべるかで悩んでいました。正直、Perlのモチネタがあまりありません。文字コードの話をPerlに移植することを考えたのですが、PHPの話をPerlに移してもうまくいかないのですね。Perlの場合、Perl5.8以降のUTF-8を内部形式とする書き方だと、PHPほど簡単には文字コードの問題がおきないのです。

では、「Perlの方が文字コードに関してはPHPより安全」と言えるかという、それは微妙です。このあたりのことは、「文字エンコーディングバリデーションは自動化が望ましい」に書きましたので、よろしければ参照下さい。

そんなことで、文字コードの話はあきらめ、言語に依存しない話題を選びました。PerlはWeb以外でも使われていますが、やはりWebの関係者が多いだろうと思いましたので、「Webアプリパスワード保護はどこまでやればいいか」というテーマにしました。これは、徳丸本の5.1節に書いてある内容ですが、PHP記述のサンプルをPerlに移植して、トークすることにしました。

テーマも決まってトークに応募しましたが、そもそも採択されるかどうかが不安でしたね。これはPHPカンファレンスの方も同じですが、PHPカンファレンスの方は過去にトークした実績があるのに対して、YAPCは初めてだったので余計に不安でした。でも、facebookの「いいね!」ボタンやGoogleの「+1」でたくさんの方が応援して下さったのは心強かったです。採択が決まった時は、とても嬉しかったです。

そんなこんなで本番を迎えましたが、しゃべっている時は、あまり受けているかどうか分からないのですね。反応が悪くないことは分かりますし、あとでtwitter.comで盛り上がっていたことを知りましたが、どこまで共感いただけたかは分かりません。これは多分私の感度の問題だと思います。

そう言う状態でしたので、ベストトーク賞3位がいただけことは、本当に驚きでした。あろうことか賞が発表された時に会場にいなかったので、twitterで受賞を知ったのでした。なんてバカなんでしょう。会場にいたら、喜びも256倍になっていたのに違いないのに、と思いましたが、後の祭りでした。

私が会場にいなかったため、副賞のiPad2は後日送っていただきました(お手間を取らせて申し訳ありません)。以下のように、徳丸本電子版も快適に読めます。ありがとうございました。大切に使います。でも、iPad2より嬉しかったことは、Perlコミュニティの方々に私のトークが受け入れられたことの方です。

f:id:ockeghem:20111027095653j:image

さて、こうしてブログも書きましたので、私のYAPC::Asia Tokyo 2011はこれで終わりますが、もし来年もYAPC::Asia Tokyoがあれば、以下のことはしたいですね。

  • 来年もトークに応募したいです
  • 来年のテーマは、もう少しPerlコミットしたものにしたいです
  • 今年はPerlコミュニティの方と交流ができなかったので、来年は交流をもっとしたいです

最後までお読みいただき、ありがとうございました。

[PR]
体系的に学ぶ 安全なWebアプリケーションの作り方」のDRMフリーPDFによる電子版が販売開始しました。

2011-10-15

YAPC::Asia Tokyo 2011でベストトーク賞3位をいただきました YAPC::Asia Tokyo 2011でベストトーク賞3位をいただきました - ockeghem(徳丸浩)の日記 を含むブックマーク

YAPC::Asia Tokyo 2011で「Webアプリでパスワード保護はどこまでやればいいか」というタイトルでトークして、投票によりベストトーク賞3位というのをいただいたそうです。

「そうです」というのは、実は発表・表彰の際に会場にいなかったという大失態を演じたからでして、少しでも受賞の可能性を考えていたら万難を排して残っていたのですが、錚々たる方々がトークされるYAPCでベストトーク賞がいただけるなど思いもよらず、所用もあったため、その場にいなかったのです。

「その場にいなかったから賞は次点の方に」なんてことにならないかハラハラしました(というのは冗談で、選んで頂けただけで光栄です)が、JPAの牧さんから、賞品の送付先住所をメールして欲しいと連絡頂きましたので、これは本当だったのだと確信して、このエントリーを書いています。私がその場にいなかったために、余計な手間を取らせてしまい、申し訳ありません。

また、副賞としてiPadを頂戴できるということで、ちょうど電子書籍を読むために安いAndroidタブレットでも買おうと思っていたところでしたので、とても良いタイミングで世界一のタブレットをいただけることになりとても嬉しいです。

今年は、PHPカンファレンス2011でもトークさせて頂きましたが、このような開発系のコミュニティでトークして、それが受け入れて頂けるというのが私にとっては一番嬉しいことです。Webアプリケーションセキュリティの専門家にとって、セキュリティの方法論を開発者の皆様に実践してもらわないことには何も始まらないからです。そんなわけで、PHPカンファレンスYAPCのトークに応募しているわけですが、トーク採択されただけでも嬉しいのに、聴衆の開発者たちに好意的に受け入れられ、このような賞までいただけるとは最高の喜びです。

トークのスライドは別途公開しようと思いますが、取り急ぎ、スライドに出てくる唯一のPerlスクリプトを紹介します。これは、「体系的に学ぶ 安全なWebアプリケーションの作り方」に出てくるソルトとストレッチングのサンプル(P327)をYAPCにあわせてPerlに移植したものです。

#!/usr/bin/perl
use strict;
use warnings;
use Digest::SHA qw(sha256_hex);

# FIXEDSALTはサイト毎に変更してください
my $FIXEDSALT = 'bc578d1503b4602a590d8f8ce4a8e634a55bec0d';
my $STRETCHCOUNT = 1000;

# ソルトを生成する 
sub get_salt {
  my ($id) = @_;
  return $id . pack('H*', $FIXEDSALT); # ユーザIDと固定文字列を連結
}

# ソルト化ハッシュを繰り返し求める(ストレッチング) 
sub get_password_hash {
  my ($id, $pwd) = @_;
  my $salt = get_salt($id);
  my $hash = '';  # ハッシュの初期値
  for (my $i = 0; $i < $STRETCHCOUNT; $i++) {
    $hash = sha256_hex($hash . $pwd . $salt); # ストレッチング
  }
  return $hash;
}
# 呼び出し例
print get_password_hash('user1', 'pass1') . "\n";
print get_password_hash('user1', 'pass2') . "\n";
print get_password_hash('user2', 'pass1') . "\n";

ご覧のように、古典的なPerlスクリプトでモダンでもなんでもないですが、use strict;とuse warnings;だけは忘れないように、何度も確認しました:)

最後になりましたが、YAPC::Asiaを開催されたJPAのスタッフ、ボランティア、他のトーカー、お集まり頂いた皆様の全てにお礼を申し上げます。来年もネタがあれば(ネタを作って)トークしたいですね。今後ともよろしくお願い致します。

[PR]
体系的に学ぶ 安全なWebアプリケーションの作り方」のDRMフリーPDFによる電子版が販売開始しました。今なら、キャンペーン価格\1,800-(36%OFF)でお求め頂けます(10月17日まで)。購入はこちらから。キャンペーン終了が迫っていますので、購入検討中の方はお早めに。

2011-08-29

最近発覚したパスワードに関する重大な脆弱性4選 最近発覚したパスワードに関する重大な脆弱性4選 - ockeghem(徳丸浩)の日記 を含むブックマーク

 最近、パスワードにまつわる重大な脆弱性を見かけることが多いように思いますので、その中から4つを選んで紹介します。既に私のブログで紹介したものや、少し古い問題も含まれます。


PHP5.3.7のcrypt関数がハッシュ値を返さない脆弱性

 crypt関数は、様々なハッシュアルゴリズムによるソルト化ハッシュを返す関数ですが、PHP5.3.7(2011年8月18日リリース)において、crypt関数にMD5を指定した場合、ハッシュ値を返さない(ソルトは返す)バグがありました。私のブログエントリにて説明したように、最悪ケースでは任意のパスワードで認証できてしまう状況があり得ました。

 このバグが混入した経緯については、私のブログエントリno titleを参照ください。

 8月23日にリリースされたPHP5.3.8にてこの問題は修正されました。


Dropboxに、不正なパスワードでも認証を許す問題

 今年の6月20日、Dropboxにバグが混入して、正しいパスワードでなくてもログインできる状態が約4時間続きました。

 Dropboxのような著名で人気のあるクラウドサービスにて、このように重大な問題が発生したことは、クラウド利用のあり方に対する警鐘となりました。


RT-N56U における管理パスワード漏えいの脆弱性

 RT-N56Uは、ASUS製の無線LANルータです。RT-N56U(ファームウェアバージョン:1.0.1.4)では、設定画面にて管理パスワードを参照できますが、そのページを見るのにパスワードが必要ないという問題があります。

 参照:JVNVU#200814: RT-N56U における管理パスワード漏えいの脆弱性

 JVNの説明では、「インターネット経由からの攻撃が可能」とありますが、同じページには「なお、初期設定でこの機器に接続できるのは LAN 内のユーザのみです。」とあるので、設定を変更しない限り、インターネットからこのルータに直接接続することはできないはずです。

 しかし、受動的攻撃によって攻撃が可能です。その代表的な手法として、DNSリバインディング攻撃があります。同手法の詳細は、私のブログエントリを参照ください。

 一般的にはDNSリバインディング攻撃に対する有効な対策は、パスワードを適切に設定することですが、今回はそのパスワードを閲覧できるので、以下のような攻撃が可能です。例えば、全てのポートに対してインターネットからのアクセスを許す(穴を開ける)ような変更が可能になると考えられます。

  1. 設定画面からパスワードを参照する
  2. 前項で得たパスワードを用いて、管理画面にログインして、設定を変更する

 対策は、ファームウェアのバージョンアップです。ベンダーサイトから、ファームウェア(バージョン:1.0.1.4o)をインストールしてください。


OS X Lionで、LDAP認証にした際にパスワードをチェックしない問題

 yebo blogによると、Mac OS X LionにてLDAP認証を用いている場合、不正なパスワードで認証できるようです。但し、Apple社の正式なコメントはまだないようで、出典をたどると、サポートページでのやりとりに行き当たります。ここのスレッドにて、「問題をApple社に送信した」とあるので、yebo blogの「Appleは既に問題を認識しており」はその通りですが、どのような対応となるかは不透明です。

 当面の回避策としては、yebo blogにあるように、LDAP認証を無効にするしかないでしょう。

[PR]

 YAPC::ASIAのトークに応募して採択されました。10/14(金)東工大にて、「Webアプリでパスワード保護はどこまでやればいいか」というテーマでしゃべります。主に、パスワードのハッシュやソルトやストレッチングの話で、たまたまcrypt関数のカバーする領域ですが、YAPCというPerlの祭典でPHPの重大なバグの話をするかどうかは決めていません。

2010-05-28

本を書くことになりました&レビュアー募集のお知らせ 本を書くことになりました&レビュアー募集のお知らせ - ockeghem(徳丸浩)の日記 を含むブックマーク

ソフトバンククリエイティブさんからお話をいただき、Webアプリケーションセキュリティの本を書くことになりました。6月から書き始めて、年内に出版できればいいなという感じのスケジュール感です。

今度書く本は、入門的な内容になる予定ですので、私のブログの読者が期待するような、マニアックな内容にはならないと思いますが、入門的な本こそ今必要なのではないかなと思っています。言語としてはPHPを基本として、適宜他の言語(Perl、Java等)を補足する予定です。

脱サラしたときの目標の1つが単著を出すことだったのですが、いつもながらそのような機会は向こうからやってきます。私は「はい、やります」と言えばよいだけなので、ありがたいなーと思っています。

今忙しいので書き始めるのは来月からですが、結城さんみたいに、ブログに「本を書いています」と書き始めるのがささやかな夢です:-)

あと、レビュアーを募集しようと思っています。レビュアーに期待していることは以下のようなことです。

  • 文章表現に対する指摘
  • 正確でない用語の指摘
  • 誤字・脱字・誤変換などいわゆるTYPOの指摘
  • 初心者目線で、読んでわかりにくい箇所の指摘
  • 言語(PHPPerl、Java、C#/VB.NET、JavaScript、SQL)のエキスパートとしての指摘
  • その他、説明や構成に対するアドバイスなど

当方からの謝礼としては以下を予定しています

  • 本の中での謝辞(本名またはハンドル)
  • 献本
  • 打ち上げへのご招待(費用は当方が負担します)

以下の条件を承諾していただけることが前提です。

  • いただいた指摘やアドバイスは真剣に検討致しますが、採用するとは限りません
  • ご意見を採用する・しない、採用後の表現は、最終的には徳丸が決定します
  • 具体的な修正案を盛り込んだ場合、著作権は徳丸に帰属します
  • 本の内容について秘密保持をしていただきます(常識的な範囲で)

人数としては、10名以下程度と思っています。先行してmixiで募集を開始したところ、8名の立候補をいただいています(本当にありがとございます)が、あまり人数を増やすと収集収拾がつかないこと、上記期待をバランス良く満たすレビュアーチームにしたいという欲張りな考えから、お返事は保留しています。

レビュアーをやってみたいという方は、以下のいずれかの都合の良い方法で徳丸までご連絡ください。応募期間は、6月4日金曜日までとします。

  • mixiのメッセージ
  • hiroshi2009 @ tokumaru.org へのメール

連絡いただく内容としては、基本的には以下の内容です。

  • お名前(本名、ハンドルネーム)
  • メールアドレス
  • 自己紹介(簡単で結構です)
  • アピール(こんな指摘がしたい and/or できる)
  • ブログなどのURL

徳丸が面識のない方については、基本的にブログなどでアウトプットを出している方から選考させていただきたいと考えています。これは、判断基準として既存のアウトプットを見させていただくという意味です。高度な内容である必要はまったくありません。逆に、既に面識がある方(twitter、wassr、mixiなども含みます)の場合は、単に「レビュアー立候補します」のみで結構です。

選考結果については、「レビュアー選考が終わり当選者の方にメールで通知しました」という形にしようと思っています。選に漏れた方は、別に「劣っている」という判断ではありませんので、恨まないでくださいね。

それでは、よろしくお願い致します。

追記(2010/6/4)

多くの募集をいただきありがとうございます。深夜0時までは受け付けますので、引き続きよろしくお願いいたします。

「ここは分かりにくかった」という指摘がとても重要だと思っていますので、そのような指摘をいただける方、大歓迎です。

追記(2010/6/5 0:05)

定刻になりましたので応募を締め切りました。29名の応募をいただきました。ありがとうございます。

これから選考に入ります。

 
Google