WordPressシステムがXSS攻撃から保護されているかどうかを確認する方法

公開: 2016-07-09

世界中で、すべてのWebサイトの48%近くがクロスサイトスクリプティング(XSS)に対して脆弱です。 世界中で、すべてのWebサイトのほぼ正確に25%がWordPressプラットフォームを利用しています。

したがって、XSSに対して脆弱なWebサイトとWordPressプラットフォームを実行しているWebサイトのベン図では、オーバーラップはかなり大きくなければなりません。

これは、プラットフォーム自体のノックではありません。 WordPressチームは、セキュリティをミッションステートメントの不可欠な部分にし、脆弱性が判明するたびに積極的にパッチを適用しますが、これは、人々が安全でないテーマをコーディングしたり、安全でないプラグインをインストールしたりすることを妨げるものではありません。 これらの問題は、WordPressサイトに対するXSS攻撃の2つの主要な入り口であり、この記事ではそれらを阻止する方法について説明します。

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

まず、XSS攻撃がどのように実行されるかについて説明しましょう。 XSS攻撃には複数の種類があるため、簡単な定義から始めます。 一般に、XSS攻撃は、コメントフォーム、コメントボックス、検索バーなどのサニタイズされていない入力から始まります。これらの攻撃は、洗練度が大きく異なります。実際、XSS攻撃の最も単純な形式は、WordPressユーザーに毎日見られます。スパムコメントです。 あなたは私が話していることを知っています:「素晴らしい記事をありがとう。 ちなみに、これが私のサイトで、自宅で週に5,000ドルを稼いでいます:www.only-an-idiot-would-click-this-link.co.uk。

ある意味で、スパムコメントはXSS攻撃の完璧な例です。 悪意のあるエンティティは、サイトのインフラストラクチャ(コメントボックス)を破壊して、コンテンツ(悪意のあるリンク)をサイトに配置します。 これは良い例ですが、より現実的なXSS攻撃ははるかに微妙です。 スパムコメントの作成には約5秒かかります。 XSS攻撃は、適切なハッカーがもう少し時間を費やすものです。

spam as visitor comments

真のブラックハットは、サーバーにデータを送信するサイトのあらゆる側面を利用しようとします。基本的には、それらをミニチュアテキストエディターとして使用します。 入力が防御されていない場合、それは文字通りコードを取得し、アプリケーションにそれを実行させ、ユーザーのブラウザーでレンダリングさせることができることを意味します(そしてそれはあなたのブラウザーを含むことができます)。 スパムコメントとは異なり、サイトの変更されたコードを詳細に調べたり、Webサイトの相互作用を調べたりするだけで、違反が明らかになる可能性があります。 ご想像のとおり、このような違反の結果として生じる可能性のある不快なものの数に終わりはありません。

単純な破壊行為はXSS攻撃の比較的一般的な結果であり、コンテンツの代わりにグロテスクな画像や政治的宣伝がユーザーに表示されます。 長期的な計画や倫理的な懸念がほとんどないマーケターは、彼らの意志に反して人々に宣伝するためにそれらを使用します。より微妙で微妙な攻撃は、ユーザーのログイン資格情報を盗む可能性があります。 それらの1つに管理者権限がある場合は、サイトに保存する個人情報が入手できる可能性があります。 あるいは、最初のXSS攻撃をレバーとして使用して、サイトをこじ開けてさらに高度なマルウェアをインストールすることもできます。

攻撃を止める

あなたが適度にコードに精通している個人であり、あなたが比較的小さなWordPressサイトの個人事業主である場合、クロスサイトスクリプティング攻撃からサイトをロックダウンするための最良の方法はおそらく安全なコーディング慣行でしょう。 より複雑なアプリケーションを実行している大規模な組織の一員である場合、悪意のある攻撃者がコードを挿入する可能性のあるすべての領域を人間が見つけることができない可能性があるため、この警告を含めます。 現代のウェブサイトは規模が非常に大きい可能性があり、経験豊富な専門家を雇い、読者のためにウェブサイトをさらに良くするために他の目的に時間を費やすのがよいかもしれません。

もう1つの警告は、特にコードに精通しておらず、他の誰かにサイトを構築してもらう場合は、その人が安全なコーディング手法を使用していると思い込まないでください。 最も経験豊富な開発者でさえ、他の誰かに自分の作業をチェックさせずにセキュリティを脇に置いたり、小さなエラーを犯したりすることが知られています。自分自身のための時間(それに関してはプロ意識の欠如にもかかわらず)。 要約すると、あなたのウェブサイトの開発と保護に関しては、手抜きをしない、高く評価されている専門家を雇うようにしてください。

その懸念が表明されているので、クロスサイトスクリプティングを防ぐために最初にできる最も簡単なことの1つは、ユーザーデータの検証です。

あなたのサイトにサインアップフォームがあり、そのフォームがユーザーに名前を入力するように求めているとしましょう。 悪意のあるユーザーは、代わりに次のように入力する可能性があります。

[xhtml]
<script> CoughUpYourPreciousData(); </ script>
[/ xhtml]

これにより、たとえば、そのページにアクセスした次のユーザーがCookieのコピーを攻撃者に送信する可能性があります。

この例では、上記のコード文字列は誰かの名前のようには見えないことがわかります。 サーバーはこれを認識していませんが、いくつかの設定されたパラメーターを使用することで、それを教えることができます。 たとえば、そのフィールドに<>、()、;などの特殊文字を拒否するように指示できます。 (コメントセクションでは特に必要ありません)。 そのフィールドには、人の名前に数字が含まれていない可能性があることがわかります。 少し厳しくしたい場合は、そのフィールドに15文字を超える入力を拒否するように指示できます(または、必要に応じて値を変更できます)。 これらの手順を実行すると、攻撃者が特定のフィールドで行うことができるダメージの量が大幅に制限されます。

