危険なWordPressプラグインの作り方

  • 20
    Like
  • 0
    Comment

危険なWordPressプラグインの作り方

WordBench東京 3月勉強会「WordPress プラグイン祭り」の発表資料です。


WordPressプラグインの脆弱性の分類

〜Sucuriブログからの抜粋を添えて


SQLインジェクション

  • $wpdb の間違った使い方により発生。外部からデータベースから自由に情報が取り出せたり、変更できたり
  • 結果、ログインパスワードのハッシュが窃取されるなどの被害が起こる

クロスサイトスクリプティング

  • Javascript を含んだ文字列が画面に表示されてしまうバグ。ログイン中の管理者のブラウザをJavascriptで操って不正な操作を行わせたり、Cookie情報を盗んだり

バックドア


ローカルファイルインクルージョン

  • 攻撃者が wp-config.php など重要なサーバー上のファイルの内容を読めてしまう

権限昇格


対策


そもそも、危険なことをしない

  • m9( ゚Д゚) <その処理、あなたのプラグインで本当に必要不可欠ですか?
    • SQLの実行が本当に必要?
    • 本当にサーバーにファイルを作成する必要がある?
    • 本当に任意のコードを実行する必要がある?
    • 本当にファイルをインクルードする必要がある?
    • 管理者にしかできてはいけない操作を、わざわざプラグインからできるようにする必要がある?

危険なことをするときは、危険なことをしてるという自覚を持つ

  • 危険なものはちゃんとチェックする
    • $wpdb->prepare()
    • validate_file()
    • $_GET, $_POST, $_REQUEST
  • ユーザーは信頼しない、自分も信頼しない

危険なプラグインの作り方

  • 横着する、これに尽きる
    • APIで実現可能なのに面倒だからSQLでやっちゃう
    • 必須でもないのに、ちょっとしたログや一時データの保管に、面倒だからファイルを作っちゃう
    • update_option() の第1引数を動的にしちゃう
    • require() fwrite() の対象を動的にしちゃう
    • エスケープせずに画面に表示しちゃう

危険なプラグインを作っていませんか?

自己チェックに便利なツールを開発しました!

インストール方法

git clone https://github.com/hissy/php-code-scanner.git
composer install

実行方法

bin/console wp-code-scanner /path/to/your-plugin

最後に宣伝:WordPress の解説書を執筆しました

エンジニアのためのWordPress開発入門

  • WordPress を知らないエンジニアが初めて WordPress に触れたとき、戸惑わないための本
  • 絶賛発売中! → Amazon
  • 著者:野島 祐慈、菱川 拓郎、杉田 知至、細谷 崇、枢木 くっくる

エンジニアのためのWordPress開発入門


もひとつ宣伝

コンクリートファイブジャパン株式会社では、案件増加、事業拡大につき絶賛新規採用募集中!
未経験可

  • ディレクター
  • PHPエンジニア
  • インフラエンジニア

詳細は懇親会で!