2025年4Q KEVカタログ掲載CVEの統計と分析

Share
2025年4Q KEVカタログ掲載CVEの統計と分析アイキャッチ画像

米国サイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)から公開されている「KEVカタログ(Known Exploited Vulnerabilities)」は、実際に攻撃に悪用された脆弱性の権威あるリストとして、組織のセキュリティ対策の優先順位付けに不可欠なツールとなっています。本記事では、KEVカタログに2025年10月1日~12月29日に登録・公開された脆弱性の傾向を整理・分析します。

本記事は2025年1Q:第1四半期~3Q:第3四半期の分析レポートに続く記事となります。過去記事もぜひあわせてご覧ください。
2025年1Q KEVカタログ掲載CVEの統計と分析
2025年2Q KEVカタログ掲載CVEの統計と分析
2025年3Q KEVカタログ掲載CVEの統計と分析

はじめに

2025年第四四半期(10月~12月)における既知の悪用された脆弱性の統計分析レポートです。本記事は最新のデータから見える傾向を解説します。前回までの分析ではMicrosoftやCisco製品への攻撃の多さや古い脆弱性が依然悪用されている実態が明らかとなりました。今回は第四四半期のデータを掘り下げ、攻撃トレンドの変化やリスクの深刻度を検証します。経営層に有用な全体像の把握と、技術担当者向けの詳細な分析を両立させ、組織が取るべき対策についても提言します。

2025年4Qの統計データ概要

2025年第四四半期に新たにKEVに追加・公開された脆弱性は62件でした。第三四半期(51件)から増加に転じ、2025年1月~12月29日時点で245件(2024年累計186件から約30%増)となっています。まずは月別推移や脆弱性の種類・深刻度について、データの全体像を俯瞰し、特にランサムウェア関連の脆弱性や影響度の大きい脆弱性、自動化攻撃が可能な脆弱性に着目します。

登録件数の月別推移

10月に追加件数が31件と突出し、11月は11件、12月は20件となりました(図1参照)。月ごとのばらつきが大きく、10月に集中して脆弱性が公表・追加されたことが分かります。これは各メーカーの定例アップデート直後に既知悪用事例が判明したケースが多いためと考えられ、特定の月に攻撃が急増する傾向が引き続き見られます。4Q全体では3Qからの増加により、年末にかけて脅威が再び活発化したことを示唆します。

2025年4Q 月別KEV登録件数の推移グラフ
図1:2025年4Q 月別KEV登録件数の推移グラフ

主要ベンダー別の内訳

4Qに新規追加された脆弱性のベンダーを見ると、Microsoftが10件と突出して最多でした。次いでOracle、Fortinet、Gladinetが各3件、Google、Samsung、Kentico、Android、OpenPLC、Dassault Systèmes、WatchGuardなどが各2件で続きます。3Qで多かったCiscoは1件に留まり、Microsoft製品への攻撃集中が際立つ結果です。一方、新たにGladinet(クラウドストレージ)やOpenPLC(産業制御システム)といったベンダーの脆弱性が複数追加されており、攻撃対象の幅が広がっていることが分かります。これは企業向けソフトウェアから家庭用/産業用機器まで攻撃者の関心が及んでいることを示し、ITインフラ全体で対策が必要です。

脆弱性タイプ(CWE)の分布

CWE脆弱性タイ
CWE-7875範囲外の書き込み
CWE-784OSコマンドインジェクション
CWE-8623認可の欠如
CWE-2843不適切なアクセス制御
CWE-202不適切な入力検証
CWE-4162解放済みメモリの使用
CWE-4342危険なタイプのファイルのアップロード許可
CWE-222パストラバーサル
CWE-792クロスサイトスクリプティング (XSS)
CWE-3062重要な機能の使用に対する認証の欠如
2025年4Q CWE分布表

悪用された脆弱性の種類としては、範囲外の書き込み(CWE-787)が5件で最多となりました。次いでOSコマンドインジェクション(CWE-78)が4件で続きます。認証・認可に関わる欠陥(CWE-862, CWE-284, CWE-306)も合計8件と多く、アクセス制御の不備が依然として攻撃者に悪用されやすいことが分かります。また、メモリ管理上の欠陥である解放済みメモリの使用(CWE-416)や範囲外の書き込み(CWE-787)など、低レベルのプログラムバグも上位を占めており、メモリ安全性の欠陥が攻撃に利用されるケースが増えています。

過去頻出したパストラバーサル(CWE-22)も複数含まれており、データから見ると、入力検証検証の不備を突いた攻撃(インジェクション系)、認証・認可の不備、そしてメモリ安全性の欠如という3つの古典的な脆弱性カテゴリーが依然悪用の中心であることが読み取れます。

攻撃の自動化容易性(Automatable)

4Qに登録された脆弱性のうち、約48%(30件)は自動化攻撃が容易である「Yes」と分類されました。これは自動スキャンやマルウェアボットによる大規模攻撃に適した脆弱性が増えたことを意味します。残る52%(32件)は「No」(手動操作や特定条件が必要)ですが、スクリプトキディでも悪用できる脆弱性が半数近くを占める状況は深刻です。(2025年年間累計は図3参照)攻撃者は脆弱性を迅速にスキャン・悪用する自動化ツールを駆使するため、組織側も早期パッチ適用と防御網の自動化で対抗する必要があります。

攻撃の自動化容易性“Yes/No”割合の円グラフ
図2:攻撃の自動化容易性“Yes/No”割合の円グラフ(2025年累計)

技術的影響範囲(Technical Impact)

62件中55件(約89%)は「Total」(=脆弱性を突かれるとシステムを完全制御されてしまう深刻な影響を持つもの)でした。(図3参照)。攻撃者がシステム全面乗っ取り可能な脆弱性を優先的に悪用していることがわかります。特に単独で完全権限を奪える脆弱性は魅力的な標的であり、一方部分的な影響に留まる脆弱性も他のTotalな脆弱性と組み合わせて攻撃チェーンに利用される恐れがあります。

Total/Partial割合の比較チャート
図3:Total/Partial割合の比較チャート

※注)KEVカタログ掲載時点で実害確認済みである以上、CVSSスコアの大小や影響範囲の違いに関わらず優先度高く対処すべきである点に留意が必要です。

CVSSスコア分布

4Qに追加された脆弱性のCVSS基本値は、最大が10.0(3件)、9.8が数件含まれ、9.0以上の「Critical(緊急)」帯が約39%(24件)、7.0~8.9の「High(高)」帯が約52%(32件)を占めました。残り約10%がMedium以下です。平均値は8.48で、前四半期同様に高スコアの欠陥が大半を占めています。3QではCVSS10.0が5件含まれていましたが、4QではCritical帯比率は維持しつつ極端に満点の脆弱性は減少しました。それでもなおHigh以上が全体の9割を超えており、KEVカタログに登録される脆弱性がいかに深刻度の高いものに偏っているかを裏付けています。Criticalでなくとも攻撃に利用され得る(実際に悪用された)ことを示すデータでもあり、スコアに油断せず注意が必要です。

攻撃手法・影響の深掘り分析

前述の統計情報を踏まえ、4Qに観測された攻撃の特徴や脅威動向をさらに分析します。ランサムウェアなどサイバー犯罪による悪用事例や、国家支援型グループ(APT)の関与、古い脆弱性の再悪用など、データから読み取れるポイントを考察します。

実際にランサムウェア攻撃に悪用された脆弱性

3Qと同様、ランサムウェア攻撃での悪用が確認された事例はごく少数に留まります。4Qに追加された62件中、実際にランサムウェアに悪用されたと判明しているのは3件(約5%)でした。具体的にはオラクルの Oracle Concurrent Processing における認証に関する脆弱性/Oracle E-Business Suite(EBS)のSSRF(サーバサイドリクエストフォージェリ)の脆弱性(CVE-2025-61882および61884)やReact Server Componentsにおける認証不要のリモートコード実行の脆弱性(CVE-2025-55182)がランサムウェア攻撃で利用された例です。これらはいずれも企業の基幹システムや広く使われるフレームワークに関わる欠陥で、金銭目的の攻撃者に狙われたと考えられます。ただしKEVカタログ全体で見ると、依然として国家主体・高度なAPT攻撃での悪用例が多く、ランサムウェアによる事例は氷山の一角です。これは、KEVカタログが単なる理論上の危険性ではなく、「現在進行形で利用されている攻撃手法」を反映したリストであることを示しています。高度な攻撃者はゼロデイ脆弱性を含む様々な欠陥を悪用しており、ランサムウェア以外の脅威にも引き続き注意が必要です。