Stopping Attacks

データ検証を行っても、連絡先フォームやコメントフィールドなど、使用する文字の種類を現実的に制限できないフォームやフィールドが存在する場合があります。 あなたができることは、データをサニタイズすることです。 このプロセスにより、特定のフィールドでHTMLを実行できなくなり、実行可能コードの一部として認識される可能性のあるすべてのものが非コーディング文字に変換されます。 例として、ハイパーリンクは、他の方法で存在する可能性のある場所には表示されません。

最後に、サイトにユーザーにとって安全でないデータが表示される場合があります。 誰かがあなたのページの1つに悪意のあるコメントを書き、それがその後あなたのWebサイトの検索機能によって索引付けされたとしましょう。 ユーザーの1人が検索を実行するたびに、その悪意のあるコードは、ブラウザーが検索結果をロードするときに実行されます。 これは、データをエスケープすることで防止されます。これにより、サイトがユーザーにデータを配信するときに、実行するコードは実行するコードだけになります。

データ検証、データのサニタイズ、およびデータのエスケープの詳細については、WordPressCodexに優れたリソースがあります。 上記の概念を詳細に説明するとともに、普遍的に適用できる例をさらに示します。

その他の方法

大企業はより大きなウェブサイトを持っています。 それは事実です。 たぶん何千人もの人々があなたのサイトを一日に使っています。 たぶん、標準のフォームやフィールドの代わりに、アニメーション、さまざまなポータル、Javaで書かれたパーツなどもあります。 これらすべてを追跡している場合でも、アプリケーションの1つにゼロデイ攻撃があり、自分自身を守る方法がない可能性があります。

このような状況で、影響力と予算があれば、Webアプリケーションファイアウォール(WAF)に投資することをお勧めします。 優れたWAFには、コードインジェクション攻撃に最も一般的に関連付けられているHTML文字列を自動的に識別してブロックする相関ルールがあります。 また、アプリケーションが想定外の量のデータを盗み出し始めたときに通知することもできるため、ゼロデイ攻撃やその他の高度な脅威からの防御に役立ちます。 WAFは特効薬ではありませんが、複雑なアプリケーションを保護したいセキュリティ専門家やWebサイト所有者にとって非常に貴重なツールです。

XSS攻撃から防御することを目的としたプラグインも多数あります。 私は実際にはこれらをお勧めしません。 これらのプラグインの多くは、リスクを軽減するのではなく、ハッカーが悪用するための単なる別の攻撃対象領域を表しています。 最もよく知られていて広く使用されているセキュリティプラグインの1つであるAkismetでさえ、昨年XSS攻撃に対して脆弱であることが判明しました。 XSS攻撃をそらすことになると、半分の対策に頼らないでください。 必要なスキルを身に付け、適切なツールセットを使用して、Webサイトを安全に保ちます。

その他の実用的なアプリケーション

この情報は、初心者には少し複雑になる可能性がありますが、この情報の潜在的な複雑さに人々が落胆するのは嫌です。 XSS攻撃が発生した場合、そのようなイベントの余波によるクリーンアップは、Webサイトで変更を加えるよりもはるかに複雑になることを確信できます。 あなたのウェブサイトへの評判のコストをクリーンアップすること(通常の読者はあなたのウェブサイトから非常に簡単に逃げるでしょう)はあなたが心配する必要がない追加の問題になります。

あなたがあなたのためにあなたのウェブサイトの開発とセキュリティを他の誰かに任せているとしても、少なくとも緊急事態に対応し、あなたの弱点がどこにあるかを知ることができるようにあなたができることをしてください。 システムをチェックする方法を知ることは、長期的には重要なスキルであり、他のセキュリティトピックやWebサイト開発プロジェクトの基盤になります。 すべてがオンラインで相互接続されており、XSS攻撃は過去数年のことかもしれませんが(これはありそうもないことですが)、Webサイトの内外を知ることは決して時代遅れになることはありません。

最終的な考え

インターネットのセキュリティ環境は常に変化しています。 XSS攻撃がどのように発生するか、またはXSS攻撃がどのように利用されるかについて完全に確信することはできませんが、XSS攻撃を阻止するために全力を尽くしていることを確認するのは、自分自身と読者のおかげです。 この脅威について常に通知し、サイバーセキュリティの世界で関連する開発がないか定期的に(少なくとも月に1回はお勧めします)確認してください。

これは、他の脅威を無視できるという意味でもありません。 パブリックネットワークアクセスでは、VPNを安全に使用する必要があります。 Webサイトへのアクセスに使用するコンピューターのセキュリティを無視することはできません。 ログイン情報は依然として頻繁に変更する必要があり、ブルートフォース攻撃から安全に保護する必要があります。 XSS攻撃は残忍ですが、注意すべき脅威はXSSだけではありません。

また、これらのタイプの攻撃に対する抵抗を広めるために、この情報(またはこの記事)を同僚や利害関係者と共有することもできます。 自分ではあまりできないかもしれませんが、十分な数の人が適切に身を守っていれば、ハッカーが貧しいインターネットユーザーから利益を得る別の方法を見つけようとするため、この種の攻撃は全体的に減少する可能性があります。

XSS攻撃をチェックし、将来的にXSS攻撃から身を守る方法について、何か考えはありますか? この脅威と戦うために自分で使用する他の検出および削除戦略はありますか? 仲間の読者に勧めるツールはありますか? もしそうなら、下にコメントを残して、あなたの仲間の読者とのこの重要な会話を続けてください。