カテゴリー
Misc Review

徹底攻略 PHP5技術者認定上級試験 問題集

徹底攻略 PHP5 技術者認定 [上級] 試験問題集 [PJ0-200]対応 が手元に届きました。

  

私はPHP技術者認定機構として試験範囲に対応しているか、例として解説されている問題が適切であるか、などを監修者の1人としてお手伝いさせて頂きました。

試験対策本ですが、PHP開発者が自分の知識のチェック、より深くPHPを知るための本としても適していると思います。プログラミングを始めたばかり、PHPを始めたばかりの方にも、既にPHPでバリバリ開発されている方でも、どのレベルまでを習得すれば上級者と言えるのか?目標を定めるガイドラインとしても役立つと思います。

本書はPHPの使い方やPHPを使ったアプリの作り方を学ぶ本ではありませんが、技術者認定試験を受験するしないに関わらず、全てのPHP開発者にお勧めできる本だと思います。

本書はPHPを始めたばかりの方には難しすぎるかも知れません。PHPを始めたばかり方は「PHP公式資格教科書 PHP5技術者認定初級試験対応 (EXPERT EXPASS) 」、「徹底攻略 PHP5技術者認定[初級]試験 問題集 [PJ0-100]対応 (ITプロ/ITエンジニアのための徹底攻略) 」こちらも参考になると思います。PHP開発者として必要な基本的知識を持っているか、確認できます。

 

PHP技術者認定認定試験についてはこちらを参照してください。

http://www.phpexam.jp/summary/

初級認定にくらべ、上級認定はかなりの難関となっています。既に上級認定に合格された方は、論文審査によるウィザード認定にチャレンジしてください。現在、論文を受付中です。まだウィザード認定を受けた方は1人も居ません。最初の認定者となるのは貴方かも知れません。

PHP技術者認定試験はオンライン試験で全国どこでも、何時でも受験できます。上級認定試験を今から受けても間に合います。

 

カテゴリー
Computer Programming Security

Sessionアダプション脆弱性の修正

やっとPHPのセッションアダプション脆弱性を修正するパッチとプルリクエストを作りました。議論は済んでいるのでパッチを検証、調整してマージするだけです。

PHPに限らず、未初期化のセッションIDを正規のセッションIDとして受け入れてしまうセッション管理機構があります。(Javaとか)

サイトで稼働している全てのアプリが正しいセッション管理(ログイン後にセッションID作り直す。ログオフで廃棄。一定時間経過後、セッションIDを再生成)を実行していれば良いのですが、共有環境や複数のアプリが使われる事が多いPHPでは特にリスクが高くなっています。

未初期化のセッションIDを受け入れてしまうセッション管理機構は脆弱だと言って良いと考えています。セキュリティのベストプラクティスには確立されたセキュリティ手法(ベストプラクティス)はそのまま使うべき、というプラクティスがあります。つまり、信頼できるフレームワークのセッション管理機構をそのまま使いなさい、がベストプラクティスという事です。しかし、フレームワークとしてURLへのセッションID埋め込みをサポートしているのに、簡単に直せるセッションアダプションを修正しないフレームワークは到底「ベストプラクティスを実装している」と言える状態ではないと考えています。

セッションアダプション脆弱性についてはPHPのWiki(英語のみ)に書いています。詳しくは以下のWikiを参照してください。

カテゴリー
Computer Development

PHP 5.5.0 リリース

PHP  5.5.0がリリースされました。
PHP 5.5のリリースにともないPHP 5.3の開発は終了し、今後一年間セキュリティフィックスのみが提供されます。

PHP 5.3/5.4で動作するPHPアプリケーションのほとんどはそのまま動作しますが、非互換な変更を含むリリースです。ChangeLogやマイグレーションガイドを利用してアップグレードが必要です。