古い脆弱性の再注目

4Qに新規登録された脆弱性の中には、2024年以前に発見されたものが17件(約27%)含まれていました。最も古いものは2010年公表のMicrosoft製品の脆弱性(CVE-2010-3962)で、15年以上前の欠陥が今になって攻撃に利用されたことになります。前四半期にも2020年公表のD-Link製品脆弱性が複数追加されており、サポート切れの古い機器・ソフトが依然として攻撃対象になる実態が浮き彫りです。こうした古い脆弱性はパッチ未適用のまま放置されている資産が狙われており、攻撃者は年代を問わず利用可能な欠陥を有効活用しています。組織内に残存するレガシーシステムの脆弱性管理を怠ると、想定外に古いバグで侵入を許すリスクがあることに注意が必要です。

脆弱性悪用の手口

攻撃者の手口としては、引き続きリモートコード実行(RCE)や権限昇格といった直接的にシステム乗っ取りに繋がる攻撃が顕著です。例えば前述のCWE分布にあるCWE-787, CWE-416などのメモリ破壊型脆弱性は、悪用された場合、ターゲットプロセス内で任意コード実行やサービス停止を引き起こします。またCWE-78等のコマンドインジェクションは、サーバー上で攻撃者のコマンドを実行させる手段として多用されています。4Qにはこれらテクニカルな攻撃に加え、認証・認可の不備(CWE-306/862等)を突いて管理者権限を不正取得するケースも見られ、攻撃パターンは多岐に及びます。総じて攻撃者は最も効率よく高い権限を得られる脆弱性の組み合わせを模索しており、一つでも未対策の弱点があれば連鎖的に侵入を許す恐れがあります。

影響とリスクの評価

攻撃者は完全なシステム制御が可能な脆弱性(=「Total」)を好んで悪用します。CVSSスコアが「High」や「Critical」の深刻度であればなおさらですが、たとえ中程度でも「KEVカタログに掲載=実害発生済み」である以上、油断は禁物です。特にランサムウェア攻撃では、初期侵入に使った脆弱性自体はさほど目立たない中~高程度の欠陥であっても、内側で別のCritical脆弱性と組み合わせて横展開・権限昇格することが知られています。部分的な影響の脆弱性であっても他の欠陥と組み合わされば致命傷となり得るため、既知の悪用脆弱性は大小問わず優先的に潰す姿勢が重要です。経営層にとっても、これらの統計が示すリスクの高さを踏まえれば、脆弱性対応に十分なリソース投資と適切な意思決定を行う必要性が理解できるでしょう。

組織が取るべき対策

4Qの分析レポートの結果を受け、組織として優先的に講じるべき脆弱性管理策を整理します。経営層は戦略的視点から、現場のセキュリティ担当者は実践的観点から、以下のセキュリティ対策の実施をおすすめします。

KEV掲載脆弱性の最優先パッチ適用

CISAは継続的にKEVカタログ掲載項目を優先的に修正するよう勧告しています。自社で利用する製品・システムに該当する脆弱性が公開された場合、定例パッチを待たず緊急で対応する体制を整えましょう。自動アラートによる通知や情報資産との照合などによって見落としを防ぐ運用が有効です。特に公表から日が浅い脆弱性は攻撃者も素早く狙ってくるため、初動対応のスピードが重要になります。

主要ベンダー製品の迅速なアップデート

MicrosoftやOracle、Cisco、Googleなど主要ベンダーのソフトウェアや機器は引き続き攻撃者の主要標的です。毎月発表されるセキュリティ更新プログラム(例: Microsoftの月例パッチ)や緊急アップデート情報を速やかに収集し、適用テストを経て迅速に全社展開する習慣をつけましょう。4QではMicrosoft製品の脆弱性が突出しましたが、他ベンダーでもゼロデイが報告されればすぐ悪用される可能性があります。例えば「重要なアップデートは可能な限り2週間以内に適用」などといった内部目標を設定し、経営陣もその重要性を認識すべきでしょう。

ネットワーク機器・IoT/産業機器の点検

企業ネットワークや工場内に設置されたルーター、NAS、監視カメラ、制御システム等も忘れてはいけません。4QにもD-LinkルーターやOpenPLCなどIoT/OT機器の脆弱性が含まれており、これらは往々にしてファームウェア更新が滞留しがちです。サポート切れやアップデート未適用の機器がないか棚卸しし、可能な限り最新ファームウェアへの更新や機器リプレースを実施しましょう。どうしても更新できない場合は、ネットワーク分離やアクセス制限など緩和策を講じ、インターネットから直接アクセスできる状態を放置しないことが重要です。

脅威検知とインシデント対応の強化

脆弱性への対策だけでなく、悪用された際に速やかに検知・対応する能力も不可欠です。IPS/IDSやエンドポイント検知(EDR)のシグネチャを最新化し、KEVに掲載された脆弱性の既知の攻撃パターンやIoC(Indicators of Compromise)を監視します。CISAやセキュリティベンダーから提供される検知ルールやYARAルールを活用し、ログ分析やトラフィック監視に組み込みましょう。また万一侵入を許した場合でも、早期にそれを発見し被害を最小化できるようインシデント対応訓練を積んでおくことも有効です。

資産管理と内部教育の徹底

攻撃者に狙われる脆弱性は多岐にわたるため、まずは自社システムの全容を把握することが出発点です。ハードウェア・ソフトウェア資産の最新インベントリを整備し、使用中の全ての製品についてサポート状況や最新パッチ適用状況をチェックします。使われていないシステムや旧式OSは計画的に撤去し、やむを得ず残す場合もネットワークを分離するなどリスク低減策を講じます。またIT部門や開発部門に対し、「古い脆弱性を放置しない」「定期的なアップデート適用は必須」といった意識付けを行います。定期的なセキュリティ研修や訓練で、脆弱性管理の重要性を全社員と共有することも大切です。

脆弱性管理プロセスの強化と自動化

増加する脆弱性に対処するには、属人的な対応から脱却しプロセスとツールの整備を進める必要があります。脆弱性情報収集から評価、パッチ適用状況のトラッキングまで一元管理できる仕組みを整えましょう。例えばKEVカタログのデータを自社資産データベースと照合する自動ツールを導入すれば、新たな緊急欠陥の検知と対応指示を迅速化できます。また定期的に脆弱性対応状況をレビューし、未対応件数や所要日数といったKPIを計測・改善することも効果的です。経営層は必要な人員・予算を投じ、継続的に脆弱性管理体制を進化させることが求められます。

脆弱性管理プロセスの概要とポイントについては以下の記事でも解説しています。あわせてぜひご覧ください。
脆弱性管理とIT資産管理-サイバー攻撃から組織を守る取り組み-

まとめ

2025年4QKEVカタログ分析レポートからは、攻撃者の手口がより広範かつ巧妙になっている実態が浮き彫りになりました。特に今年はKEVカタログへのCVE追加件数が前年より増加し記録更新となったことから、従来以上のハイペースで緊急脆弱性が発生・悪用される可能性が高まっています。侵入前提での備えを強化すべきでしょう。

2025年を通じて言えることは、脆弱性対応のスピードと徹底度を組織文化として根付かせることです。経営層はリスクと投資対効果を理解し、現場は技術的施策を愚直に実行する。そして最新の脅威情報をキャッチアップし続けることで、組織全体のサイバー耐性を高められるでしょう。来たる2026年も同様のレポートを継続し、変化する攻撃者の戦術に対抗すべく知見をアップデートしていきます。

BBSecでは

脆弱性の悪用リスクに迅速に対応するには、専門家の支援を仰ぐことも有効です。ブロードバンドセキュリティ(BBSec)では、発覚した脆弱性への対応支援や緊急インシデント対応サービスをご提供しています。自社だけでは対応が難しいゼロデイ攻撃の発生や、大規模サイバー攻撃の兆候を検知した際はぜひご相談ください。経験豊富なセキュリティ専門チームが、お客様のシステム状況の迅速な把握、攻撃の封じ込め、再発防止策の導入まで包括的にサポートいたします。また、平時からの脆弱性診断サービスやセキュリティ研修なども取り揃えており、脆弱性管理体制の構築から有事の対応までワンストップで支援可能です。BBSecのサービスを活用し、貴社のセキュリティレベル向上にぜひお役立てください。

