
サイバーセキュリティを担当されている方は毎日触れる「脆弱性」という言葉ですが、改めてその概要を振り返ってみたいと思います。「脆弱性」対策は、サイバーセキュリティの一丁目一番地と心得て、実施していきましょう。
目次
脆弱性とは?
サイバーセキュリティにおける「脆弱性(ぜいじゃくせい)」とは、システム、ソフトウェア、ネットワーク、または組織のセキュリティ上の欠陥や弱点を指します。
これらの脆弱性が攻撃者に悪用されると、データの漏洩やシステムの乗っ取り、業務の停止といった重大なリスクが発生します。
企業にとって脆弱性を特定し適切な対策を講じることは極めて重要ですが、必ず脆弱性は発生するため、残念ながら脆弱性の発生を防ぐ事はできません。
なぜ脆弱性が発生するのか
脆弱性が発生する理由は複数ありますが代表的な内容を記載します。
設計段階でのセキュリティ考慮不足
ソフトウェアやシステムの開発において、最初の設計段階でセキュリティを十分に考慮しないことが、後の脆弱性につながります。特に、スピード重視で開発が進められるプロジェクトでは、機能の実装を優先し、セキュリティ対策が後回しにされるケースが少なくありません。
最近では、APIの設計考慮不足によりAPI経由からの情報窃取が発生しています。
プログラムのバグや実装ミス
脆弱性の多くは、プログラムのバグや開発者の実装ミスによって発生します。ソフトウェア開発において、どんなに熟練したエンジニアであっても、人為的なミスを完全にゼロにすることはできません。
例えばジブラルタ生命保険株式会社は、顧客向けWebサービス「Myページ」において、システムの不具合により他の顧客の契約情報が参照可能な状態になっていたことを報告しました。
設定ミスや運用上の問題
システムを構築する際の設定ミスや、運用上の問題も脆弱性を生む要因になります。特に、クラウド環境では、設定の誤りによる情報漏えいが多発しています。
実際、WelcomeHRを運営するワークスタイルテックが約15万人の個人情報漏洩を発表しましたが、原因は利用しているクラウド環境の単純なアクセス権限の設定ミスが原因でした。
脆弱性管理とパッチ適用の遅れ
ソフトウェアやOSには、新たな脆弱性が発見されるたびに、開発元から修正パッチ(アップデート)が提供されます。しかし、これらのパッチを適用せずに放置すると、既知の脆弱性を攻撃者に悪用されるリスクが高まります。
4万人の個人情報が漏洩した岡山県精神科医療センターのセキュリティインシデントでは、既にパッチがリリースされていた脆弱性を長年放置していた事が原因の一部とされています。
オープンソースやサードパーティライブラリの脆弱性
近年、ソフトウェア開発においてオープンソースのライブラリやサードパーティ製のツールを活用することが一般的になっています。しかし、これらのライブラリに脆弱性が含まれている場合、開発者が意図せずに脆弱なコードを取り込んでしまう可能性があります。
実際、ランサムウェア攻撃グループ「TellYouThePass」がPHPの脆弱性を利用してサイバー攻撃を行っていましたし、
サードパーティー製品ではFortinetやMicrosoftの脆弱性を狙った攻撃や、公開前の脆弱性を狙ったゼロデイ攻撃が頻繁に発生しています。
代表的な脆弱性と攻撃事例
SQLインジェクション
SQLインジェクションとは、Webアプリケーションのデータベースに不正なSQL文を挿入し、情報を盗み出す攻撃手法です。攻撃者は、WebフォームやURLパラメータを利用してSQLクエリを改ざんし、認証情報の取得やデータの改ざんを行います。
日本のある大手ECサイトでは、ログイン画面の入力フォームにSQLコードを仕込まれ、攻撃者によって数十万件の顧客情報が漏洩しました。この攻撃により、クレジットカード情報が流出し、多くのユーザーが被害を受けました。
また、2024年に発生した積水ハウスの事例では、会員サイト「積水ハウス Net オーナーズクラブ」がSQLインジェクション攻撃を受け、約83万人分の個人情報が漏洩した可能性があると発表されました。この攻撃は、運用停止後10年以上経過した古いページの脆弱性を突かれたことが原因です。攻撃者は、この古いページにあるSQLクエリの脆弱性を利用し、不正なコードを挿入することでデータベースの情報を抽出しました。漏洩したデータには、顧客の氏名、住所、電話番号、メールアドレスが含まれていました。
クロスサイトスクリプティング(XSS)
クロスサイトスクリプティング(XSS)とは、ユーザーのWebブラウザ上で悪意のあるスクリプトを実行させる攻撃です。攻撃者は、WebサイトのフォームやURLパラメータを介してスクリプトを挿入し、ユーザーのクッキー情報を盗んだり、フィッシング詐欺を仕掛けたりします。
日本国内の某銀行のオンラインバンキングでは、攻撃者が偽サイトへ誘導するスクリプトを仕込み、多くのユーザーが偽サイトにログイン情報を入力し、資産が盗まれる被害が発生しました。
また、サンリオピューロランドの事例では、WebサイトがXSS攻撃を受け、ファンクラブ会員や仮会員のメールアドレス約46,000件が流出した可能性が指摘されています。攻撃者は、Webページの入力フォームを悪用し、スクリプトを埋め込むことで、訪問者のクッキー情報を取得し、不正ログインを試みました。この結果、一部のユーザーがなりすまし被害に遭い、サンリオピューロランドの顧客サポートには多数の問い合わせが寄せられ、業務が滞りました。
ゼロデイ攻撃
ゼロデイ攻撃とは、ソフトウェア開発者が認識していない、またはパッチが適用されていない脆弱性を悪用する攻撃です。ゼロデイ攻撃は特に危険であり、企業のシステムに深刻な影響を及ぼす可能性があります。
2017年のEquifaxの事例では、未修正の脆弱性を利用され、約1億4,700万件もの個人情報が漏洩する大規模な被害が発生しました。攻撃者は、Apache Strutsというフレームワークの脆弱性を突いてEquifaxのシステムに侵入し、数か月にわたって顧客データを窃取しました。漏洩したデータには、社会保障番号、クレジットカード情報、運転免許証番号などが含まれており、多くの顧客が詐欺被害に遭いました。この事件は、企業の脆弱性管理の不備が大きな経済的損害につながることを示す代表的なケースです。
企業が取るべき脆弱性対策
脆弱性に対して適切な対策を講じるためには、いくつかの重要な基本的なポイントがあります。
セキュリティパッチの適用
まず、OSやアプリケーション、ファームウェアの最新のセキュリティパッチを適用することで、既知の脆弱性を修正し、攻撃のリスクを低減できます。また、「最小権限の原則(Least Privilege)」に基づき、必要最低限のアクセス権のみを付与することで、不正アクセスのリスクを抑えることができます。
WAF(Web Application Firewall)の導入
さらに、SQLインジェクションやXSSなどの攻撃を防ぐために、WAF(Web Application Firewall)を導入し、Webアプリケーションのセキュリティを強化することが求められます。専門のセキュリティ会社や社内のセキュリティチームによる診断を定期的に実施し、システムの脆弱性を早期に特定・修正することも重要です。
従業員教育
加えて、従業員のセキュリティ意識を高めるため、フィッシングメールの見分け方や安全なパスワード管理方法についての定期的な教育が必要です。ランサムウェア攻撃に備え、重要データのバックアップを定期的に取得し、迅速な復旧ができる体制を整えることも欠かせません。
防御策の組み合わせと訓練
また、ファイアウォール、アンチウイルスソフト、EDRなど、複数の防御策を組み合わせることで、攻撃のリスクを最小限に抑えることができます。インシデント発生時に迅速に対応できるよう、対応手順を文書化し、定期的な訓練を実施することも重要です。
自社の脆弱性に気づくには
上記のような対策を実施しても、日々生まれる脆弱性の全てを認識し、カバーすることはできません。それでは、どのような方法で気づき、対応していけばよいのでしょうか。そのためには、以下の方法が有効で、予算や人員リソースなどを考慮しながら実施していくことが必要です。
定期的な脆弱性診断の実施
企業は専用の脆弱性スキャナー(例:Nessus、Qualys、OpenVAS)を利用し、定期的にネットワークやアプリケーションのスキャンを行うことが重要です。これにより、最新の既知の脆弱性を特定し、迅速に修正できます。スキャン結果は、優先度をつけて対応し、重大な脆弱性から修正を行うべきです。
ペネトレーションテスト(侵入テスト)の実施
ペネトレーションテスト(ペンテスト)は、企業のシステムに対してホワイトハットハッカーや専門のセキュリティ企業が実際に攻撃を試みることで、実際に悪用可能な脆弱性を洗い出す手法です。年に1回以上実施することで、新たに発生した脆弱性や、従来の対策が適切に機能しているかを確認できます。
ログの監視と異常検知
企業は、SIEM(Security Information and Event Management)を導入し、ログ監視を強化することで、不正アクセスや異常な通信を検知できます。例えば、通常とは異なる時間帯のログインや、特定のIPアドレスからの異常なアクセス試行があれば、即座に調査し、対応することで被害を防げます。
セキュリティパッチ管理の徹底
セキュリティパッチの適用が遅れると、既知の脆弱性を悪用されるリスクが高まります。パッチ管理ツール(例:WSUS、Patch Manager)を活用し、OS、アプリケーション、ネットワーク機器のパッチ適用状況を管理することが必要です。特にゼロデイ攻撃への対応として、ベンダーからのセキュリティアドバイザリを定期的にチェックし、迅速なアップデートを行う体制を構築しましょう。
セキュリティインシデント対応チーム(CSIRT)の設置
企業内にCSIRT(Computer Security Incident Response Team)を設置し、脆弱性情報の収集、分析、対応を担当させることで、リアルタイムでのインシデント対応が可能になります。CSIRTは、業界の最新の攻撃手法や脆弱性情報を常に監視し、組織のセキュリティポリシーをアップデートする役割を果たします。
バグ報奨金制度(バグバウンティ)の活用
企業が外部のホワイトハットハッカーに報奨金を提供し、脆弱性を発見してもらう「バグバウンティ」プログラムを導入することで、攻撃者に悪用される前に問題を特定できます。GoogleやMicrosoftなどの大手企業だけでなく、中小企業も積極的に導入するケースが増えています。
従業員のセキュリティ意識向上
やはり従業員への教育は大変重要です。従業員のセキュリティ意識が低いと、ソーシャルエンジニアリング攻撃(フィッシング詐欺、内部不正)が成功するリスクが高まります。定期的なセキュリティ研修や、実際の攻撃を想定した演習(例:フィッシングメール訓練)を実施し、従業員が脆弱性を生まないようにすることが重要です。
外部監査とセキュリティ評価の実施
第三者機関による外部監査を受けることで、企業のセキュリティ対策が適切に機能しているかを評価できます。特に、ISO 27001やSOC 2などの国際的なセキュリティ基準を満たしているかをチェックし、必要に応じて改善を行うことが推奨されます。
まとめ
企業のセキュリティ担当者は、脆弱性を理解し、適切な対策を講じることで、サイバー攻撃のリスクを大幅に低減できます。継続的な監視と最新のセキュリティ情報の収集を怠らず、安全なIT環境を構築することが求められます。