PHPカンファレンス2016 レポート

徳丸浩さん,安全なPHPアプリケーションの作り方2016~PHPカンファレンス2016

この記事を読むのに必要な時間:およそ 2 分

2016年10月3日にPHPカンファレンス2016が開催されました。本稿では,ゲストスピーカーである徳丸浩さんのセッション「安全なPHPアプリケーションの作り方2016」についてレポートします。

画像

最近のPHP関連の脆弱性

徳丸さんはセッションを通して,PHP関連の脆弱性の話を取り上げていきました。

Joomla!の事例

Joomla!の権限昇格脆弱性についての話がありました。次の2つの問題を含んでいました。

  • ユーザ登録時に管理者権限を設定されてしまうという問題
  • ユーザ登録を許可していない設定にしてもユーザ登録が行えてしまうという問題

徳丸さんはこれらのデモを行い,攻撃の流れを見せました。

画像

原因としては登録のメソッドが2つ存在し,そのうちの一方がユーザ登録許可の設定を確認していないことが問題となっていることを指摘しました。対策としては,開発側は該当メソッドの削除,利用者側はバージョンアップを行うというものでした。

画像

ここでの教訓は「古いコード・使わなくなったコードは速やかに削除する」というものでした。

さらにJoomla!では以前に類似の脆弱性が起きており,それについても言及していました。

セッション汚染

次に,セッション汚染を取り上げました。セッション汚染とはセッション変数を外部から変更できる脆弱性のことで,これを利用してセッション変数にオブジェクトを突っ込む(オブジェクト・インジェクション)などするととても危険なものです。しかしこれは,PHPあるいはアプリケーションに脆弱性が存在しないと行えるものではありません。

セッション汚染脆弱性についていくつか事例を紹介し,デモを行いました。

画像
画像

徳丸さんは「オブジェクト・インジェクション以前の話で,セッション汚染単体で問題となる可能性が高い」と述べていました。

OSコマンドインジェクション

OSコマンドインジェクションについては,「ケータイキット for MovableType」の脆弱性を取り上げました。

脆弱なコードとその対策版を見比べると,エスケープ処理について追記されているようでした。

画像
画像

徳丸さんは,「この脆弱性に対する調査委員会による調査報告書はよく書かれているので,ぜひ一読してほしい」と話していました。

PHPに用意されたシェルエスケープ関数は安全なのか,についてですが,escapeshellcmd関数には脆弱性があるということでした。

OSコマンドインジェクション対策として,徳丸さんの著書では4通りの対策を示し,エスケープは4番目で,あまり信頼度は高くないとのことでした。エスケープを避けるために,シェルスクリプトを静的な文字列として定義する,またパラメータは環境変数で渡す,という方法を提示しました。

著者プロフィール

石川友梨(いしかわゆり)

ふわりふわりと生きています。
またいつか,どこかで。

コメント

コメントの記入