個人的に特にお勧めしたい新機能はPHP 5.5から含まれるcrypt関数のラッパー関数であるpassword_hash関数です。この関数を利用すると、PHPのバージョンアップをするだけで互換性を維持しつつ最適なパスワードのハッシュ化が可能になります。

バイトコードキャッシュモジュールであるOpcacheも標準モジュールとして配布されるようになりました。OpcacheはZendOptimizer+としてZend社が商用製品として配布していましたが、Zend社から提供され標準バンドルされることになりました。APCとは全く別のモジュールなので注意してください。OpcacheはソースコードからビルドすればPHP5.3/5.4でも利用できます。

気になる性能ですが様々な最適化で少し速くなっています。

OpcacheはAPCより多少性能が良いです。元々Zend社が作っていたので特にZendFrameworkとは相性が良いようです。

ところでセッションアダプション脆弱性の修正は時間ができたらマージできる物を用意します。と、いうことでまだ少しお待ちください。

カテゴリー
Computer Development PHP Security Programming Security

Webノウハウシェア2013のスライド

5月24日(金)に開催されたWeb担当者向けのセミナーの「Webノウハウシェア2013」にBOSS-CON JAPANのPHP Security AlianceのCTOとして講演してきました。その講演のスライドです。


http://www.slideshare.net/yohgaki/boss-conphp

Javascriptを利用した内部ネットワークのスキャンが可能である事は良く知られていると思います。ここ数年セキュリティ研究者は更に企業ネットワーク内の奥深くに侵入する手法を研究しています。

企業内のシステムはインターネットに公開するシステムに比べると甘いセキュリティ対策が採用される事が多いですが、インターネットと同様のセキュリティ対策を行わないと思わぬリスクが発生します。特にSSRFの脅威は広範囲に渡ります。正しく理解しておく必要があります。

追記:PHPユーザに取って重要な事の1つを紹介しておきます。

PHP-FPMを利用する場合、php_admin_value, php_admin_flagでphp.iniを設定する方が良いでしょう。手元のFedora18のNginx+PHP-FPMでPoCをそのまま実行した所、エラーになって攻撃は成功しませんでしたが、php.iniの設定をリモートから変更できるとする情報もあります。

追記:ブログアプリ変更でリンクが無くなっていたので、SlideShareの方に公開しました。

カテゴリー
Computer Programming Secure Coding

第四回 岡山PHP勉強会

岡山PHP勉強会で使ったスライドです。

カテゴリー
PHP Security Security

セッションID管理は結局どうすれば良いのか?

脆弱性やセキュリティ対策について技術的な話ばかりしていたので「それで結局PHPのセッション管理どうすれば良いの?」と思われた方も多いと思います。簡単にまとめます。漏れや追記した方が良い事などがあったらご指摘ください。

カテゴリー
Security

セッションアダプション脆弱性がないセッション管理が必要な理由

徳丸さんから「ブログ読みました。サンプルも動かしました。問題は分かるのですが、セッションアダプションがないPHPだと、何が改善されるのかが分かりません。教えて下さい 」とあったのでツイッターで返信するには少し長いのでこちらに書きます。まだ直していない脆弱性を詳しく解説するのはあまりよくないのですが、今なら影響を受けるアプリはほぼないと思うので構わないでしょう。

まず前提として、Webサーバと同様にJavascriptからもクッキーが設定できます。Javascriptインジェクションに脆弱なコードがサイトに1つでもあると、サイト上のセッションアダプション脆弱性をもつアプリへの攻撃が可能になります。この攻撃を緩和する対策もありますが、それはそれ、これはこれなので省略します。

セッションアダプションに脆弱なセッション管理機構で困る代表的なケースは以下の通りでしょう。

  1. ログイン時にsession_regenerate_idを呼んでない
  2. 自動ログインなど通常のセッション用以外でsession_regenerate_idを呼んでいない
  3. session_regenerate_idを呼んでいても、途中で保存している
  4. session_regenerate_idを呼んでいても、途中で実行パスが変えられる