書籍のサンプルプログラムをダウンロードできるようにしました
重い腰を上げて「Webアプリセキュリティ対策入門」と「はじめてのPHP言語プログラミング入門」のサンプルプログラムをWikiからダウンロード出来るようにしました。特に「はじめてのPHP言語プログラミング入門」は出版からかなりの時間が経過してしまいました。申し訳ございません。
Wikiのページへのリンク
重い腰を上げて「Webアプリセキュリティ対策入門」と「はじめてのPHP言語プログラミング入門」のサンプルプログラムをWikiからダウンロード出来るようにしました。特に「はじめてのPHP言語プログラミング入門」は出版からかなりの時間が経過してしまいました。申し訳ございません。
Wikiのページへのリンク
文脈認識技術とは、顔認識技術を強化したようなものだという。Riyaのソフトウェアは人物の顔を調べるほか、その人物がきているシャツなど、他の手がかりも利用して似たものを見つけ出す。さらに、このソフトウェアは画像の中にあるテキストも探すため、たとえば「フロリダへようこそ」という看板の横に立つ人物の写真は、「フロリダ」というキーワードで見つけ出せるという。
不勉強なもので知りませんでした。
http://www.riya.com/
がそのサイトだそうですが今アクセスしてみるとバグ(?)で使えませんでした… そういう事もありますよね。バグ(?)のおかげでResinがサーバであることが判りました。
しかしこの技術とサイト、爆発的な人気を呼ぶ可能性がありますね。
先日、PHPをPHP 5.0.6相当からPHP 5.1.3相当にバージョンアップしたところ一部に動作不良があったのでデバッグしていたコードの消し忘れがありました。コンテンツに”AAAAAAA”と表示して終了している状態になっていました。デバッグ途中で時間が来たのでデバッグコードが残ったものrsyncしたようです。(汗
現在は直っていますが、PHP 5.0.6からPHP 5.1.3相当へのバージョンアップでは思いもよらない部分で問題が発生したりしました。
if (expr) expr;
と{}でブロックにしていないと文法的には正しくてもT_ELSEが無いとエラーになったりしていました。エラーが発生する場合と発生しない場合があります。全てのブロック無しif文でエラーが発生する訳ではありません。
コーディングスタイルを
if (expr) {
expr;
}
としているので気が付きませんでした。
date関数のオプションの取り扱いが微妙に違うか、壊れているかで日付判定もおかしくなっていたのですがこちらは詳しく調べていません。(AAAAAAと表示されていた件がデバッグ用のコードdie(‘AAAAAAAAAA’)でした)
追記:
テストも兼ねてohgaki.netのPHPは5.1.3相当にしています。もし、Wiki、Blogでおかしな動作(空白ページなど)を見つけたら教えてください。
Webシステムを開発している方は必読のSWASP Guideの日本語訳がリリースされているようです。実は1.1は私も読んでいません。さっき日本語版の目次を見たらページ数が随分すくななりすっきりしたような感じでしたが、必用な項目は含まれているように思えました。ダウンロードしたので時間があるときに読むことにします。
3/8にZend Framework 0.1.2リリースされています。
解凍すると10MBくらいになります。ドキュメント、テストコードなども含まれているのでフレームワーク本体は2MBくらいのようです。さっと見た程度ですがよく出来ていそうな感じです。PHP5以上が必要です。多分PHP5.1でないと動作しないように思えます。(確かめていません)
http://devzone.zend.com/
はZend Frameworkで作られているそうです。
RFIDを使ってSQLインジェクションという話題があるようですが、ID3やEXIFなどのタグ情報を使った攻撃は既知の問題です。バッファオーバーフローを使ったウィルス感染の危険性も指摘されていますが、バッファオーバーフローも既知ですね。セキュリティ上の問題に気が付くか(気を付ける?)は簡単な基礎知識を持っているか持っていないかによって違いが出る例です。
普通に作れば直接SQLインジェクションは確実に防いていると思いますが、セカンドオーダSQLインジェクション(間接SQLインジェクション)を防ぐにはプログラマが意識して入力確認を確実に行わないと問題が発生します。
私の環境だけなのかも知れませんが、WindowsXP+FirefoxにFlash Player 8のバージョンアップがインストールできません。自己解凍EXEをダウンロードしたのですが解凍したあとインストーラが起動せずに終了しているようです。ウィザード画面も開かず勝手にインストールが終了した(?)ようです。Firefoxを再起動すると8.0.22->8.0.24にバージョンアップされていました。(勝手にインストールしたのではなくてENTERキーが押せたのかな??そのうち別のXPでも試して見ますが勝手にインストールするのも良くないですし、再インストールしたらインストール済みであることを表示してほしいです。)
Critical vulnerabilities have been identified in Flash Player that could allow an attacker who successfully exploits these vulnerabilities to take control of the affected system.
http://www.macromedia.com/devnet/security/security_zone/apsb06-03.html
とあるように、コンピュータを乗っ取られる可能性があります。Flash Player 8.0.22以前のユーザはバージョンアップの必要があります。
それにしてもこのような情報は判りやすい所に書くべきと思いますが、Macromediaのセキュリティ情報は分かりづらいところにあります。分かりづらいというより普通のユーザは絶対に見ない(?)Developerのページからさらに2クリック必用なところにセキュリティ情報が記載されています。普通のユーザはサイトを見ていても更新の必要があることさえ気が付かないと思うのですが… Adobeに買収されたので改善を期待したいところですが、Adobeのセキュリティ情報の公開方法も親切とは言いがたいので期待できないかも知れませんね…
追記:CSRFの件、以下に記載しています。
http://blog.ohgaki.net/index.php/yohgaki/2006/04/02/a_ma_sa_sa_a_ia_ca_sa_rhtmleosa_ia_a_iea
よろしければどうぞ。
—-
新しい書籍で紹介した本がもうアマゾンで予約できるようになったようです。早い…
Webアプリケーションのセキュリティ対策の入門書を執筆させていただきました。
タイトルは「Webアプリセキュリティ対策入門」です。
手っ取り早くセキュリティ対策を済ませてしまいたい方には向いていません。「プログラミングはできるんだけどWebアプリには自信がない」と思われている方には適していると思います。Webプログラミングをこれから始める方にも是非読んで頂きたいです。Webアプリのセキュリティ対策を十分知っている方は立ち読みしてください。(笑
サンプルプログラムはPHPですがPHP専用ではなく、対策など内容はより一般的に利用できるように心がけました。「具体的な対策が少ない」とコメントを頂くかもしれませんが、私はセキュリティ対策で最も重要なことを1つだけあげるとすれば「姿勢」と答えます。どのような「姿勢」で設計・実装するのか理解していただければ、具体的な対策(コード)が少なくてもセキュアなWebアプリケーションを構築できると考えています。本書では小手先のテクニックや知識に頼らなくても安全なアプリケーション構築ができるように執筆しました。
基礎編、概念編、実践編の3部構成になっており、基礎編ではセキュリティ対策の基礎、概念編ではWebアプリケーションの代表的なリスク、実践編ではPHPコードを交えてより具体的な対策を解説しています。
Web開発に関わる方の一助になれば幸いです。
参考:Wikiのこの書籍のページ。以下目次の一部
第1 部基礎編―――セキュリティ対策の基礎知識
CHAPTER:1 セキュリティ対策とは?
1-1 セキュリティ対策の基礎知識
1-2 セキュリティ対策の現状
1-3 セキュリティ確保―――何をどのような脅威から守るのか?
1-4 2 つのセキュリティ対策のモデル
1-5 フェイルセーフ(Failsafe)
1-6 多重のセキュリティ
1-7 攻撃可能な箇所の削減
1-8 脆弱性とセキュリティホール
CHAPTER:2 Web サイトセキュリティの基礎知識
2-1 Web サイトで100% 安全なサービスを提供できるか?
2-2 間違った認識の例―――SSL/TLS の安全性、クッキーの弊害、
ソフトウェアキーボード、暗号表
2-3 安全性と利便性
2-4 Web サイトは最も危険なサービスの一つ
第2 部概念編―――脆弱性対策の基礎知識
CHAPTER:3 Web システムの脆弱性
3-1 プログラムの不具合のよる脆弱性
3-2 アプリケーション設計の不具合による脆弱性
3-3 システム管理の不具合による脆弱性
3-4 システム環境の不具合による脆弱性
CHAPTER:4 固有の名称を持つWeb サイトの攻撃手法
4-1 クロスサイトスクリプティング(Cross Site Scripting XSS)
4-2 SQL インジェクション(SQL Injection)
4-3 HTTP レスポンススプリッティング(HTTP Response Splitting)
4-4 クロスサイトリクエストフォージェリ(Site Request Forgery CSRF)
4-5 バッファオーバーフロー(Buffer Overflow)
4-6 LDAP インジェクション(LDAP Injection)
4-7 XML インジェクション(XML Injection)
4-8 XPath インジェクション(XPath Injection)
4-9 パラメータ改ざん(Parameter Manipulation)
4-10 隠しフィールドの改ざん(Hidden Field Manipulation)
4-11 クッキーの改ざん(Cookie Manipulation)
4-12 クロスサイトトレーシング(Cross Site Tracing XST)
4-13 ディレクトリ遷移(Directory Traversal)
4-14 パスの漏洩(Path Disclosure)
4-15 ヌルバイト(Null Byte / Null Character)
4-16 強制ブラウズ(Forceful Browsing)
4-17 セッションハイジャック(Session Hijack)
4-18 コマンドインジェクション
(Command Injection / Command Insertion)
4-19 プログラムの実行(Code Execution)
4-20 サービス不能(Denial of Service DoS)
4-21 その他の攻撃手法
CHAPTER:5 Web サイトの脆弱性
5-1 入力の確認不足
5-2 フィルタ処理の不備
5-3 ファイルの不正参照
5-4 アクセスコントロールの不備
5-5 セッション管理の不備
5-6 エラー処理の不備
5-7 設定管理の不備
オライリーのONLampにURIのデコード回数を検知する仕組みを紹介したA Canary Trap for URI Escapingですが、セキュリティ的には良いプラクティスとは言えませんね…
このような仕組を取り入れるより、アプリケーションを正しく作り、正しくエンコード・デコードされるようにするべきです。このような事が一般的になれば、IPSによる保護がさらに難しくなります。
コメントを書いておこうか、と思ったら先にもう書いている人がいますね。
誓約書は
(1)公務に使うパソコンやフロッピーディスクなどを許可なく外部に持ち出さない
(2)私物パソコンであってもファイル交換ソフトを入れないの2項目。
この2項目のだけだとすると、突っ込みどころ多数です。
ニュースに流す(?)くらいならセキュリティと法律の専門家に相談してから誓約書を作った方がよいのではないでしょうか…
警察はプロの犯罪者に狙われやすい職業と思われますが、この誓約書からすると許可があれば私物パソコンを業務に使っていると思われます。自衛隊でさえ私物パソコンで機密資料を参照しても良いようなので普通に行われているのでしょう。
2項目にするなら
-許可無くデータのコピーは作成しない
-認定したコンピュータ以外ではデータを参照しない
といった感じでしょうね。こんな誓約書にすると業務がまわらなくなるから本当に困るのでしょうけど。
米IBM社は9日(米国時間)、スーパーコンピューターの単一ファイルへの持続的な読み出し・書き込み処理で、毎秒102GB超の世界記録を達成したと発表した。
ということらしい。凄い数値ですね。数千台のプロセッサを使ったらしいので当たり前かも知れませんが普通のCPUのL1キャッシュより速いです。
ディスクの大きさも1.6ペタバイト( 約160万GB )だそうです。160GB HDDだと1万個。バルクでもトラック何台分になるかな?
2005年11月、インシデントレスポンス、コンピュータ・フォレンジックなどITセキュリティサービスを提供するGuidance Softwareの顧客データベースにハッカーが侵入。情報を盗難する事件があった。
セキュリティ対策は万能ではないのは常識ですがセキュリティツールを販売している会社のサーバがクラックされるのは痛いですね。医者の不養生といいますがフォレンジックツールを販売している会社を狙うとは…. プロの犯罪者はすごいですね。
Macのクラックコンテストが行われ30分でroot権限を取得された事が報道されていますが、それに対する反論。
Anyone that wanted to hack the machine was given access to the machine through a local account (which could be accessed via SSH), so the Mac mini wasn’t hacked from outside — root access was actually gained from a local user account.
“That is a huge distinction,” said Schroeder.
SSHアクセスが許可されていたことは重要だ、との主張です。
確かにそうなのですが、Web, Mail, LDAP, etcの外部向けサービスからroot権限が取得できるのであればサーバアプリのセキュリティホールなので「Macのクラックコンテスト」とは言いがたくなります。ローカルアクセスもできないのに「クラックできる?」とコンテストされてもやる気がおきません。
しかし、一般的なユーザは報道だけみると「Mac=危険」と思ってしまうかも知れません。確かにローカルアクセスができる場合、危険度は高いと思いますが、全体として安全性はそれほど悪くないと思います。
LinuxでもWindowsでもローカルユーザ権限があれば管理者権限を取得できてしまうセキュリティホールは沢山報告されています。今回利用されたセキュリティホールがどのような物だったか公開されていないので詳細は分らないですがが、Macだけが特別危険と言うことでは無いです。Macは今までクラッカーに相手にされていなかった(?)のでまだまだ問題が沢山(?)あるのかも知れません。
Windowsの場合、普通に使うためには管理者権限をを持っていないと困る場面が多くあります。アプリケーションが管理者権限を持っていないと動作しない、などというケースも少なくありません。普通のユーザは普通に管理者権限を持つアカウントでログインしてPCを利用しています。
Mac OS Xでは通常権限のユーザでログインしても普通に利用でき、普通のユーザは通常のユーザ権限を持つアカウントを使用しています。Windowsに比べればOS Xの方が比べものにならないくらいセキュリティ上まし、と言えると思います。