ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

安全なPHPアプリケーションの作り方

2016-11-05 02:41:16 | PHP
11月3日、「PHPカンファレンス2016に行ってきた!」つづき

安全なPHPアプリケーションの作り方2016
講師:徳丸先生

をメモメモ




・自己紹介

・最近のPHP関連の脆弱性の話題
 Joomla(じゅーむら)のけんげん昇格の脆弱性
 CVE-2016-8869等はどういう問題か
  ユーザー登録できてしまう
  管理者権限作れてしまう
 →攻撃コードは公開されている
 デモ(すこしふるめ)
  フォーム1枚
   your token nameにトークン設定
   ユーザーできている
   管理者としてはいれる

 何が原因
  チェック入っていないものがあった

 教訓
  使わないコードは削除しましょう

 類似の脆弱性
 Joomla2.5.2
   わざとバリデーションでエラーを起こす
  →セッション汚染

・セッション汚染脆弱性
 phpMyAdmin CVS2011-2505
 セッション変数を外部から変更

・セッション汚染でセッション変数にオブジェクトを突っ込む
  parse_strではオブジェクトはできないが
   出来る場合がある

・CVE-2016-7125による、オブジェクト・インジェクション脆弱性
 デモ
  オブジェクトを作る
  いつかはデストラクタが実行される
  そのデストラクタに悪いコードを書く
 PHPスクリプトを書き出す

 ディレクトリトラバーサル
  →できるかもしれないとおもってやられてしまう

 PHPの最新版では直っている(Redhat5,6,7ではアプリで)

・ケータイキットfor Movable type
 ゼロデイ脆弱性
 日本テレビ個人情報不正アクセスに関する調査報告書
  perlからphpスクリプトを生成する
  エスケープで対処

・OSコマンドインジェクション対策の決定版はない
  PHPの場合 シェルのエスケープ関数 2種類
 対策
  そもそも使わない
  パラメータを直接わたさない
  もっとよいほうほう→環境変数けいゆ
  ラッパーを作る→引数に攻撃文字列が入ったら? ドゥルーパゲドン→サニタイズする

・正規表現インジェクション
 phpMyAdmin CVE 2015-3238
  from プリフィックスにNULL文字を入れる
 →問題:エスケープしてなかった
 バックスラッシュのエスケープが漏れている→手作り危ない

・SQLインジェクション
 ZendFramework:1,2,3まで
  1はEOLその1の話題
  ZendDB 式も書ける→左括弧と右括弧があれば式(^^;)
    修正される→仕様の問題
 括弧のネスト許容
   →再帰的な無限ネスト
 最終バージョンでEOLになった

 例
  PPAPテーブルに
   I HAVE A PEN
   I HAVE AN APPLE
  a を付けて攻撃 20ではエラー

  あるもじれつ  実行できる
  ZendFramework2には、この問題はない

・XSS
 Javascriptの文字列リテラル
  イベントハンドらとスクリプト要素でやりかたちがう
 対策
  過剰エスケープ
  HTMLノード
  インラインJSONP
    関数呼び出しの後にJSON
 →動的生成をさげるべき

・安全なWebアプリケーションの作り方
 総論は役に立たない
  分かりやすく囲う
  局所的に解消
  防御的プログラミング
   引数が想定ない
この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« (PHPUnitではなく)PHPで表... | トップ | HTTP HeadersというChrome 拡... »
最新の画像もっと見る

PHP」カテゴリの最新記事