セキュリティポリシー¶
phpMyAdmin 開発チームは、 phpMyAdmin を可能な限り安全にするために多くの努力をしています。しかし、 phpMyAdmin のようなウェブアプリケーションは、多くの攻撃に対して脆弱である可能性があり、それを悪用する新しい方法がまだ模索されています。
報告されたすべての脆弱性に対して、私たちは phpMyAdmin セキュリティアナウンス (PMASA) を発行し、それには CVE ID も割り当てられます。類似する脆弱性を一つの PMASA にグループ化することもあります (例えば、複数の XSS 脆弱性を一つの PMASA の下で発表することがあります)。
脆弱性を発見したと思われる場合は、 セキュリティ問題の報告 を参照してください。
よくある脆弱性¶
この節では、私たちのコードベースに現れる可能性のある典型的な脆弱性について説明します。このリストは決して完全なものではなく、典型的な攻撃の一面を示すためのものです。
クロスサイトスクリプティング (XSS)¶
phpMyAdmin がユーザデータの一部、例えばユーザのデータベース内の何かを表示するとき、 HTML の特殊文字をすべてエスケープしなければなりません。このエスケープが行われていない場所があった場合、悪意のあるユーザーがデータベースに特別に作られたコンテンツを流し込み、そのデータベースの他のユーザを騙して何かを実行させてしまう可能性があります。これは、例えば、いくつもの厄介なことをする JavaScript のコードの一部である可能性があります。
phpMyAdmin は、ブラウザ向けの HTML にレンダリングされる前に、すべてのユーザデータをエスケープするようにしています。
クロスサイトリクエストフォージェリ (CSRF)¶
攻撃者が phpMyAdmin のユーザを騙して、 phpMyAdmin のアクションを誘発するリンクをクリックさせます。このリンクは、電子メールで送信されるか、どこかのウェブサイトから送信されるかのいずれかです。これが成功した場合、攻撃者がユーザの権限を使って何らかのアクションを実行できるようになります。
これを緩和するために、 phpMyAdmin はセンシティブなリクエストにトークンを送信する必要があります。これは、攻撃者が現在有効なトークンを提示せず、提示されたリンクに含めるというものです。
トークンはログインするたびに再生成されるので、一般的には限られた期間しか有効ではなく、攻撃者が有効なものを入手するのが難しくなります。
SQL インジェクション¶
phpMyAdmin の全体的な目的は SQL クエリを実行することであるため、これは第一の懸念事項ではありません。 mysql の制御接続に関係する場合には SQL インジェクションに気を付けなければなりません。この制御接続は、ログイン中のユーザが持っていない権限を持っていることがあるからです。例えば phpMyAdmin 環境保管領域 へのアクセスです。
(管理用) クエリに含まれるユーザデータは、常に DatabaseInterface::quoteString() を通して実行する必要があります。
総当たり攻撃¶
phpMyAdmin 自体は、認証の試行回数を制限することはありません。これは、このようなことから保護する方法がないステートレス環境で動作する必要があるためです。
これを軽減するには、 Captcha を使用したり、 fail2ban などの外部ツールを利用したりすることができます。これは phpMyAdmin のインストールを安全にする でより詳しく説明しています。
セキュリティ問題の報告¶
phpMyAdmin のプログラムコードにセキュリティ上の問題を発見した場合は、それを公開する前に事前に phpMyAdmin セキュリティチーム に連絡してください。このようにすれば私たちが修正を準備し、あなたの発表と同時に修正版をリリースすることができます。また、私たちのセキュリティアナウンスの中で、あなたにクレジットが与えられることになります。オプションで、レポートは以下のフィンガープリントで PGP キー ID DA68AB39218AB947
で暗号化することができます。
pub 4096R/DA68AB39218AB947 2016-08-02
Key fingerprint = 5BAD 38CF B980 50B9 4BD7 FB5B DA68 AB39 218A B947
uid phpMyAdmin Security Team <security@phpmyadmin.net>
sub 4096R/5E4176FB497A31F7 2016-08-02
鍵は鍵サーバから取得するか、ダウンロードサーバにある phpMyAdmin キーリング や Keybase を使用して入手することができます。
phpMyAdmin をより安全にするための改善提案があるのであれば、私たちの 問題追跡システム に報告してください。既存の改善提案は、 hardening label で見ることができます。