サイバーインシデント緊急対応

セキュリティインシデントの再発防止や体制強化を確実に行うには、専門家の支援を受けることも有効です。BBSecでは緊急対応支援サービスをご提供しています。突然の大規模攻撃や情報漏洩の懸念等、緊急事態もしくはその可能性が発生した場合は、BBSecにご相談ください。セキュリティのスペシャリストが、御社システムの状況把握、防御、そして事後対策をトータルにサポートさせていただきます。

サイバーセキュリティ緊急対応電話受付ボタン
SQAT緊急対応バナー

ウェビナー開催のお知らせ

  • 2026年2月4日(水)13:00~14:00
    【好評アンコール配信】「フィッシング攻撃の最新脅威と被害事例〜企業を守る多層防御策〜
  • 2026年2月10日(火)14:00~15:00
    Web攻撃の“今”がわかる OWASP Top 10 2025で読み解く脆弱性の狙われ方と対策の考え方
  • 2026年2月18日(水)14:00~15:00
    急増する「LINE誘導型」ビジネスメール詐欺の実態 ―社長になりすます最新BEC手口と組織で取るべき対策―
  • 最新情報はこちら

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る


    資料ダウンロードボタン
    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    お問い合わせボタン
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像

    CWE Top 25 2025年版(後編)– メモリ安全性が上位に増えた理由と対策の要点

    Share
    CWE Top 25 2025年版– メモリ安全性が上位に増えた理由と対策の要点アイキャッチ画像

    CWE Top 25:2025」では、もう一つ見逃せない特徴があります。それが、メモリ領域の安全性に関わる弱点が複数上位に含まれている点です。本記事では、CWE Top 25 2025年版で目立つメモリ系弱点を整理したうえで、なぜ上位に増えているのか、Webサービス運用の観点でどのように備えるべきかを解説します。

    はじめに:前編の振り返り(Web/API 12項目)

    前編では、CWE Top 25 2025年版のうち、WebアプリケーションやAPIで特に問題になりやすい弱点をピックアップし、リスクと診断観点を整理しました。具体的には、XSSやCSRFといった入力・リクエスト起点の脆弱性に加え、「認可の欠如不備」のようにログインしていても不正操作が成立するタイプの脆弱性が、実被害につながりやすいポイントとして挙げられます。Web/APIは機能追加や仕様変更が多いため、対策しているつもりでも抜けが生まれやすく、定期的な点検が重要です。

    前編の記事はこちらからご覧いただけます。
    CWE Top 25 2025年版(前編)– Web/APIで狙われやすい弱点12項目と診断ポイント」(https://www.sqat.jp/kawaraban/41257/

    前編で取り上げたWeb/APIの脆弱性は、日々の開発や運用の中で発生しやすく、脆弱性診断でも頻出する領域です。一方で、CWE Top 25 2025年版を俯瞰すると、もう一つ見逃せない特徴があります。それが、メモリ領域の安全性に関わる脆弱性が複数上位に含まれている点です。

    メモリ系の脆弱性は、C/C++など低レベル言語で起きやすい印象が強く、「Webアプリ中心の開発では関係が薄い」と思われることもあります。しかし実際には、Webサービスを支える基盤やOSS、ミドルウェア、各種ライブラリにはネイティブ実装が含まれることも多く、アプリケーションの外側でリスクが顕在化するケースも少なくありません。また、メモリ破壊系の脆弱性は、単なるサービス停止(DoS)に留まらず、条件次第では任意コード実行など深刻な侵害につながる可能性があります。攻撃の影響が大きく、対応にも専門性が求められることから、近年あらためて注目されている領域といえます。

    そこで後編では、CWE Top 25 2025年版で目立つメモリ系弱点を整理したうえで、なぜ上位に増えているのか、Webサービス運用の観点でどのように備えるべきかを解説します。

    メモリ領域の安全に関する脆弱性が上位に増えている理由

    CWE Top 25 2025年版ではメモリ安全性に関わる脆弱性が複数ランクインしている傾向もみてとれます。一見すると「これはC言語など低レベル言語の話で、Webアプリ開発とは関係が薄いのでは?」と思われるかもしれません。しかし実際には、Webサービスを提供する側にとっても無視できないテーマになっています。ここでは、2025年版で目立つメモリ系の脆弱性と、上位に増えている背景を整理します。

    2025年に目立つメモリ系6項目

    CWE Top 25 2025年版の中で、特にメモリ領域の安全性に関連する項目としては以下が挙げられます。

    1. CWE-787:範囲外の書き込み
    2. CWE-416:解放したメモリの使用
    3. CWE-125:範囲外の読み取り
    4. CWE-476:NULLポインター逆参照
    5. CWE-121:スタックベースバッファオーバーフロー
    6. CWE-122:ヒープベースバッファオーバーフロー

    これらは主にC/C++言語などで発生しやすい脆弱性で、メモリ破壊を起点としてアプリケーションの異常動作やクラッシュ、条件次第では任意コード実行にまでつながる可能性があります。

    メモリ系が“ランク上昇”した背景

    OSS・ミドルウェア・実行環境の影響が大きい

    近年のシステム開発では、自社でゼロからすべてを実装することはほとんどありません。
    Webアプリケーション自体は高水準言語(Java、PHP、Python、Ruby、JavaScriptなど)で書かれていたとしても、実際には裏側で多くのソフトウェア資産に依存しています。 例えば、以下のような領域はネイティブ実装(C/C++など)が含まれることが多く、メモリ安全性の影響を受けやすい代表例です。

    • 画像・動画の変換や解析
    • 圧縮・解凍処理
    • 暗号処理
    • OSやコンテナの周辺コンポーネント
    • Webサーバやロードバランサなどの基盤ソフトウェア

    つまり「アプリはWebだからメモリ破壊は関係ない」と切り分けるのではなく、サービス全体を構成する要素としてメモリ安全性の弱点が影響し得る、という視点が必要になります。

    「攻撃が成立した時のインパクト」が大きい

    メモリ破壊系の脆弱性は、単にアプリがダウンする(DoS攻撃等の影響による)だけでなく、条件がそろうと攻撃者にとって非常に強力な結果につながることがあります。たとえば、任意コード実行や権限奪取の足がかりになるケースもあり、被害の深刻度が高くなりやすい点が特徴です。

    Webアプリケーションの脆弱性は「データが漏れる」「不正操作される」といった被害が中心になりやすい一方で、メモリ系は侵害の方向性が変わり、“システムそのものの制御”に影響する可能性がある点で性質が異なります。このインパクトの大きさが、ランキング上でも目立ちやすい要因の一つです。

    “開発者の気付き”だけでは防ぎにくい

    XSSやSQLインジェクションは、実装者の意識と共通部品の整備で減らしていける領域です。一方でメモリ安全性の弱点は、そもそも自社コードではなく、依存しているライブラリやミドルウェアの脆弱性として露出することも少なくありません。この場合、開発者が気を付けて実装していても防ぎきれず、必要になるのは次のような対策です。

    • 利用コンポーネントの把握(棚卸し)
    • 脆弱性情報の継続的な収集
    • バージョンアップ・パッチ適用の判断と運用
    • 影響範囲の評価(どの機能が影響を受けるか)

    つまり、メモリ系の脆弱性は「作り込みで防ぐ」だけではなく、運用で守る力も問われる領域だと言えます。

    脆弱性対応は「作り込み」+「運用」の両輪

    Webアプリケーションのセキュリティ対策というと、入力チェックや認可実装など“作り込み”に注目が集まりがちです。もちろんこれは重要ですが、メモリ系の弱点が示すように、脆弱性対応には運用面の強さも求められます。

    運用面で意識したいポイントは、以下のように整理できます。

    • 利用しているライブラリ/ミドルウェアの把握(棚卸し)
    • 脆弱性情報の継続的な収集と影響評価
    • パッチ適用・アップデートの判断と実施
    • 監視・ログによる異常兆候の検知
    • 必要に応じた防御策(WAFなど)による被害軽減

    特に「アップデートできる体制があるか」「影響範囲を素早く見積もれるか」は、脆弱性が公開された際の対応スピードに直結します。メモリ系の脆弱性は影響が大きくなりやすい分、発覚後の初動が被害を左右するため、日頃から“運用で守る仕組み”を整えておくことが重要です。

    脆弱性診断でどう確認するか(診断観点の例)

    メモリ領域の安全性の脆弱性は、Web/APIの脆弱性とは性質が異なり、「画面やAPIを触るだけでは見えにくい」ケースもあります。そのため、脆弱性診断ではアプリケーションの挙動確認に加えて、実装・構成・依存関係といった複数の観点からリスクを洗い出すことが有効です。

    Webアプリケーション診断/API診断

    実際の画面・APIに対して攻撃パターンを当て、脆弱性が成立するかどうかを確認します。
    メモリ系の弱点そのものを直接検出するのは難しい場合もありますが、前編で整理した認可不備・IDOR・SSRF・ファイル関連など、実被害につながりやすい脆弱性を網羅的に確認できる点が強みです。

    ソースコード診断(SAST)

    危険な実装パターンや、入力値の扱い方、権限判定の実装の偏りなどを、コードレベルで洗い出せる手法です。メモリ領域の安全性の観点でも、ネイティブコードを含む箇所や危険APIの利用状況、例外処理の不足などを確認することで、潜在的なリスクを把握しやすくなります。特に、開発を継続しながら対策を積み上げる場合、設計や共通部品の見直しにも活用できます。

    プラットフォーム診断/OSS観点(依存関係・構成)

    メモリ系の脆弱性を含む“依存資産のリスク”に対応するには、構成・依存関係の観点が欠かせません。アプリケーションの外側に原因がある場合、どれだけアプリの実装を直してもリスクが残るためです。「脆弱性が出たときに、すぐ把握できる・すぐ対応できる」状態を作ることが、結果的にリスクを下げる近道になります。

    まとめ

    CWE Top 25 2025年版から読み取れるのは、Webアプリ・APIで頻出する脆弱性が依然として事故につながりやすい一方で、メモリ安全性のように“アプリの外側”に潜むリスクも無視できない存在になっているという点です。この2つを両立できるかどうかが、2025年のセキュリティ対策の分かれ道になると言えます。

    “定期的な診断+改善”でリスクを下げる

    脆弱性対策は、一度対応して終わりではなく、仕様変更・機能追加・依存資産の更新によって状況が変化します。だからこそ、CWE Top 25のような指標を参考にしながら、第三者視点の脆弱性診断で現状を確認し、優先度を付けて改善していくことが有効です。Webアプリケーション診断・API診断・ソースコード診断を組み合わせることで、「攻撃が成立するポイント」と「根本原因」を整理しやすくなり、修正の手戻りを減らしながら安全性を高められます。継続的な診断と改善を通じて、インシデントの予防と品質向上につなげていきましょう。

    BBSecでは

    「どこが危ないのか」を把握しないまま対策を進めると、重要な弱点が残ったり、修正の手戻りが増えたりすることがあります。Webアプリケーション/APIの脆弱性診断により、実際に攻撃が成立するポイントを洗い出し、優先度を付けて改善につなげることが可能です。まずは現状の課題や診断範囲について、お気軽にご相談ください。

    限定キャンペーン実施中!

    ソースコード診断 アップチャージプランのご案内

    Web診断に加えて、アプリケーション内部の脆弱性を確認できるソースコード診断(アップチャージプラン)もご用意しています。

    詳細・お申し込みボタン

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る


    資料ダウンロードボタン
    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    お問い合わせボタン
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像

    今さら聞けない脆弱性とは-基礎から学ぶ脆弱性管理と効果的な脆弱性対策ガイド-

    Share
    今さら聞けない脆弱性とは-基礎から学ぶ脆弱性管理と効果的な脆弱性対策ガイド-アイキャッチ画像

    インターネットや情報システムの世界でよく耳にする「脆弱性」という言葉。普段の生活ではあまり使わないため、聞いたことはあっても正確に説明できないという方は少なくありません。特に近年はサイバー攻撃や情報漏洩のニュースが多く報じられるため、脆弱性という言葉はますます身近になってきました。しかし、「脆弱性とは一体何なのか」「個人や組織としては何をすればいいのか」と問われると、答えに詰まってしまう人も多いはずです。本記事では、初心者の方にも理解しやすいように、脆弱性の基本的な意味から具体的な事例、そして個人や組織が取るべき対策までを解説します。これからサイバーセキュリティの学びを始めたい方にとって、理解の入り口となる内容を目指しました。

    脆弱性とは何か?

    サイバーセキュリティにおける脆弱性とは、コンピュータやネットワーク、ソフトウェアなどに存在する思わぬ欠陥や弱点のことを指します。プログラムの設計ミスや設定の甘さ、想定されなかった挙動などが原因で発生し、それを悪用されると本来守られるべき情報やシステムが攻撃者に狙われてしまいます。 もっと身近な言葉に例えるなら、家のドアに鍵をかけ忘れた状態や、窓の鍵が壊れている状態が「脆弱性」です。そこに泥棒(ハッカー)がやって来れば、侵入や盗難のリスクが高まります。つまり脆弱性そのものは「危険ではあるがまだ被害が起きていない不備」であり、攻撃者に利用されて初めて実際の被害につながるのです。

    脆弱性が生まれる原因

    脆弱性は無意識のうちに生まれることが多く、その理由は多岐にわたります。代表的な要因には以下が挙げられます。

    • ソフトウェアの開発過程における設計ミスやバグ
    • サーバーやOSのセキュリティ設定の不備
    • 古いシステムやソフトウェアを更新せずに使い続けること
    • 想定していなかったユーザーからの入力や操作
    • 利用するプログラムやライブラリに潜む欠陥

    実際、ソフトウェア開発は非常に複雑で、数百万行にも及ぶプログラムコードから成る場合もあります。そのため、すべてのバグや欠陥を完全に排除することは事実上困難です。

    脆弱性の代表的な種類

    脆弱性にはいくつも種類があり、攻撃手法によって分類されます。初めて耳にする方でもわかりやすい代表例を挙げてみましょう。

    SQLインジェクション

    ウェブアプリケーションにおける入力欄に悪意のあるデータベース命令文を仕込む手法で、見せてはいけない情報が外部に漏れてしまう危険があります。

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

    ウェブサイトに不正なスクリプトを埋め込んで、閲覧者のブラウザ上で実行させる攻撃。利用者のIDやパスワードが盗まれる危険があります。

    バッファオーバーフロー

    プログラムに想定していない長さのデータが入力されることで、メモリ領域が壊され、攻撃者に任意のコードを実行されるリスクがあります。

    セキュリティ設定不備

    セキュリティ機能が有効化されていなかったり、不要なポートが開いたままになっていたりするケースも脆弱性の一つです。

    脆弱性が悪用されるとどうなるのか

    実際に攻撃者が脆弱性を利用すると、さまざまな被害につながります。たとえば以下のようなケースです。

    • クレジットカード番号や個人情報の漏洩
    • 社内ネットワークが侵入されて業務停止
    • 顧客の信頼を失い、企業のブランドに大打撃
    • 勝手に改ざんされたWebサイトが利用者をウイルス感染させる

    こうした被害は一度起きると回復に莫大なコストがかかり、企業経営に深刻な影響を与えます。近年報じられる情報漏洩事件の多くは、既知の脆弱性を放置していたことが原因とされています。

    脆弱性対策として実施すべきこと

    脆弱性はゼロにはできないため、いかに早く気づき、適切に対応するかが重要です。個人利用者と企業の立場で考えられる基本的な対策を見てみましょう。

    個人ができること

    • OSやソフトウェアを常に最新バージョンに保つ
    • ウイルス対策ソフトを導入し、定義ファイルを更新する
    • 怪しいリンクやメールの添付を開かない
    • 強固なパスワードや多要素認証を利用する

    企業がすべきこと

    • 脆弱性診断やペネトレーションテストを定期的に実施する
    • セキュリティパッチが公開されたら速やかに適用する
    • 社内従業員へのセキュリティ教育を徹底する
    • ログ監視や侵入検知システムの導入で不審な挙動を早期発見する

    脆弱性とセキュリティ文化

    技術的な対策も重要ですが、それ以上に「セキュリティを日常的に意識する文化づくり」が欠かせません。脆弱性は人間のちょっとした油断や不注意からも生まれます。更新通知を無視したり、利便性を優先してセキュリティを後回しにしたりすると、そこに必ず隙が生まれるのです。 政府や専門機関が公表する脆弱性関連情報に目を通す習慣をつけるのも効果的です。たとえば国内では独立行政法人情報処理推進機構(IPA)が脆弱性関連情報を提供しており、日々の最新情報をチェックできます。

    これからの脆弱性対策

    今後はクラウドサービスやIoT機器の普及によって、脆弱性の範囲はさらに広がります。冷蔵庫やカメラ、工場の制御システムなど、私たちの生活に直結するモノがすべてインターネットにつながる時代となりつつあります。その一つひとつが脆弱性を抱えていた場合、想像以上に深刻なリスクが広がる可能性があるのです。そこで重要になってくるのが「ゼロトラスト」の考え方です。これはすべてのアクセスを信頼しないという前提に立ち、システムを多層的に守ろうとするセキュリティモデルで、近年世界中の企業が導入を進めています。

    まとめ

    脆弱性とは「情報システムやソフトウェアに存在する欠陥や弱点」であり、その多くは放置されることでサイバー攻撃に悪用され、大規模な被害を引き起こす可能性があります。重要なのは、脆弱性をゼロにすることではなく、発見されたときに迅速に対応し、常に最新の状態を保つことです。 セキュリティ対策は専門家だけの仕事ではありません。個人ユーザも企業の一員も、日々の小さな行動が大きなリスク回避につながります。これまで「脆弱性」という言葉だけを知っていた方も、これを機に身近な問題として捉え、今日から個人や組織としてできる対策を一つずつ取り入れていきましょう。

    【脆弱性対策および脆弱性管理に関する情報収集サイト・資料】


    Security NEWS TOPに戻る
    バックナンバー TOPに戻る

    ウェビナー開催のお知らせ

  • 2025年10月8日(水)14:00~15:00
    ウェビナー参加者限定特典付き!
    ソースコード診断で実現する安全な開発とは?脆弱性対策とDevSecOps実践
  • 2025年10月22日(水)14:00~15:00
    ランサムウェア対策セミナー2025 ~被害を防ぐための実践的アプローチ~
  • 2025年10月29日(水)13:00~14:00
    【好評アンコール配信】「フィッシング攻撃の最新脅威と被害事例〜企業を守る多層防御策〜
  • 最新情報はこちら


    資料ダウンロードボタン
    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    お問い合わせボタン
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像

    Webアプリケーションの脆弱性入門

    Share

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る

    人がアプリケーションを持っているイラスト

    Webアプリケーションは私たちの日常生活に欠かせない存在となっています。しかし、それらのWebアプリケーションが攻撃者からの脅威にさらされていることをご存知でしょうか?Webアプリケーションに脆弱性が存在すると、悪意のある第三者によって個人情報や企業の機密情報が漏洩するリスクが生じます。この記事では、Webアプリケーションの脆弱性の種類について解説します。

    脆弱性とは

    脆弱性とは(ポイントマークとその周りに人がいる)イメージ

    脆弱性とは、プログラムの不具合や設計上のミス等によるバグが原因となって発生したセキュリティ上の欠陥や弱点のことを指します。Webアプリケーションに脆弱性が存在する場合、攻撃者がシステムに侵入し、機密情報を盗み出したり、サービスを乗っ取ったりするリスクが生じます。企業はWebアプリケーションの脆弱性を理解し、それに対処するための適切な対策を講じる必要があります。

    脆弱性の種類

    脆弱性にはさまざまな種類があります。以下に代表的な例を挙げます。

    1. SQLインジェクション

    データベースを使って情報を処理するWebアプリケーションは、その多くがユーザからの入力値をもとにデータベースへの命令文を構成しています。SQLインジェクションは、攻撃者がWebフォームなどの入力欄に特定のコードを入れることで不正な命令文を構成し、データベースを不正利用できてしまう脆弱性です。これを悪用することで、例えば、データベースの情報を盗んだり、改ざんしたり、消去したりできる可能性があります。

    2. クロスサイトスクリプティング(XSS)

    クロスサイトスクリプティング(XSS)は、ネットバンキングや掲示板のように、ユーザから入力された値を処理して出力するWebページに攻撃者が悪意のあるスクリプトを埋め込むことで、Webページを閲覧したユーザのWebブラウザ上でスクリプトを実行させることができる脆弱性です。これを悪用されると、ユーザが意図しない情報の送信や表示ページの改ざんなどのリスクが発生します。

    3. クロスサイトリクエストフォージェリ(CSRF)

    クロスサイトリクエストフォージェリ(CSRF)は、攻撃者が罠として用意した偽サイトを用いてリンクや画像をクリックさせることで、ユーザが意図していないリクエストを強制的に行わせることができる脆弱性です。例えば、SNSで「いいね!」をする、銀行の振込操作など、被害者がログインしているWebサービスの操作を攻撃者が悪用することが可能です。

    4. セッション管理の不備

    Webアプリケーションの中には、セッションID(ユーザを識別するための情報)を発行し、セッション管理を行うものがあります。このセッション管理に不備があることで、セッションIDを固定化できたり、有効なセッションIDが推測可能だったりすると、セッションハイジャックと呼ばれる攻撃が成立する危険性があります。これにより、攻撃者が本来のユーザになりすまして権利を行使することで、プライベートな情報の閲覧や、設定の変更などが行われる可能性があります。

    5. アクセス制御の不備

    Webアプリケーションにおいて、本来付与されている権限の範囲内でのみ動作するような制御が実装されていない問題を指します。例えば、一般ユーザとしてログインした際に管理者としての権利を行使できてしまう権限昇格、パラメータを操作することで、本来制限された領域外のファイルやディレクトリにアクセスすることが可能となるパストラバーサルなどです。不正アクセスや意図しない情報の公開をはじめとした、様々なリスクが生じます。

    脆弱性を悪用した攻撃による影響

    脆弱性が悪用されると、企業に深刻な影響が及ぶ恐れがあります。脆弱性が引き起こす可能性のある影響の例を、以下に示します。

    機密情報の漏洩

    攻撃者は、脆弱性を利用して機密情報を盗み出すことができます。クレジットカード情報や個人情報など、大切な情報が漏洩することで、企業の信頼性に係る問題や法的な問題が発生する可能性があります。

    データの改ざん

    脆弱なWebアプリケーションは、攻撃者によってデータの改ざんが行われる可能性があります。データの改ざんによって、Webアプリケーションの正確性が損なわれたり、信頼性が低下したりする可能性があります。

    サービスの停止または遅延

    脆弱性を悪用されると、サービスの停止、遅延、またはデータベースの消去といった、システム全体に影響が及ぶ被害を受ける恐れがあり、企業のビジネス活動に重大な影響が生じる可能性があります。

    金銭的な損失

    脆弱性のあるWebアプリケーションは、企業にとって金銭的な損失をもたらす可能性があります。攻撃者による不正アクセスでデータが盗難された結果、企業に損害賠償責任が生じる場合があります。

    企業の信頼喪失

    セキュリティに関する問題が公になると、企業の評判に悪影響を与える可能性があります。顧客やパートナーからの信頼を失うことは、企業にとって非常に重大な損失です。

    脆弱性対策の方法

    脆弱性の悪用を防ぐためには、以下のような対策が考えられます。

    正しい権限管理の実施

    ユーザには場面に応じた必要最小限の権限のみ付与することが推奨されます。また、不要な機能やリソースへのアクセスを制限することも脆弱性を軽減させるポイントとなります。

    定期的なセキュリティチェックの実施

    定期的なセキュリティチェックの実施(セキュリティとパソコンの周りに人)イメージ

    Webアプリケーションに対しては、機能追加などのシステム改修時はもちろんのこと、定期的なセキュリティチェックを行うことが重要です。脆弱性スキャンやペネトレーションテストなどの手法を活用し、問題を早期に発見して修正することが大切です。

    最新のセキュリティパッチの適用

    Webアプリケーションを開発・運用する際には、使用しているフレームワークやライブラリの最新のセキュリティパッチを適用することが必要です。これにより、既知の脆弱性やセキュリティ上の問題を解消することができます。

    まとめ

    脆弱性のあるWebアプリケーションは、攻撃の潜在的なターゲットになります。セキュリティ対策を徹底し、脆弱性の早期発見と修正を行うことが重要です。また、さまざまな対策手法やセキュリティツールを活用し、脆弱性を作り込まないセキュアな開発環境作りに取り組んでください。企業のデータや顧客の個人情報を守るためにも、脆弱性対策は欠かせません。今回の記事がお役に立てれば幸いです。

    セキュリティ診断サービスのサムネ

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る

    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像
    セキュリティトピックス動画申し込みページリンクへのバナー画像

    SQLインジェクションの脆弱性、企業が問われる2つの責任とは

    Share

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る

    この記事では、XSS(クロスサイトスクリプティング)と並ぶ、Webアプリケーションの代表的脆弱性といえる「SQLインジェクション」について解説します。

    XSSとSQLインジェクションの違いや、SQLインジェクション攻撃が実際に行われるまでの手口、セキュリティ会社がどのようにSQLインジェクションの脆弱性の有無を判断しているかなどを解説します。また、SQLインジェクションを放置した責任を企業が問われた裁判の判決も紹介し、最後にSQLインジェクションの対策方法を考えます。

    SQLインジェクションとは

    「SQLインジェクション」とは、データベースを操作する「SQL」という言語を悪用して、Webアプリケーションの入力フィールドに悪意のあるSQL文を入力するなどして行うサイバー攻撃のことです。SQLインジェクション攻撃によって、なりすまし、Webサイトの改ざん、あるいはデータを盗んだり破壊したりといったことが可能になります。

    XSSとSQLインジェクションの違い

    もうひとつの代表的な脆弱性であるXSSは、Webサイトにアクセスしているユーザに対して攻撃を行います。一方、SQLインジェクションは、攻撃対象がユーザではなくデータベースです。データベースに登録されている全てのデータが攻撃対象になり得るという点で、SQLインジェクションの方が、被害が発生した場合の規模がより大きくなる傾向があります。管理者にとって見つかったらとても嫌な脆弱性のひとつです。

    SQLインジェクション攻撃が行われる仕組み

    SQLとはデータベースを操作するための言語です。MySQL、PostgreSQL、Oracleなど、さまざまなデータベースで広く使われており、これらのデータベースは、すべてSQLインジェクションの攻撃を受ける可能性があります。

    「Shodan(ショーダン)」というちょっと変わった検索エンジンでは、Webサイトのコンテンツではなく、インターネットに存在するコンピュータやIoT機器を探せるのですが、このShodanで「sql」と検索すれば、サーバヘッダに「SQL」が入ったコンピュータやサーバの一覧が山ほどリストアップされます。

    サイバー攻撃者は、しばしばこうした情報をもとに標的を探し出し、一覧の中から、SQLインジェクションの脆弱性が放置されているサーバをさまざまな方法で絞り込み、攻撃を実行します。

    脆弱性診断の現場でSQLインジェクションはどのぐらい見つかるのか

    弊社が実施しているWebアプリケーション脆弱性診断の2020年上半期統計(14業種延べ533企業・団体。4596システムの診断結果)では、SQLインジェクションは、検出される全脆弱性(システム全体の83.9%)のうち1%ほどとなっています。被害が発生した場合のインパクトが極めて大きな脆弱性ですので、これは決して小さい数字であるとは言えません。

    SQLインジェクションを検出する方法

    一般的なやり方としては、入力フィールドに本来許可してはいけない文字列を設定した場合にWebアプリケーションがどう反応するか、といったことを観察し、SQLインジェクションの脆弱性の有無を診断します。こうした文字列を「診断文字列」と呼ぶことがあります。ちなみに、SQLインジェクションの脆弱性が存在する場合に、個人情報の取得ができるかどうかまでを実際にやってみるのがペネトレーションテストです。

    SQLインジェクションの脆弱性を突かれた被害事例、企業が負う2つの責任

    SQLインジェクションの脆弱性への対策を怠った結果、Webサイトが攻撃を受けて被害が発生してしまった場合、企業はどのような責任を負うことになるのでしょうか。

    運営責任

    あるショッピングサイトの被害事例からご紹介しましょう。このサイトでは、SQLインジェクションによる攻撃を受け、クレジットカード情報を含む最大10万件の個人情報が漏えいしました。その結果、営業停止による機会損失に加え、顧客に対する賠償用買い物ポイントの付与、お詫び状送付、被害者対応、インシデントの調査などに多くの費用がかかりました。

    これは、欠陥を含むシステムを運営していた代償であり、「運営責任」を問われたかたちです。

    開発責任―東京地裁判決より

    続いて、運営責任ではなく、システムの「開発責任」を問われた例として、2014年にあった裁判の判決(平成23年(ワ)第32060号)をご紹介します。

    とある企業の依頼で開発、納品されたオンラインショッピングのシステムに、SQLインジェクションの脆弱性が存在し、その結果、不正アクセスによる情報漏えい事故が発生しました。開発を依頼した側の企業は、開発会社がセキュリティ対策を怠っていたことを債務不履行として裁判に訴えました。東京地方裁判所はそれを認め、開発会社には約2,200万円の損害賠償支払いが命じられました。

    SQLインジェクションはより過失度が大きい脆弱性

    情報漏えいとは? 代表的な原因や求められる対応策」で解説していますが、どんな情報が漏えいしたかによって、情報漏えいの深刻度は異なります。たとえば、メールアドレスとセットでそれに紐付くパスワードも漏えいしていたとしたら、メールアドレスのみが漏えいした場合と比べ、事態はより深刻です。

    そして、データベースに保存されるのは重要な情報ですから、そこを攻撃対象とするSQLインジェクションは、対策の優先順位が非常に高い脆弱性だといえます。対策を怠り、事故を招いた場合、社会やユーザからは非常に厳しい目が向けられるでしょう。

    たとえば、納品したオンラインショッピングのシステムにSQLインジェクションの脆弱性が存在していたら、上述のように債務不履行、納品物の瑕疵とみなされ、SQLインジェクションの脆弱性を放置したままWebサイトを運営していたら、管理義務を果たしていないとみなされる可能性があるのです。

    さらに言えば、Webサイトの開発責任が他社にあり、他社から賠償を受けられたとしても、Webサイトの運営側ではエンドユーザに対してなんの申し開きも立ちません。たとえばこれは、食中毒を出したレストランが、顧客に対して「傷んでいた食材を納品した卸業者が悪い」と言えないのと同じことなのです。

    SQLインジェクション対策

    重要な情報が集まるデータベースは、守るべき優先度がきわめて高く、SQLインジェクション対策としてさまざまな取り組みが行われています。

    まず、DevSecOpsの考えのもとでセキュアコーディングを行ったり、開発段階で脆弱性が作り込まれていないかソースコード診断を行ったりすることは、コストパフォーマンスの高い、きわめて有効な対策です。

    さらに、近年、SQLインジェクションをはじめとするWebアプリケーション脆弱性に対処する仕組みが、アプリケーションやミドルウェア、開発環境側で整いつつあります。脆弱性のあるWebアプリケーションへの悪意ある通信をブロックするWeb Application Firewall(WAF)の普及も進んでいます。

    2021年現在、最新のアプリケーションと開発環境を用いて新規にWebアプリケーションを開発するなら、たとえセキュリティを意識せずに開発に取り組んでいたとしても、SQLインジェクションの脆弱性が作り込まれることは少なくなってきているといえるでしょう。

    しかしながら、すべての開発会社が最新の環境で開発を行える、ということはありません。DevSecOpsも、開発の考え方としてはまだ新しく普及はこれからという面があり、また、ソースコード診断を行うことができるような予算やスケジュールを確保できないことも多いでしょう。さらに、開発やリリース時点では脆弱性が存在しなかったとしても、Webサイトの機能追加や新しい攻撃手法の発見等によって、脆弱性は日々新たに生み出されていきます。

    こうした実情に対して有効なのは、Webアプリケーションの定期的な脆弱性診断です。SQLインジェクションによるリスクを考えると、これはサイトを運営するならばぜひとも実施すべき対策、といえるでしょう。

    まとめ

    • SQLインジェクションとはデータベースを操作する「SQL」という言語を悪用して行うサイバー攻撃、あるいはその脆弱性のことです。
    • Webサイトにアクセスしているユーザを狙うXSSと違って、Webサイトに登録済みのデータを狙うSQLインジェクションでは、より規模の大きい被害が発生する傾向があります。
    • 多くのデータベースではSQL言語が使われており、それらのデータベースはすべて潜在的にSQLインジェクションの攻撃を受ける可能性があります。
    • SQLインジェクション攻撃では、大規模な個人情報漏えいが起こる可能性が高く、そうなった場合、企業は運営責任を問われます。
    • SQLインジェクションの脆弱性を作り込んでしまった会社に損害賠償を命じる判決が下されたこともあります。
    • 最新の環境で開発を行えば発生しづらくなってはいるSQLインジェクションですが、リスクはゼロではありません。定期的な脆弱性診断は有効性の高い対策と考えてよいでしょう。

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る


    資料ダウンロードボタン
    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    お問い合わせボタン
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像
    セキュリティトピックス動画申し込みページリンクへのバナー画像

    プログラミング言語の脆弱性対策を考える

    Share

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る

    プログラミング言語のセキュリティは、組織のシステム全体のセキュリティに大きな影響を与えます。「アプリケーションの脆弱性の半数はC/C++に起因する」という報告もあり、プログラミング言語における脆弱性の特徴を理解し、適切な対策を講じることは、いまや組織のセキュリティに不可欠な取り組みといえます。本記事では、プログラミング言語の最新動向、脆弱性が生まれる背景を解説します。

    プログラミング言語のトレンド

    言語 使用している
    開発者の比率
    JavaScript69.7%
    HTML/CSS 62.4%
    SQL 56.9%
    Python 41.6%
    Java 38.4%
    Bash/Shell/PowerShell 34.8%
    C# 32.3%
    TypeScript 28.3%
    PHP 25.8%
    C++20.5%
    C 18.2%
    Go 9.4%
    Kotlin8.0%
    言語 使用している
    開発者の比率
    Ruby7.5%
    VBA6.2%
    Swift6.1%
    R5.5%
    Assembly4.9%
    Rust4.8%
    Objective-C4.4%
    Scala3.9%
    Dart3.7%
    Perl3.3%
    Haskell1.8%
    Julia0.9%

    Stack Overflow Developer Survey 2020 より弊社作成
    https://insights.stackoverflow.com/survey/2020#technology-programming-scripting-and-markup-languages-professional-developers

    JavaScript、HTML/CSS、SQLなどが上位に並んでいますが、皆さんの予想どおりでしょうか?ちなみに冒頭で述べた、「脆弱性の半数」を生み出すとされるC/C++に関しては、昨今IoTデバイスなどの組込機器やデスクトップアプリケーション等に利用目的が収れんしてきているといわれ、その使用率は減少傾向にあります。また、リストには記載がありませんが、日本に限ってみると、COBOLなどのレガシーシステム向けの言語がいまだ根強いシェアを保っているのはご存じの方も多いことでしょう。

    なお、弊社での診断傾向としては、JavaScriptのほか、Pythonが目立っています。今後については、「オーバーヘッドが少なく、静的型付け言語である」という特徴をもつTypeScriptなどが、軽量さの望まれるサーバレス環境での需要につながるものとみられます。また、Android端末向けにKotlinの需要も高まると予測しています。以下、ご参考に、プログラミング言語と主な利用分野のマッピングを示します。

    図:主要プログラミング言語と現在利用されている代表的分野

    プログラミング言語の脆弱性 ― 言語ごとに異なる特徴を知る

    プログラミング言語の脆弱性を考える場合、特定の言語に固有のものと、言語間で共通のものを押さえておく必要があります。

    例えば、C/C++では、その脆弱性の7割がメモリハンドリングのミスに起因するといわれており、メモリ関連処理のロジックを正しく制御させ、ソースコード内に脆弱性を作りこまないようにすることが、重要なセキュリティ対策となります。そのほか、言語固有の脆弱性として代表的なものは、Javaでの「安全でない入力に対するデシリアライゼーション」の問題、JavaScriptでの「パストラバーサル」や「暗号」の問題、PHPでの「クロスサイトスクリプティング(XSS)」や「SQLインジェクション」などになります。

    なお、2000年代後半以降にリリース開始された比較的新しいプログラミング言語(Kotlin、Golang、Rustなど)については、上記とは若干が異なる観点からの注意が必要です。まず、こうした言語では、セキュアコーディングのための様々な関数やライブラリなどが用意され、セキュリティに関する手厚い対策が組み込まれているのですが、その一方で、セキュリティの機能が増えれば増えるほど関連ドキュメントが膨大になり、把握が追いつかないという課題が生じています。例えば、Kotlinの場合、Kotlin自体のドキュメンテーションではセキュリティ関連の記述はNULLの安全性に触れる程度なのですが、セキュアコーディングに取り組もうとすると、膨大なAndroid Developer Guideを参照する必要があります。また、相互運用性への配慮も必要です。例えばKotlinやGolangはJavaと一緒に利用するケースが多いため、こうした言語で開発を行う場合には、Java側の環境を考慮したうえでのセキュアコーディングが不可欠になり、それが開発の難易度を押し上げているという状況があります。

    プログラミング言語の脆弱性 ― 全言語に共通の特徴を知る

    続いては、すべての言語に共通する脆弱性です。これは大きく以下の3つに分類できます。

    情報漏洩
    ・表示する必要のない機微な情報(ユーザ名やIDなど)の露呈
    ・不要なシステム情報の公開
    入力検証の不備
    ・不正なパラメータの許容、XSS、SQLインジェクション
    ・HTTPヘッダ分割
    認可・認証関連の脆弱性
    ・オブジェクトやファイルなどへのアクセス認可の不備
    ・認証情報の保護機構や暗号化の不備

    脆弱性が発生する背景

    以上述べてきたような脆弱性は、なぜ発生するのでしょう。その背景には、開発現場における以下のような課題があると考えられます。

    ・プロジェクトベースで人員が変わることが多く、知識や経験の共有が行われることがまれ
    ・脆弱性やセキュアコーディングに対する意識、知識レベルがプログラマによって異なる
    ・ギリギリのスケジュールでプロジェクトが進むことが多く、知識や経験の共有まで手が回らない
    ・セキュリティへの対応が明示的な業務として遂行されるのではなく、プログラマやプロジェクトメンバー1人1人の善意に依存する面が強い

    具体例で説明しましょう。先ほど、PHPではXSSやSQLインジェクション等の脆弱性がよく見られると述べました。しかし、PHPでも、バージョン4以降であれば「htmlspecialcharacters」という関数を利用することでXSSの回避に必要な特殊文字のエスケープ処理ができます。SQLインジェクションについても、プレースホルダの利用による回避が可能です。このように、すでに対策が存在する場合であっても、プログラマ間で知識や経験の共有が行われていない場合、ソースコード診断やステージング環境でのWebアプリケーション脆弱性診断が実施されない限り、脆弱性は放置されることになります。また、「機微な情報の露呈」という問題については、個人情報保護などの法制度に対する知識が共有されておらず、そもそも課題として認識されていないという可能性があります。なお、知識共有のハードルは、セキュリティ機能が充実しているゆえに把握すべき情報量が膨大で、他の言語との互換性等まで含めた配慮が求められる最近のプログラミング言語では、さらに高いといえるでしょう。

    こうした課題を解決するには、プログラマ個人の知識・技術レベルを高めることはもちろんですが、それ以上に重要なのは、組織を挙げての体系的な取り組みであるといえます。

    先手を打った対処がカギ

    そこでぜひ取り入れたいのが、プログラミング言語に関わる脆弱性が生じていないかを、開発の初期段階から継続的に点検する取り組みです。これは「DevSecOps」とも呼ばれる考え方で、「開発(Dev)」・「運用(Ops)」に「セキュリティ(Sec)」の観点を組み込むことで、システムのセキュリティ強化を図るものです。開発プロジェクトは常に時間との闘いですが、だからといって脆弱性への対応を先送りしてはなりません。対処が事後になればなるほど、影響範囲が広がり、コストも肥大する恐れがあります。

    以前の記事でも解説しましたが、何よりも、初期段階からの取り組みが重要です。例えば、人員の流動が激しいプロジェクトベースの現場では、開発の早期からソースコード診断を含むテスト活動を実施し、脆弱性をコード単位で効率的に解消していくことによって、各段階で積み上げられた知識や経験を、後続の工程で活用することが可能になります。また、近年主流になっているアジャイル型の開発手法でもこれは有効で、短い開発サイクルが繰り返される中で早期に・こまめにテストや修正を行うようにすることで、セキュリティを強化できるのみならず、プロジェクト全体の工数も抑制できます。なお、短いサイクルでテストを回すには、SaaSタイプのソースコード診断サービスの利用を検討してもよいでしょう。

    先手を打って脆弱性に対処できれば、脆弱性の要因となっていた様々な課題に取り組む余裕も生まれます。結果として、セキュリティと開発効率をともに高められる好循環を実現できるのではないでしょうか。

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る


    資料ダウンロードボタン
    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    お問い合わせボタン
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像
    セキュリティトピックス動画申し込みページリンクへのバナー画像

    ソースコード診断の必要性とは?目的とメリットを紹介

    Share

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る

    WEBアプリケーションは、プログラムの集合体であり、 ソースコードとはシステムやWebアプリを動かすコンピュータプログラムのことです。 このプログラムの集合体は現在では人間から読み書きしやすい言語で書かれていることが多くWebアプリケーションは人間にも読みやすいプログラムのテキスト、ソースコードの集合体と言い換えることができるようになっています。

    脆弱性診断とは、システムのセキュリティ上の問題点を洗い出す検査のことですが、その中でも診断対象によりさまざまなサービスがあります。この記事では、その中の「ソースコード診断」を取り上げて、その定義、特徴、メリット、目的などを紹介します。

    ソースコード診断とは?

    脆弱性診断とは、システムのセキュリティ上の問題点を洗い出す検査のことを指します。
    診断対象により、さまざまな脆弱性診断サービスがあります。

    まず、企業が開発したWebアプリケーションが挙げられます。
    問合せや会員登録といった、入力フォームの入出力値の処理、ログイン機能の認証処理などに対して、幅広く網羅的に脆弱性診断が行われます。
    次に、そのWebアプリケーションを実行するサーバやネットワーク機器、OSやミドルウェアに脆弱性がないか検査するネットワーク診断があります。
    そのほか、近年増加の一途をたどる スマホアプリケーションや IoT機器を対象とした脆弱性診断もあります。

    このうち、ソースコード診断とは、アプリケーションのソースコード(開発者が書いたプログラム)を解析して、セキュリティ上および品質上の問題をコーディングレベルで検査する診断のことをいいます。

    ソースコード診断

    ソースコード診断には、ツールを用いて自動的に処理するツール診断(自動診断)と、セキュリティエンジニアが目視で確認する手動診断があります。

    効率的に網羅性を確保できる自動診断ツールの支援は欠かせません。

    一方手動診断は、機械的に検出できず、人間による判断が必要な脆弱性を発見します。手動のみで行う場合もありますが、多くはツール診断と組み合わせて網羅性と精度を上げていきます。

    ソースコードを開示するため、ソースコード診断はホワイトボックステストと呼ばれます。これに対して、ソースコードや設計書を見ずに、システムの外部からアクセスして脆弱性や動作を検証する方法をブラックボックステストと呼びます。

    ソースコード診断の特徴とメリット

    ブラックボックステストでは検出が難しい脆弱性がソースコード診断なら検知できる場合があります。具体的には 「ソースコード診断で検出できる脆弱性」で後述します。

    ブラックボックステストは、すでにソフトウェアあるいはシステムが機能していることを前提とした、リリース前あるいはリリース後に実施します。これに対して、ソースコード診断はその前段である開発プロセスから実施できるため、テスト結果を受けてプログラムを修正することが可能です。

    開発の手戻りを減らすことでコストや工数削減につながります。詳細は「ソースコード診断の有効性」を参照してください。

    ソースコード診断を実施する目的

    ソースコード診断の目的は、プログラムに作りこんでしまった脆弱性を網羅的に検出することです。開発時に繰り返し実施し、開発者が修正していく運用が想定されています。

    ソースコード診断の有効性

    ソースコード診断は開発段階初期から実施可能です。リリース直前やリリース後に脆弱性が発見される可能性を抑えることで、より効率的で信頼性の高いシステム開発が可能になります。

    CPE-Coreとはソースコード内の脆弱性と品質面の問題を検査する当社の自動静的解析ツールです。

    システムのセキュリティを確保する方法

    開発(Dev)、運用(Ops)、セキュリティ(Sec)を一体にしてシステムライフサイクルを回すDevSecOpsという考え方が注目を集めています。DevSecOpsとは、開発の全工程において、開発チームと運用チームが相互協力し、その一環にセキュリティを組みこむことで、アプリケーション開発のセキュリティを確保していく考え方のことをいいます。ここでは、開発プロセスのどこで、セキュリティを確保するための施策を実施するか説明します。

    DevSecOpsにおけるセキュリティ対策

    DevSecOps実現のためには、「シフトレフト」の考え方が大切になります。
    セキュリティを開発の最終段階で対応したのではすでに遅く、開発プロセスの全フェーズにおいて常にセキュリティ上の課題を先取りして解決しながら進めることが、テストやリリースといった最終段階での手戻りを防ぎ、結果的にトータルコストの削減と品質の向上に寄与します。

    一般的なセキュリティ対策として多くイメージされている「Webアプリケーション脆弱性診断」は「テスト」「リリース」工程におけるセキュリティ対策の一つ。
    その一つ手前工程の「製造」工程におけるセキュリティ対策の一つが「ソースコード診断」です。

    セキュアプログラミング

    ソースコード診断の前に、そもそもシステムの設計・開発段階で、開発者が脆弱性を作りこまないようにする手法があります。これをセキュアプログラミングと呼びます。セキュアプログラミングで開発し、本当に脆弱性を作りこんでいないかどうかソースコード診断でチェックします。

    ソースコード診断で検出できる脆弱性

    一般的なWebアプリケーション脆弱性診断(ブラックボックステスト)では検出しにくい脆弱性も、ソースコード診断(ホワイトボックステスト)では発見できる場合があります。
    たとえば未使用のコード、ログファイルによる情報の露出、エラーメッセージによる情報の露出などは、ソースコードを直接確認することで検知可能になります。

    以下はWebアプリケーション診断とソースコード診断の両方の観点で検出可能な脆弱性です。
    ここでは代表的な脆弱性(セキュリティバグ)について説明します。これらのバグを突く攻撃の名称としても用いられています。

    バッファオーバーフロー

    プログラムを実行する際に確保するメモリ上のバッファ領域に対して、このサイズを超過するデータを書き込めるようになっているバグです。攻撃者は超過する部分に不正なプログラムを書いて実行します。

    フォーマットストリング

    プログラム中の、書式設定用の関数(フォーマットストリング)の引数の処理に関するセキュリティバグです。正しくは、引数として不正な値が入力された場合には、処理を止めてエラーメッセージを返さなければなりません。

    SQLインジェクション/コマンドインジェクション

    SQL(データベースを定義、操作する言語)文や、その他のコマンドが入力された場合でも、エラーにせずに処理してしまうバグです。攻撃者の観点からは、コマンドを注入(インジェクション)する形になるため、この名が付いています。攻撃の入り口はアプリケーション上の通常の入力欄で、ここに不正な値を入力することで攻撃を開始します。

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

    悪意のあるスクリプト(プログラム)をユーザのコンピュータに注入して、複数のWebサイトをまたいで(クロスサイト)行う攻撃や、その攻撃で利用される脆弱性を指します。

    まとめ

    ・ソースコード診断はソースコード(開発者が書いたプログラム)を解析し、セキュリティ上の問題点を発見する
    ・開発フェーズの初期から実施することで、リリース直前に脆弱性が発見されるようなスケジュールに影響するトラブルを防止する
    ・一般的なWebアプリケーション脆弱性診断では検出しにくい脆弱性も、ソースコード診断を実施することで開発段階から検出ができる

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る


    資料ダウンロードボタン
    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    お問い合わせボタン
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像
    セキュリティトピックス動画申し込みページリンクへのバナー画像