ウェブサイトのセキュリティ水準:Smart Auditの884件の検査で分かったこと
Smart Auditは、企業サイト884件を受動的に検査しました。セキュリティ評価の平均は100点満点中19点で、5サイトに1サイトでは、ユーザー一覧、Gitフォルダ、パスワードを含むファイル、さらにはデータベースのコピーといった内部ファイルが外部から見える状態でした。専門用語を使わずに数字を読み解き、オーナーにとってのリスクと、改善をどこから始めるべきかをお伝えします。
- 検査した内容 — Smart Auditで企業サイト884件を検査しました。公開ページのみを対象とする受動的な確認で、何も変更していません。セキュリティ評価の平均は100点満点中19点です。
- 見つかったこと — 5サイトに1サイト(19%)で、ユーザー一覧、Gitフォルダ、.envファイル、データベースのコピーといった内部ファイルが公開されていました。10サイト中9サイトには、コンテンツセキュリティポリシー(CSP)がありません。
- 対応の方針 — まず公開されている内部ファイルを閉じてシステムを更新し、そのあとでヘッダー、HTTPS、フォームを整えます。ご自身のサイトは、無料で3分で検査できます。
表示されるウェブサイトが、必ずしも安全だとは限りません。オーナーはトップページや注文フォーム、商品カタログが問題なく見えるので、すべて順調だと考えます。しかし、サイトで起きていることの一部は、外から確認する人の目でなければ見えません。
私たちは、まさにその視点で他社のサイトを見るSmart Auditというサービスを立ち上げました。見るのは公開ページだけの受動的な確認で、何も変更せず、パスワードの推測も行わず、内部にも立ち入りません。本記事の執筆時点で、企業サイト884件の結果が集まっています。各サイトについては、直近で成功した検査の結果を採用しました。「出来のよい」サイトや「悪い」サイトを選り分けてはいません。サンプルにはネットショップも、コーポレートサイトも、メディアも、大規模な組織のサイトも含まれています。サイト名は挙げません。私たちが関心を持っているのは個別のアドレスではなく、全体像だからです。
以下では、私たちが確認した内容、それがオーナーにとってどんなリスクになるか、そして何から手を付けて改善すべきかをお伝えします。
全体像:100点満点中22点
884サイト全体の総合評価の平均は100点満点中22点でした。分野別では、セキュリティが19点、表示速度が18点、検索での見つかりやすさが17点です。
- 480サイト(54%)が、100点満点中20点未満でした。
- 286サイト(32%)が、20〜39点でした。
- 96サイト(11%)が、40〜59点でした。
- 60点以上に届いたのは、わずか22サイト(2.5%)です。
セキュリティの評価だけを見ると、466サイト(53%)が10点未満、652サイト(74%)が30点未満で、60点以上を取れたのは75サイト(8.5%)だけでした。
数字が誤解されないよう、最初にお断りしておきます。「100点満点中22点」は、サイトが22%守られているという意味ではありませんし、まして侵入されたという意味でもありません。これは、基本的な検査項目の水準にどれだけ届いているか、つまり、とうに常識とされている保護策をサイトが有効にしているかどうかを示す距離です。失点の多くは、短時間かつ低コストで直せる項目で生じています。だからこそ、これらの数字に注目する価値があります。
第1の層:かんぬきのない扉
サーバーがブラウザに返すページには、そのページに何が許され、何が許されないかを示す、一種の「指示書」が付いています。これがセキュリティヘッダーです。これがあってもサイトが破られなくなるわけではありませんが、別の穴が見つかったときに被害の拡大を食い止めます。そして、ここでの不足はほぼ全面的です。
- コンテンツセキュリティポリシー(CSP)がないサイトは90%です。CSPは、ページ上でブラウザにどのスクリプトの実行を許可するかを定めるものです。これがないと、仕込まれた不正なコードが「自社のコード」と同じ扱いで動いてしまいます。実際、注文確認ページに、銀行カードの情報をこっそり抜き取るスクリプト(スキマー)が現れるのは、この仕組みによります。ネットショップ(サンプルには130件含まれています)にとって、これは欠けているなかで最もコストの高い「かんぬき」です。
- 権限ポリシー(Permissions-Policy)がないサイトは93%です。これは、サイトに埋め込まれたウィジェットが訪問者に対して、カメラやマイク、位置情報を要求できる範囲を制限するものです。
- リファラーポリシー(Referrer-Policy)がないサイトは88%です。これがないと、注文の内部番号やリンク内のトークンを含んだ、ページの完全なアドレスが、外部のアクセス解析や広告サービスに渡ってしまいます。
- 他サイトのフレームへの埋め込みを防ぐ保護がないサイトは73%です。悪意のある人物が、自分のページ上で透明なフレームを使ってあなたのサイトを表示し、実際にはあなたのサイト上にある「ボタン」を訪問者に押させることができます。この手口はクリックジャッキングと呼ばれます。
- ファイルの種類を「推測」させない設定(nosniff)がないサイトは71%です。
- HSTSが有効になっていないサイトは62%です。これがないと、訪問者の最初のアクセスが暗号化されていない経路を通る可能性があり、公共のWi-Fiではページのすり替えにつながるおそれがあります。
正直に言えば、ヘッダーがないことは、サイトが破られたことを意味しません。保護の層が一つ欠けているということです。ただ、サーバー設定を数行書き換えるだけで直せるため、それが欠けているのは、ほぼ例外なく、セキュリティ設定にまだ誰も手を付けていないことを示しています。
第2の層:丸見えになっているもの
この章はより深刻です。884サイトのうち172サイト(19%)、つまりほぼ5サイトに1サイトで、本来は決して公開してはならない内部用のアドレスが外から見られる状態でした。同時に複数の箇所が公開されているサイトもあります。種類別の内訳は次のとおりです。
- WordPressのユーザーアカウント一覧:103サイト(12%)。標準のアドレスから、管理者を含むユーザーのログイン名が返されます。攻撃者の作業の半分はすでに終わっています。ログイン名が分かっているので、あとはパスワードを突き止めるだけです。
- Gitの内部フォルダ:45サイト(5%)。ここからサイトのソースコードを復元でき、変更履歴には、かつて「一時的に」コードに書き込まれたパスワードや鍵が残っていることがあります。
- phpinfoページ:43サイト(5%)。PHPのバージョン、モジュール、サーバー上のパス、環境変数が表示されます。攻撃者にとっては、そのまま使える地図です。
- サーバーの状態を示す内部用ページ:34サイト(4%)。いまどのアドレスが訪問者に開かれているか、どのIPからアクセスされているかが見えてしまいます。
- 設定ファイル.env:33サイト(4%)。このようなファイルには通常、データベースのパスワードや、メール、決済サービスの鍵が入っています。
- データベースのコピー:28サイト(3%)。誰かが「ちょっとの間だけ」とサイトのルートに置いたまま忘れたファイルです。顧客、注文、電話番号、住所が入っています。
ここでは、何も破る必要がないことを理解しておくことが大切です。ブラウザでアドレスを開くだけで足ります。Smart Auditはこれらのファイルの中身には立ち入りません。そのアドレスで何かが応答するという事実を記録するだけで、中身は読み取らず、保存もしません。しかし、私たちがしないことを、ほかの誰かが行うことはあり得ます。しかも、自動スキャナーはこうしたアドレスを、世界中のインターネットで24時間絶え間なく順番に試しています。
第3の層:古くなったソフトウェア
検査したサイトで最も多かったのはWordPressの222サイト(25%)で、次いでOpenCartが88サイト(10%)でした。残りは、プラットフォームを特定できなかったか、サイトがオーダーメイドで作られています。
154サイト(17%)は、使っているシステムのバージョンを自ら公開しています。これはページ内の内部的なタグから分かります。それだけで害になるわけではありません。問題になるのは、古いバージョンと組み合わさったときです。WordPressのバージョンを公開していたサイトのうち22サイトは、何年も前にリリースされた4系と5系で動いています。こうしたバージョンでは、新たな脆弱性を誰かが塞いでくれると期待するべきではありません。
サーバー自体のバージョンも別の問題です。247サイト(28%)では、レスポンスヘッダーにサーバーソフトウェアの正確なバージョンが示されています。攻撃者は推測する必要がなく、バージョンを見てすぐに、そのバージョン向けの既知の手口に取りかかれます。これがどれほど重大かは、PHPの重大な脆弱性の例を見れば分かります。その場合、唯一の防御策は、速やかなアップデートです。逆に、準備のないままアップデートを行うと何が起こりうるかについては、プラグインの自動更新の解説記事でお伝えしました。
第4の層:フォームと通信――顧客のデータがサイトに入ってくる場所
お客様は、フォームを通じて、お名前、電話番号、住所、ときには支払い情報をお渡しになります。そのため、フォームがどのように作られているかが最も重要です。確認できた内容は次のとおりです。
- 489サイト(55%)は、リクエスト偽造(CSRF)への対策がないフォームを使っています。これは、他人のページが、訪問者や管理者のブラウザに、本人に断りなく本人の名義でフォームを送信させてしまう状態です。
- 543サイト(61%)は、個人情報を収集しているのに、その処理への同意を取っていないフォームを使っています。これは安全性だけの問題ではなく、個人データに関する法令を守れているかという問題でもあります。
- 532サイト(60%)は、ボット対策のないフォームを使っています。「問い合わせ」で埋め尽くされたメールボックスをご覧になった方なら、その結果はおなじみでしょう。
- 76サイト(9%)は、フォームが個人情報をページのアドレスに載せて送信しています(GETメソッド)。電話番号や名前がブラウザの履歴やサーバーのログに残り、アドレスと一緒に外部のサービスにも渡ってしまいます。
- 321サイト(36%)は、保護用の属性が付いていないcookieを使っています。そのようなcookieは、傍受されたり、スクリプトから読み取られたりしやすくなります。
そして、本来ならとうに全サイトで整っているはずの基本事項がいくつかあります。35サイト(4%)は、暗号化なしで開く状態です(ブラウザには「保護されていません」という警告が表示されます)。43サイトは証明書の期限がまもなく切れます。また36サイトでは、保護されたページの一部の内容が暗号化されていない経路で読み込まれており、そのせいで暗号化が完全には機能していません。
オーナーにとってのリスク
専門用語を取り除けば、ビジネスにとってのリスクは、ごくわずかです。
- 顧客データの流出。公開されたデータベースのコピーや設定ファイルは「技術的な些細なこと」ではなく、何も破らずに顧客リストを持ち出せる状態を意味します。その先には、評判の低下と、個人データの保護に対する責任が待っています。
- サイトに他人のコードが入り込む。適用が間に合っていないアップデートに加えてCSPがなければ、ページにカジノの広告が現れたり、外部サイトへ転送されたり、決済ページにスキマーが仕込まれたりします。それを、自分ではなく顧客から知らされることになりかねません。
- 「危険なサイト」という表示と、検索順位の低下。ブラウザと検索エンジンは、訪問者をリスクにさらしません。侵入されたサイトは、検索結果で数週間にわたり順位を下げることがあり、回復には失うよりも長い時間がかかります。
- 停止と復旧のコスト。侵入後の復旧には、通常、予防に必要だった費用の何倍もかかります。しかも、サイトが止まっている間は、注文が入りません。
- 取引先からの信頼の喪失。大口の顧客や入札の場で、セキュリティの状況を示すよう求められることが増えています。「分かりません」という答えは、評価を上げてくれません。
何から始めるか:効果の出る順番
- 公開されている内部ファイルを閉じる。最もコストの高い穴であり、最も早く直せます。通常は1時間ほどの作業で足ります。パスワードの入ったファイルはアクセスできないようにし、そのうえでパスワード自体も変更してください。流出していないと考えることはできないからです。
- システムとプラグインを更新し、サーバーの応答から正確なバージョンの表示を取り除く。更新は、本番サイトではなくサイトのコピーで行ってください。
- セキュリティヘッダーを追加する。HSTS、埋め込み対策、nosniff、Referrer-Policyから始めてください。これらが何かを壊すことは、ほとんどありません。CSPは段階的に導入し、最初は監視モードにします。
- HTTPSを整える:証明書の自動更新、httpからのリダイレクト、暗号化されていない内容が残っていない状態にする。
- フォームを確認する:リクエスト偽造を防ぐトークン、ボット対策、POSTメソッドのみでの送信、分かりやすいデータ処理への同意取得。
- サイトの外にバックアップを置き、監視を設定する。サイトのすぐ隣に置いたコピーは、侵入されればサイトと一緒に消えてしまいます。そして、サイトが開けるかどうかを確かめるのは、お客様の役目であってはなりません。
私たちがお手伝いできること
Smart Auditは、「何が問題なのか」という問いに、優先順位という言葉で答えます。レポートでは、一目で分かる発見事項と、サイトのプラットフォーム自体に根ざした発見事項を分けて示します。前者は、現在お使いのサイトの上で私たちが閉じます。後者、つまり古いバージョンやシステムの制約、保護を適切に設定できないといった問題は、通常、私たちのシステムであるSmart CMSへの移行で解決します。Smart CMSには、セキュリティヘッダー、フォームの保護、アップデートが、最初から基盤に組み込まれています。移行は私たち自身が行います。ページとアドレスを移し、検索での見つかりやすさに関する設定を引き継ぎ、各段階でサポートしますので、アクセスも注文も失うことはありません。
どこから始めるにしても、まずは自社の状況を確認しておくことをおすすめします。
ご自身のサイトは、無料で、登録不要、3分でaudit.sgt.com.uaから検査できます。結果をご一緒に見て、最初に何を直すべきかをはっきりお伝えするご希望でしたら、ご連絡ください。