2025年 Gartner®エンドポイント保護プラットフォーム部門のMagic Quadrant™で、5年連続リーダーの1社と評価されました。Gartner® Magic Quadrant™のリーダーレポートを読む
侵害に遭いましたか?ブログ
今すぐ始めるお問い合わせ
Header Navigation - JP
  • プラットフォーム
    プラットフォーム概要
    • Singularity Platform
      統合エンタープライズセキュリティへようこそ
    • セキュリティのためのAI
      AIを活用したセキュリティソリューションのリーダー
    • AIのセキュリティ確保
      安全なAIツール、アプリ、エージェントでAI導入を加速します。
    • Singularity XDRの仕組み
      Singularity XDRの違い
    • Singularity Marketplace
      XDRのパワーを引き出すワンクリック統合
    • 価格 & パッケージ
      比較とガイダンス一覧
    Data & AI
    • Purple AI
      生成AIでSecOpsを加速
    • Singularity Hyperautomation
      セキュリティプロセスの自動化を容易に
    • AI-SIEM
      自律型SOCのためのAI SIEM
    • AI Data Pipelines
      AI SIEMおよびデータ最適化のためのセキュリティデータパイプライン
    • Singularity Data Lake
      AIを活用した統合データレイク
    • Singularity Data Lake for Log Analytics
      オンプレミス、クラウド、ハイブリッド環境からのデータのシームレスな取り込み
    Endpoint Security
    • Singularity Endpoint
      自律型の防御、検知、対応
    • Singularity XDR
      ネイティブ&オープンな保護、検知、対応
    • Singularity RemoteOps Forensics
      フォレンジック調査の大規模オーケストレーション
    • Singularity Threat Intelligence
      包括的な脅威インテリジェンス
    • Singularity Vulnerability Management
      不正アセットの発見
    • Singularity Identity
      アイデンティティの脅威検知と対応
    Cloud Security
    • Singularity Cloud Security
      AIを活用したCNAPPで攻撃をブロック
    • Singularity Cloud Native Security
      クラウドと開発リソースのセキュリティ
    • Singularity Cloud Workload Security
      リアルタイムクラウドワークロード保護プラットフォーム
    • Singularity Cloud Data Security
      AIによる脅威検知
    • Singularity Cloud Security Posture Management
      クラウドの設定ミスの検出と修正
    AIの保護
    • Prompt Security
      企業全体でAIツールを保護
  • SentinelOneが選ばれる理由
    SentinelOneが選ばれる理由
    • SentinelOneが選ばれる理由
      次世代に向けて開発されたサイバーセキュリティ
    • 私たちのお客様
      世界中の一流企業から得られる信頼
    • 業界認知度
      アナリストにより認められた評価
    • SentinelOneについて
      自律型サイバーセキュリティのリーダー
    センチネルワンを比較
    • Arctic Wolf
    • Broadcom
    • CrowdStrike
    • Cybereason
    • Microsoft
    • Splunk
    • Palo Alto Networks
    • Sophos
    • Trend Micro
    • Trellix
    • Wiz
    業界別
    • エネルギー
    • 政府・公的機関
    • 金融
    • ヘルスケア
    • 高等教育機関
    • 義務教育機関
    • 製造
    • リテール
    • 地方公共団体
  • サービス
    マネージドサービス
    • マネージドサービス概要
      Wayfinder Threat Detection & Response
    • Threat Hunting
      世界水準の専門知識と脅威インテリジェンス。
    • Managed Detection & Response
      環境全体を対象とした 24/7/365 の専門MDR。
    • Incident Readiness & Response
      DFIR、侵害対応準備 & 侵害評価。
    サポート、導入、管理
    • テクニカルアカウント管理
      パーソナライズされたサービスを提供するカスタマーサクセス
    • SentinelOne GO
      初回研修と導入のアドバイスサービス
    • SentinelOne University
      ライブおよびオンデマンドのトレーニング
    • サービス概要
      シームレスなセキュリティ運用を実現する包括的ソリューション
    • SentinelOne コミュニティ
      コミュニティへのログイン
  • パートナー
    パートナー
    • MSSP パートナー
      SentinelOneと共に成功を手に入れる
    • Singularity Marketplace
      S1テクノロジーの持つ機能を拡張する
    • サイバーリスクパートナー
      対応とアドバイザリーの専門家集団に参加
    • テクノロジー提携
      統合されたエンタープライズ規模のソリューション
    • SentinelOne for AWS
      世界各地のAWSでホスティング
    • チャネルパートナー
      協業し適切なソリューションを届ける
    • SentinelOne for Google Cloud
      統合された自律型セキュリティにより、防御側にグローバル規模での優位性を提供します。
    プログラム概要→
  • リソース
    リソースセンター
    • お客様の事例
    • データシート
    • 電子本
    • ビデオ
    • ウェビナー
    • ホワイトペーパー
    • Events
    リソースを全て見る→
    ブログ
    • 特集
    • CISO/CIO向け
    • 最前線からお届け
    • アイデンティティ
    • クラウド
    • macOS
    • SentinelOne ブログ
    ブログ→
    テクノロジーリソース
    • SentinelLABS
    • ランサムウェア辞典
    • サイバーセキュリティ必須用語集
  • 会社概要
    SentinelOneについて
    • SentinelOneについて
      サイバーセキュリティ業界のリーダー
    • SentinelLABS
      現代の脅威ハンターのための脅威調査
    • 採用情報
      最新の求人
    • プレスリリース
      会社情報のお知らせ
    • サイバーセキュリティ ブログ
      最新のサイバーセキュリティの脅威やニュース
    • FAQ
      よくある質問と回答
    • データセット
      ライブデータプラットフォーム
    • S Foundation
      すべての人のためにより安全な未来を確保する
    • S Ventures
      次世代のセキュリティとデータへの投資
今すぐ始めるお問い合わせ
Background image for OSコマンドインジェクションとは?悪用手法、影響、対策
Cybersecurity 101/サイバーセキュリティ/OSコマンドインジェクション

OSコマンドインジェクションとは?悪用手法、影響、対策

OSコマンドインジェクション(CWE-78)は、攻撃者が未サニタイズ入力を介して任意のコマンドを実行できる脆弱性です。悪用手法、実際のCVE、対策について解説します。

CS-101_Cybersecurity.svg
目次
OSコマンドインジェクションとは?
OSコマンドインジェクションの仕組み
サブタイプ1:直接型(コマンドセパレータインジェクション)
サブタイプ2:間接型(完全コマンド制御)
攻撃の流れ
一般的なインジェクション演算子とメタキャラクタ
コマンドセパレータとインライン実行
OSコマンドインジェクションの原因
不十分な入力バリデーション
言語ネイティブAPIではなくシェル実行を使用
ブラックリストフィルタへの依存
環境変数の操作
最小権限の原則違反
OSコマンドインジェクションの影響とリスク
影響カテゴリ別の深刻度
CVSSスコアだけでは全体像は分からない
攻撃者によるOSコマンドインジェクションの悪用手法
発見と列挙
直接出力インジェクション
タイムディレイによるブラインドインジェクション
アウトオブバンド(OAST)による情報流出
認証バイパス連鎖
引数インジェクションバイパス
OSコマンドインジェクションの影響を受ける対象
最も脆弱なアプリケーションタイプ
最もリスクの高い業界
OSコマンドインジェクションの実例
Shellshock(CVE-2014-6271)、2014年
Equifax侵害(CVE-2017-5638)、2017年
Log4Shell(CVE-2021-44228)、2021年
Velvet Ant / CVE-2024-20399、2024年
Zyxelファイアウォール悪用(CVE-2023-28771)、2023年
OSコマンドインジェクションのタイムラインと歴史
OSコマンドインジェクションの検出方法
静的アプリケーションセキュリティテスト(SAST)
動的アプリケーションセキュリティテスト(DAST)
プロセスレベルでの振る舞い可視化
Webアプリケーションファイアウォール(WAF)ルール
手法の比較
OSコマンドインジェクションの予防方法
主な防御策:OSコマンドの完全排除
パラメータ化コマンドAPIの使用
ホワイトリストによる入力バリデーション
最小権限の適用(NIST AC-6)
サンドボックス化とコンテナ化の実装
PHP固有の制御
OSコマンドインジェクションの検出・防止ツール
アプリケーションセキュリティテストツール
実行時およびネットワーク保護
エンドポイントおよび振る舞い可視化
関連する脆弱性
関連するCVE
結論

関連記事

  • セキュア Web ゲートウェイ(SWG)とは?ネットワーク防御の解説
  • マルウェア統計
  • データ侵害統計
  • DDoS攻撃統計
著者: SentinelOne
最終更新: May 11, 2026

OSコマンドインジェクションとは?

OSコマンドインジェクションは、攻撃者が脆弱なアプリケーションを介してサーバ上で任意のオペレーティングシステムコマンドを実行できる脆弱性です。MITREによってCWE-78に分類されており、アプリケーションが外部から提供された入力を適切に特殊文字を無害化せずにOSコマンドの構築に使用する場合に発生します。その結果、基盤となるオペレーティングシステムへの直接的かつ不正なアクセスが可能となります。

この脆弱性クラスは、2014年のShellshock大規模悪用から、CISA勧告で記録された継続的なネットワークアプライアンスターゲティングまで、主要なサイバー攻撃と関連付けられています。CWE-78はMITRE Top 25にランクインしており、アウトオブバウンズ書き込み、 クロスサイトスクリプティング、 SQLインジェクションと並んでいます。

OWASP Top 10では、より広範なインジェクションカテゴリがCWE-77およびCWE-78の両方にマッピングされています。シェルレベルでこの脆弱性がどのように機能するかを理解することが、対策の第一歩です。

OSコマンドインジェクションの仕組み

OSコマンドインジェクションは、アプリケーションがユーザー制御の入力をデータと制御命令を分離せずにOSシェルコマンドへ直接渡すという根本的な欠陥を悪用します。

MITREはOSコマンドインジェクションの2つのサブタイプを特定しています。

サブタイプ1:直接型(コマンドセパレータインジェクション)

アプリケーションは単一の固定プログラムを実行することを意図し、外部入力は引数としてのみ使用されます。攻撃者はコマンドセパレータ(;、|、&&、||、または改行)を注入し、追加のコマンドを付加します。

DNSルックアップを行うWebアプリケーションを例に考えます:

Java String

攻撃者がexample.com; cat /etc/passwdをドメインパラメータとして入力すると、シェルはnslookup example.comとcat /etc/passwdの両方を実行し、サーバのパスワードファイルを返します。

サブタイプ2:間接型(完全コマンド制御)

アプリケーションが入力によって実行するプログラム全体を決定します。攻撃者はコマンド全体を制御でき、引数だけでなくコマンド自体も操作可能です:

Indirect Full Command Control

攻撃者がSCRIPTNAMEプロパティを制御できれば、システム上の任意の実行ファイルを指定できます。

攻撃の流れ

典型的なOSコマンドインジェクション攻撃は以下の手順で進行します:

  1. 攻撃者がフォームパラメータ、HTTPヘッダ、Cookie、URLクエリ文字列など、サーバ側コマンドに入力されるフィールドを特定します。
  2. 攻撃者がシェルメタキャラクタと悪意のあるコマンドを組み合わせてその入力に注入します。
  3. アプリケーションが無害化されていない入力をOSシェルに渡します。
  4. シェルがメタキャラクタを解釈し、アプリケーションプロセスと同じ権限で注入されたコマンドを実行します。アプリケーションがrootで動作している場合、攻撃者も同じ権限を得ます。

これらの各ステップは、シェルが特定の文字を制御命令として解釈することに依存しています。この動作を可能にする演算子はプラットフォームによって異なります。

一般的なインジェクション演算子とメタキャラクタ

OSコマンドインジェクションは、オペレーティングシステムがコマンド文字列を解釈する方法を変更するシェルメタキャラクタに依存します。攻撃者が利用できる演算子はターゲットプラットフォームによって異なります。

コマンドセパレータとインライン実行

演算子機能プラットフォーム
;コマンドを順次実行Unix
&2番目のコマンドをバックグラウンドで実行UnixおよびWindows
&&最初のコマンドが成功した場合のみ2番目を実行UnixおよびWindows
||最初のコマンドが失敗した場合のみ2番目を実行UnixおよびWindows
|最初のコマンドの出力を2番目にパイプUnixおよびWindows
` (バッククォート)インライン実行;出力が式に置換Unix
$()インライン実行;バッククォートと同等Unix
0x0a (改行)一部のシェルで新しいコマンドを開始Unix

ユーザー入力が元のコマンド内の引用符で囲まれた文字列内に入る場合、攻撃者はまず引用符("または')を閉じてからセパレータを有効にする必要があります。URLエンコーディング、二重エンコーディング、Unicode正規化などのエンコーディング手法も、これらの文字をリテラルでチェックするフィルタを回避できます。これらの演算子がシェルに到達するのは、ユーザーデータとコマンド構文を分離できていない特定のコーディングパターンが原因です。

OSコマンドインジェクションの原因

OSコマンドインジェクションは、ユーザー入力が十分な制御なしにシステムシェルに到達するコーディング手法に起因します。主な原因は5つあります。

不十分な入力バリデーション

これが最も直接的な原因です。 OWASPガイドによれば、フォーム、Cookie、HTTPヘッダなどの安全でないユーザー入力が無害化されずにシステムシェルに渡されると、コマンドインジェクション攻撃が可能になります。ユーザーが期待通りの値を入力すると信頼している場合、バリデーションを完全に省略することがあります。

言語ネイティブAPIではなくシェル実行を使用

system()、exec()、shell_exec()、os.system()の呼び出しは、OSシェルを仲介として呼び出します。シェル呼び出しごとにインジェクションの表面が生まれます。 OWASPチートシートは主要言語における危険なAPIを特定しています:

言語危険なAPI
JavaRuntime.exec()
C / C++system(), exec(), ShellExecute()
Pythonexec(), eval(), os.system(), os.popen(), subprocess.Popen(), subprocess.call()
PHPsystem(), shell_exec(), exec(), proc_open(), eval(), passthru()
Node.jschild_process.exec(), execSync(), spawn()

ブラックリストフィルタへの依存

許可されるものを定義するのではなく、特定の危険な文字をブロックしようとする場合があります。このアプローチは CWE-184(不完全なブラックリスト)として分類され、常に失敗します。OWASPはPHPのescapeshellcmd()が追加コマンドの実行を防ぐものの、引数インジェクションは許可することを明記しています。攻撃者はコマンドセパレータを使わずとも--output-document=のようなフラグを注入してファイル書き込みを実現できます。

環境変数の操作

アプリケーションが実行ファイルの絶対パスを指定せず、環境変数をクリアしない場合、攻撃者は$PATHを悪意のあるバイナリにリダイレクトできます。アプリケーションがsetuid root権限で動作している場合、攻撃者のバイナリがroot権限で実行されます。

最小権限の原則違反

アプリケーションが昇格したシステム権限で動作していると、インジェクションの脆弱性が拡大します。コマンドインジェクションがwww-dataユーザーで動作するアプリケーションに対して行われた場合、攻撃者はそのユーザーの権限に制限されます。同じインジェクションがrootレベルのプロセスに対して行われた場合、システム全体の制御が可能となります。これらの原因が未対策の場合、影響は脆弱なアプリケーションを超えて広がります。

OSコマンドインジェクションの影響とリスク

OSコマンドインジェクションは、脆弱性分類システムで常に最上位のスコアを記録します。 OWASP Top 10:2021は、インジェクションを主要かつ持続的なリスクカテゴリとして特定しています。機能的な影響は直接的であり、攻撃者は侵害されたアプリケーションプロセスと同じ権限でサーバ上で任意のコマンドを実行できるようになります。

影響カテゴリ別の深刻度

影響証拠
リモートコード実行CVE-2024-3400
システム全体の侵害SANSレポート:「システム全体の侵害、データ流出、またはネットワーク侵入」
ラテラルムーブメントCISA勧告:パストラバーサルと組み合わせたOSコマンドインジェクションによる多段階侵入
ボットネット勧誘Mirai亜種
ランサムウェア配信CISA勧告; CISA勧告

CVSSスコアだけでは全体像は分からない

CVE-2024-20399(Cisco NX-OS)は比較的控えめなCVSSスコアで、ローカルアクセスと管理者権限が必要です。しかし、CISAは中国系Velvet Antキャンペーンによる悪用を確認後、Known Exploited Vulnerabilitiesカタログに追加しました。

この事例は、CVSSスコアだけでは運用上のリスクを反映できないことを示しています。KEVカタログ掲載、国家レベルの悪用、デバイスのネットワーク上の位置は、ベーススコアをはるかに上回る独立したリスク要因です。攻撃者が使用する具体的な手法を理解することで、なぜ悪用が頻発するのかが説明できます。

攻撃者によるOSコマンドインジェクションの悪用手法

攻撃者は、発見からブラインドインジェクション、脆弱性連鎖まで、OSコマンドインジェクションを発見・確認・悪用するための一連の手法を用います。

発見と列挙

攻撃者は、サーバ側システムコマンドと連携する入力フィールドを特定し、すべてのパラメータ、HTTPヘッダ(User-Agent、Referer)、Cookie、URLクエリ文字列、構造化データ入力(JSON、XML、SOAP)をテストします。

直接出力インジェクション

攻撃者はコマンドセパレータの後に既知の出力コマンドを注入します:

Direct Output Injection

レスポンスに実行中プロセスのユーザー名が含まれていれば、インジェクションが確認され、攻撃者はさらに破壊的なコマンドを実行できます。

タイムディレイによるブラインドインジェクション

コマンド出力がHTTPレスポンスに現れない場合、攻撃者はタイムディレイコマンドを注入し、応答遅延を測定します。Linuxターゲットに& sleep 10 &を注入すると、コマンドが実行された場合に測定可能な遅延が発生します。

アウトオブバンド(OAST)による情報流出

攻撃者は、自身が管理するインフラへのDNSコールバックを引き起こすコマンドを注入します:

Out-of-Band (OAST) Exfiltration

攻撃者のサーバにDNSクエリが到達すれば、出力やタイミング差が観測できなくてもコード実行が確認できます。 PortSwigger OASTは、Burp Collaboratorが従来特定できなかったブラインドOSコマンドインジェクション脆弱性の発見を可能にしたと指摘しています。

認証バイパス連鎖

CVE-2024-21887(Ivanti Connect Secure)は認証済み管理者アクセスが必要ですが、攻撃者はCVE-2023-46805(認証バイパス)と組み合わせてその要件を完全に排除しました。CISA勧告によれば、中国の国家支援攻撃者はこの連鎖パターンをIvanti、Cisco、その他のネットワークアプライアンスで体系的に使用しました。

引数インジェクションバイパス

防御側がコマンドセパレータ(;, |, &&)をフィルタする場合、攻撃者は 引数インジェクション(CWE-88)に切り替えます。-や--で始まるフラグやオプションを注入することで、新たなコマンドを導入せずに既存プログラムの動作を操作します。OWASPは、PHPのescapeshellcmd()がコマンドセパレータをブロックしてもこの攻撃経路を許すことを文書化しています。これらの手法の幅広さにより、影響は単一のアプリケーションタイプや業界に限定されません。

OSコマンドインジェクションの影響を受ける対象

OSコマンドインジェクションは、アプリケーションコードがユーザー入力をOSシェルに渡すすべてのシステムに影響します。特定のアプリケーションタイプや業界は、確認された悪用データに基づき、特に高いリスクを持ちます。

最も脆弱なアプリケーションタイプ

  • ネットワークアプライアンスおよびSSL-VPNデバイス:このカテゴリは CISA KEVカタログにおけるCWE-78の確認済み悪用エントリの最も高い集中を示します。CVE-2023-44221(SonicWall SMA100)、CVE-2024-8190(Ivanti Cloud Services Appliance)、CVE-2024-40891(Zyxel CPE)、CVE-2023-28771(Zyxel Firewall/VPN)はいずれも、管理インターフェースが入力をOSレベルのコマンド実行に直接渡すものです。
  • IoTおよび組み込みファームウェア:QNAP NASデバイス(CVE-2023-47218)、TP-Linkルータ(CVE-2023-1389)、WavlinkルータはいずれもCWE-78脆弱性が確認されています。 Mirai亜種は、複数のルータおよびIoTファームウェアプラットフォームでOSコマンドインジェクションCVEを体系的に武器化し、ボットネット勧誘に利用しました。
  • サーバ側システムコールを持つWebアプリケーション: OWASP Top 10の標準シナリオは、JavaアプリケーションがRuntime.getRuntime().exec()で文字列連結によりOSコマンドを構築するケースを説明しています。
  • エンタープライズ管理インターフェース: CISA勧告は、Ivanti Cloud Service Application管理インターフェースに対する連鎖型コマンドインジェクションの悪用を記録しています。

最もリスクの高い業界

  • 重要インフラおよび通信:CISA勧告は、ネットワークアプライアンスを標的としたコマンドインジェクションの国家支援型悪用を記録しています。
  • 連邦政府:CISA KEVエントリは「連邦エンタープライズに重大なリスクをもたらす」と明記しています。連邦機関は KEVタイムラインに従い、KEV掲載コマンドインジェクションCVEへの対応が求められます。

これらのカテゴリにおける悪用データは、OSコマンドインジェクションがコードレベルの欠陥から組織規模の被害へと直結することを示しています。

OSコマンドインジェクションの実例

確認されたOSコマンドインジェクション事例は、オープンソースソフトウェアの大規模悪用から、ネットワークインフラを標的とした国家レベルのキャンペーンまで多岐にわたります。

Shellshock(CVE-2014-6271)、2014年

GNU Bashバージョン4.3まで、環境変数内の関数定義後の文字列を処理することで、 細工された値によるシェルコマンド注入が可能でした。この脆弱性はCGIスクリプト、DHCPクライアント、SSH ForceCommand構成を通じて悪用可能であり、単一のOSコマンドインジェクション脆弱性がインターネット規模の攻撃面を持つことを示しました。

Equifax侵害(CVE-2017-5638)、2017年

Apache Struts 2はContent-Typeヘッダ経由でOGNL式を注入可能であり、任意コード実行を許しました。 下院報告書によれば、Apacheは2017年3月7日にパッチを公開し、3日後の3月10日に攻撃者がEquifaxネットワークで脆弱性を初めて悪用しました。この侵害は7億ドルの和解と経営陣の辞任につながりました。

Log4Shell(CVE-2021-44228)、2021年

Apache Log4j2のJNDIメッセージルックアップ機能により、細工されたログメッセージ経由で認証不要のリモートコード実行が可能となり、 CVSS 10.0を記録しました。 CISA勧告によれば、APT攻撃者は未パッチのVMware HorizonサーバでLog4Shellを悪用し、ラテラルムーブメントと機密データの流出を実現しました。 LockBit関係者や 北朝鮮グループもこの脆弱性を悪用しました。

Velvet Ant / CVE-2024-20399、2024年

Sygniaレポートは、中国系スパイグループがCisco NX-OS CLIコマンドインジェクション脆弱性を悪用した事例を記載しています。比較的低いCVSSスコアにもかかわらず、グループはNexusスイッチの基盤Linux OS上で悪意のあるコードを実行しました。CISAはこれをKEVカタログに追加し、運用リスクがCVSS評価を上回ることを強調しました。

Zyxelファイアウォール悪用(CVE-2023-28771)、2023年

Zyxelファイアウォールファームウェアの不適切なエラーメッセージ処理により、認証不要のリモートOSコマンド実行が可能となり、 CVSS 9.8を記録しました。Cybersecurity Diveは、 事前活動なしで1日での積極的な標的化を報告しています。

これらの事例は、Webアプリケーションの黎明期から続く広範なパターンの一部です。

OSコマンドインジェクションのタイムラインと歴史

  1. 1988年~1998年:CGI時代。初期Webサーバは無害化されていないユーザー入力でシェルスクリプトを呼び出し、最初のOSコマンドインジェクション攻撃面を生み出しました。 MIT Lincoln LaboratoryのDARPA侵入検知評価データセットは、この時期のCGIベース攻撃やsendmail悪用を記録しています。
  2. 1999年:正式分類。CVE-1999-0067は、パイプ(|)メタキャラクタを無害化せずに電話帳プログラムを呼び出すCGIプログラムという、最初期のコマンドインジェクション事例を記録しました。MITREのCWE-78が脆弱性クラスを定義しました。
  3. 2014年:Shellshock。CVE-2014-6271は、インターネット規模の大規模悪用を達成した最初のOSコマンドインジェクション脆弱性となりました。
  4. 2017年:エンタープライズへの影響。CVE-2017-5638によるEquifax侵害は、アプリケーションフレームワークに組み込まれたコマンド実行プリミティブが、エンタープライズ規模で直接的なOSコマンドインジェクションと同等の影響を持つことを示しました。
  5. 2021年:インジェクションカテゴリ統合。OWASP Top 10:2021はすべてのインジェクションタイプをA03 Injectionカテゴリに統合しました。Log4Shell(CVE-2021-44228)は、このパターンを広範なロギングライブラリに拡張しました。
  6. 2023年~2026年:ネットワークアプライアンスターゲティング。 攻撃面はネットワーク境界アプライアンスへと大きくシフトしました。CISA勧告によれば、中国の国家支援攻撃者は2021年から2025年にかけてネットワークデバイスでコマンドインジェクションを体系的に悪用しました。OWASP Top 10:2025はCWE-88(引数インジェクション)を明示的にマッピングされた弱点として追加しました。

悪用が継続しているため、早期発見はアプリケーションライフサイクル全体で優先事項となっています。

OSコマンドインジェクションの検出方法

OSコマンドインジェクションの発見には、事前テストと実行時可視性を組み合わせた多層的アプローチが必要です。

静的アプリケーションセキュリティテスト(SAST)

 OWASP Top 10によれば、ソースコードレビューがインジェクション脆弱性発見の最良手法です。SASTツールは、ユーザー制御入力を受け取るsystem()、exec()、popen()、shell_exec()などの危険なAPI呼び出しを検出します。フラグ対象の主なパターンは、文字列連結でOSコマンド実行関数に入力するケースや、PHPでescapeshellcmd()を使用し、より安全なescapeshellarg()を使っていない場合です。

SASTはCI/CDパイプラインで実行し、デプロイ前にインジェクション脆弱性を検出すべきです。主な制限は、実行時のみ発現する脆弱性は検出できない点です。

動的アプリケーションセキュリティテスト(DAST)

DASTは、実際に悪用可能なものを実行中アプリケーションでテストします。 Web Security Academyは3つのDAST手法を記載しています:

  1. 直接出力インジェクション:& echo uniquestring &を注入し、レスポンスに文字列が現れるか確認
  2. ブラインド時間ベースインジェクション:& sleep 10 &を注入し、応答遅延を測定
  3. アウトオブバンド(OAST)インジェクション:DNSコールバックコマンドを注入し、管理サーバへの外部リクエストを監視。ブラインドインジェクションで最も信頼性の高い手法です。

プロセスレベルでの振る舞い可視化

ホストレベルでは、 NIST SP 800-53(情報システム監視)が振る舞い異常識別の枠組みを定めています。SOCは以下の指標を監視すべきです:

  • Webサーバプロセス(apache、nginx、tomcat)がシェルプロセス(bash、sh、cmd.exe、powershell)を生成
  • Webアプリケーションプロセスコンテキストからの予期しないexecve()やsystem()呼び出し
  • アプリケーションプロセスによる外部IPへのアウトバウンドネットワーク接続

Webアプリケーションファイアウォール(WAF)ルール

OWASP ModSecurity Core Rule Setは、HTTP入力内のシェルメタキャラクタ(;, |, &, backticks, $())や一般的なOSコマンド(whoami、cat /etc/passwd、nslookup)を検出します。WAFルールはエンコーディングや大文字小文字の変化で回避可能なため、完全な制御ではなく一つのシグナルソースとして扱うべきです。

手法の比較

手法タイミングブラインドインジェクション検出主な制限
SASTデプロイ前N/A(静的)実行時のみの問題は検出不可
DASTデプロイ前/後可(OAST経由)複雑なフローは見逃す可能性
振る舞い可視化本番環境可ベースライン調整が必要
WAF本番環境部分的回避可能、根本原因は解決しない

脆弱性の発見だけでは不十分です。予防にはコードとアーキテクチャの根本原因の排除が必要です。

OSコマンドインジェクションの予防方法

予防は、ユーザー制御入力による直接的なOSシェル呼び出しの排除に重点を置きます。シェル呼び出しを除去できない場合は、多層的な制御で攻撃面を縮小します。

主な防御策:OSコマンドの完全排除

 PortSwiggerによれば、最も強力な予防策はアプリケーション層コードからOSコマンド呼び出しを一切行わないことです。ほとんどの場合、より安全なプラットフォームネイティブAPIで必要な機能を実装できます。メール送信にはSMTPライブラリ、DNS解決にはDNSライブラリを使用し、シェルを介在させないでください。

パラメータ化コマンドAPIの使用

OSコマンド実行が不可避な場合は、データとコマンドの分離を強制する構造化メカニズムを使用してください。Pythonでは、subprocess.run()のリスト形式を使用します:

Parameterized Command APIs

リスト形式は、引数内のメタキャラクタをシェルが解釈するのを防ぎます。

ホワイトリストによる入力バリデーション

 OWASPチートシートは、ホワイトリストベースのバリデーションを第2防御層として推奨しています。許可される文字と最大文字列長を厳格な正規表現で定義してください。OWASPは^[a-z0-9]{3,10}$の例を示し、すべてのメタキャラクタと空白を除外しています。

PortSwiggerは明確に警告しています:シェルメタキャラクタのエスケープによる入力無害化は絶対に試みないでください。この手法はエラーが発生しやすく、熟練した攻撃者に回避されます。ホワイトリスト方式が常に推奨されます。

最小権限の適用(NIST AC-6)

NIST SP 800-53は最小権限の原則の適用を義務付けています。コマンドインジェクション防御のためには:

  • Webアプリケーションプロセスを専用の非特権サービスアカウントで実行
  • サービスアカウントの権限を必要なファイルシステムパスのみに制限
  • Webアプリケーションサービスアカウントへのシェルアクセス(/bin/sh, /bin/bash)を拒否
  • Linuxではseccompプロファイルで利用可能なシステムコールを制限

サンドボックス化とコンテナ化の実装

読み取り専用ルートファイルシステム、Linuxネームスペースとcgroups、強制アクセス制御プロファイル(AppArmorまたはSELinux)によるコンテナ分離は、インジェクション発生時の被害範囲を縮小します。これらの制御はNIST CM-7の最小機能原則に合致します。

PHP固有の制御

PHPでシェルコマンドを呼び出す必要がある場合は、escapeshellcmd()ではなくescapeshellarg()を使用してください。これにより入力が単一パラメータに限定され、引数インジェクションを防止します。

これらのコーディングおよびアーキテクチャ制御が基盤となりますが、ツールによる可視化が大規模運用での強制に不可欠です。

OSコマンドインジェクションの検出・防止ツール

効果的な防御には、アプリケーションセキュリティテスト、実行時保護、エンドポイント可視化をカバーするツールが必要です。OSコマンドインジェクションを対象とした CISAおよびFBI合同警告は、コマンドと引数を分離する組み込みライブラリ関数、入力パラメータ化、すべてのユーザー入力のバリデーションを推奨しています。

アプリケーションセキュリティテストツール

  • SASTツールは、ユーザー入力を受け取る危険なAPI呼び出しをソースコードから検出します。CI/CDパイプラインに統合し、デプロイ前にインジェクション脆弱性を検出できます。
  • DASTツール(例:Burp Suite)は、実行中アプリケーションの悪用可能なインジェクションポイントをテストします。Burp SuiteのOAST機能は、出力が見えないブラインドコマンドインジェクションの検出に特に有効です。

実行時およびネットワーク保護

  • WAFソリューションは、OWASP ModSecurity Core Rule Setを用いてシェルメタキャラクタや一般的なインジェクションペイロードのネットワーク層フィルタリングを提供します。これらは多層防御の一部ですが、根本原因の修正に代わるものではありません。
  • RASPソリューションは、実行時にアプリケーションをインストゥルメントし、アプリケーションコンテキスト全体でインジェクション試行をブロックできます。レガシーアプリケーションの補完的制御として有効です。

エンドポイントおよび振る舞い可視化

エンドポイントセキュリティプラットフォームは、プロセス生成、親子関係、コマンドライン引数を監視し、ポストエクスプロイト活動の検出に不可欠です。Webサーバプロセスが予期しないシェルを生成した場合、カーネルレベルでの振る舞い分析が最後の防御線となります。

AIを活用したサイバーセキュリティの実現

リアルタイムの検知、マシンスピードのレスポンス、デジタル環境全体の可視化により、セキュリティ態勢を強化します。

デモを見る

関連する脆弱性

OSコマンドインジェクションは、ユーザーデータと実行命令の分離失敗という共通の根本原因を持つインジェクション脆弱性ファミリーに属します。いくつかの関連脆弱性クラスはCWE-78と連鎖したり、重複したりします。

  • SQLインジェクション(CWE-89):OSシェルではなくSQLデータベースエンジンを標的とします。SQLインジェクションは、xp_cmdshellなどのデータベース機能を介してOSコマンドインジェクションに連鎖可能です。
  • コードインジェクション(CWE-94):アプリケーション自身の言語ランタイム(PHP eval()、Python exec())を標的とします。コードインジェクションは、注入コードがsystem()やexec()を呼び出すことでOSコマンドインジェクションに発展することがあります。
  • 引数インジェクション(CWE-88):CWE-78の派生型です。セパレータによる新規コマンド注入ではなく、-や--で始まるフラグで既存プログラムの引数を操作します。コマンドセパレータフィルタがあっても成功します。
  • サーバ側テンプレートインジェクション(CWE-1336):テンプレートエンジン(Jinja2、FreeMarker)を標的とします。SSTIは、テンプレートエンジンが基盤言語ランタイムにアクセスできるため、しばしばOSコマンドインジェクションに発展します。
  • 式言語インジェクション(CWE-917):Webフレームワークの式言語パーサ(OGNL、Spring SpEL)を標的とします。Log4Shell(CVE-2021-44228)が代表例で、しばしばOSコマンド実行に連鎖します。
脆弱性CWE対象インタプリタOS実行への直接経路
OSコマンドインジェクションCWE-78OSシェル直接
SQLインジェクションCWE-89SQLエンジン間接(xp_cmdshell経由)
コードインジェクションCWE-94アプリケーションランタイム間接(システムコール経由)
引数インジェクションCWE-88OSシェル引数パーサ直接(呼び出しコマンドを操作)
SSTICWE-1336テンプレートエンジンしばしばOSコマンドに発展
ELインジェクションCWE-917式言語パーサしばしばOSコマンドに発展

上記の表は、複数の脆弱性クラスがOSレベル実行への直接または間接経路を提供することを示しており、すべてのインジェクションタイプに対する多層防御が不可欠であることを示しています。

関連するCVE

CVE ID説明深刻度影響製品年

CVE-2026-33718

git diff APIエンドポイントのコマンドインジェクションによりエージェント実行制御をバイパスクリティカルOpenHands AI Platform2026

CVE-2026-25857

WAN診断機能のcurlパラメータ経由のOSコマンドインジェクションクリティカルTenda G300-F Router2026

CVE-2026-0631

VPNモジュールのOSコマンドインジェクション;認証済み隣接攻撃者高TP-Link Archer BE2302026

CVE-2025-64127

ICS通信デバイスの認証不要OSコマンドインジェクションクリティカルZenitel Devices2025

CVE-2025-34041

EDR管理プラットフォームの認証不要OSコマンドインジェクション;積極的に悪用クリティカルSangfor EDR2025

CVE-2025-11730

DDNS CLI構成の認証後コマンドインジェクション高Zyxel ATP/USG FLEX Firewalls2025

CVE-2025-65791

image.phpのexec()に渡される未無害化入力によるコマンドインジェクションクリティカルZoneMinder v1.36.342025

CVE-2025-54123

ミドルウェアAPIエンドポイントの認証不要RCE(コマンドインジェクション)クリティカルHoverfly API Simulator2025

CVE-2024-20399

NexusスイッチのCLIコマンドインジェクション;Velvet Antキャンペーンによる悪用中Cisco NX-OS2024

CVE-2024-10443

Task Managerコンポーネントの認証不要OSコマンドインジェクションクリティカルSynology BeePhotos/Photos2024

CVE-2024-29972

remote_help-cgiエンドポイントの認証不要コマンドインジェクションクリティカルZyxel NAS326/NAS5422024

CVE-2024-40890

CGIプログラムのHTTP POST経由の認証後コマンドインジェクション;CISA KEV高Zyxel VMG1312-B10A2024

CVE-2024-12828

CGIリクエストコマンドインジェクションによるrootレベルコード実行クリティカルWebmin2024

CVE-2023-20273

Web UI経由のrootレベルコマンドインジェクション;積極的に悪用;CISA KEVクリティカルCisco IOS XE2023

CVE-2023-2868

悪意のある.tarファイル名によるコマンドインジェクション;積極的に悪用;CISA KEVクリティカルBarracuda ESG2023

CVE-2023-27992

HTTPリクエスト経由の認証不要OSコマンドインジェクション;CISA KEVクリティカルZyxel NAS326/540/5422023

CVE-2023-35138

show_zysync_server_contents関数の認証不要コマンドインジェクションクリティカルZyxel NAS326/NAS5422023

CVE-2023-51385

ユーザー名またはホスト名のシェルメタキャラクタによるOSコマンドインジェクション中OpenBSD OpenSSH2023

CVE-2022-44877

ログインインターフェースの認証不要シェルメタキャラクタインジェクション;CISA KEVクリティカルControl Web Panel 72022

CVE-2022-2068

c_rehashスクリプトの悪意のある証明書ファイル名によるコマンドインジェクションクリティカルOpenSSL2022

CVE-2021-4039

Web管理インターフェースの認証不要OSコマンドインジェクションクリティカルZyxel NWA1100-NH2021

CVE-2020-8515

ルータファームウェアの認証不要コマンドインジェクション;CISA KEVクリティカルDrayTek Vigor Routers2020

CVE-2020-9054

weblogin.cgi経由の認証不要コマンドインジェクション;root権限昇格;CISA KEVクリティカルZyxel NAS3262020

CVE-2020-10987

goform/setUsbUnloadのdeviceNameパラメータによるコマンドインジェクション;CISA KEVクリティカルTenda AC15 Router2020

結論

OSコマンドインジェクションは、アプリケーションが安全でない入力をシェルインタプリタに渡すことで、攻撃者に直接OSレベルの実行を許します。OSコマンド呼び出しを可能な限り排除し、必要な場合はパラメータ化APIを使用し、ホワイトリストバリデーションを徹底することで、リスクを低減できます。

予防に失敗した場合でも、エンドポイントでの振る舞い可視化により、シェル生成や外部接続などの悪用兆候を迅速に検出できます。

FAQ

OSコマンドインジェクション(CWE-78)は、アプリケーションが未サニタイズの外部入力を使用してOSコマンドを構築する際に発生する脆弱性です。攻撃者はシェルメタ文字(;, |, &&)を挿入し、OSシェルがアプリケーションの権限で悪意のあるコマンドを実行できるようにします。 

根本原因は、入力をシェルインタプリタに渡す前にユーザーデータとコマンド構文を分離しないことです。

はい。OSコマンドインジェクションは、OWASP Top 10:2021およびOWASP Top 10:2025の両方でInjectionカテゴリに分類されています。CWE-77およびCWE-78の両方が明示的に含まれています。 

2025年版ではCWE-88(引数インジェクション)も追加されています。

はい。CISA KEVカタログにおける大半のCWE-78脆弱性は認証不要でリモートから悪用可能です。CVE-2014-6271(Shellshock)、CVE-2023-28771(Zyxel)、 CVE-2024-3400はいずれも認証不要のリモート悪用を許します。

ファイアウォール、VPNコンセントレーター、エンタープライズスイッチなどのネットワークアプライアンスは、確認されたCWE-78悪用事例が最も多く発生しています。NASデバイスやルーターを含むIoTおよび組み込みファームウェアは、ボットネットへの勧誘を目的として体系的に標的とされています。

サーバー側のシステムコマンドを呼び出すWebアプリケーションやエンタープライズ管理インターフェースも、リスクが高いとされています。

攻撃者は、入力フィールド、HTTPヘッダー、Cookie、URLパラメータにシェルメタ文字と診断用コマンドを挿入して調査します。ブラインドインジェクションの場合、sleep 10などの時間遅延や、攻撃者管理のサーバーへのDNSコールバックを利用します。 

スキャナーやファジングツールは、すべての入力ベクトルを体系的にテストします。

主な指標として、Webサーバープロセス(apache, nginx, tomcat)が予期しないシェルプロセス(bash, sh, cmd.exe)を生成することが挙げられます。他にも、アプリケーションプロセスから不審なIPへの外部ネットワーク接続や、Webアプリケーションプロセスコンテキストからの異常なexecve()やsystem()呼び出しが兆候となります。

OSコマンドインジェクションは、攻撃者に直接OSレベルのアクセスを与えるため、非常に深刻な脆弱性クラスです。つまり、ホストOSがサポートする任意のコマンドを実行可能となります。 

CWE-78はMITREのソフトウェア脆弱性カテゴリの上位に位置し、確認されたCVEはCVSSスコア9.0以上となることが一般的です。

はい。SANSによるCVE-2024-40891の報告では、「完全なシステム侵害、データ流出、またはネットワーク侵入」と明確に記載されています。侵害されたアプリケーションが昇格された権限で実行されている場合、攻撃者は同等のOSレベルのアクセス権を取得します。

確認されている影響には、ランサムウェアの展開、ラテラルムーブメント、持続的なバックドアの設置が含まれます。

SASTツールはソースコード内の危険なAPI呼び出しを確実に検出しますが、実行時のみ発生する脆弱性は見逃します。DASTツールは悪用可能なインジェクションポイントを特定し、特にOAST技術を用いたブラインドインジェクションの検出に有効です。 

WAFルールは既知のパターンを検出しますが、エンコーディングによる回避が可能です。プロセスレベルでの挙動可視化が最も信頼性の高い実行時識別を提供します。すべてのバリアントを検出できる単一のツールは存在しないため、多層的な対策が必要です。

重要インフラおよび通信業界が最も高いリスクに直面しています。CISAの勧告文書では、中国の国家支援による通信・ルーターインフラへの悪用が報告されています。 

連邦政府機関にはKEV対応の義務的な期限があります。インターネットに公開されたネットワーク機器や組み込みファームウェアを使用するすべての業界が潜在的な標的となります。

詳しく見る サイバーセキュリティ

インサイダー脅威統計サイバーセキュリティ

インサイダー脅威統計

2026年の最新インサイダー脅威統計に関するトレンドや最新情報などのインサイトを取得できます。組織が現在直面している脅威、被害を受けた事例、そして保護の方法についてご確認ください。

続きを読む
インフォスティーラーとは?認証情報窃取型マルウェアの仕組みサイバーセキュリティ

インフォスティーラーとは?認証情報窃取型マルウェアの仕組み

インフォスティーラーは、感染したシステムからパスワード、セッションCookie、ブラウザデータを静かに抽出します。窃取された認証情報は、ランサムウェア、アカウント乗っ取り、不正行為の原動力となります。

続きを読む
サイバー保険統計サイバーセキュリティ

サイバー保険統計

2026年のサイバー保険統計は、市場の急速な成長を示しています。請求パターンの変化、引受基準の厳格化、大企業と中小企業間の補償ギャップの拡大が見られます。

続きを読む
アプリケーションセキュリティとは?完全ガイドサイバーセキュリティ

アプリケーションセキュリティとは?完全ガイド

アプリケーションセキュリティは、SAST、DAST、SCA、ランタイム防御などのツールを用いてSDLC全体でソフトウェアを保護します。AppSecプログラムの構築方法を学びましょう。

続きを読む
最先端のサイバーセキュリティ・プラットフォームを体験しよう

最先端のサイバーセキュリティ・プラットフォームを体験しよう

世界で最もインテリジェントで自律的なサイバーセキュリティ・プラットフォームが、お客様の組織を現在から将来にわたってどのように保護できるかをご覧ください。

デモを見る
  • スタート
  • デモのお申し込み
  • 製品ツアー
  • SentinelOneが選ばれる理由
  • 価格 & パッケージ
  • FAQ
  • お問い合わせ
  • お問い合わせ
  • サポート
  • SentinelOne Status
  • 言語
  • プラットフォーム
  • Singularity Platform
  • Singularity Endpoint
  • Singularity Cloud
  • Singularity AI-SIEM
  • Singularity Identity
  • Singularity Marketplace
  • Purple AI
  • サービス
  • Wayfinder TDR
  • SentinelOne GO
  • テクニカルアカウント管理
  • サポートサービス
  • 業界別
  • エネルギー
  • 政府・公的機関
  • 金融
  • ヘルスケア
  • 高等教育機関
  • 義務教育機関
  • 製造
  • リテール
  • 地方公共団体
  • Cybersecurity for SMB
  • リソース
  • ブログ
  • Labs
  • お客様の事例
  • 電子本
  • 製品ツアー
  • Events
  • Cybersecurity 101
  • 電子本
  • ウェビナー
  • ホワイトペーパー
  • プレスリリース
  • ニュース
  • ランサムウェア辞典
  • 会社概要
  • Sentineloneとは
  • 私たちのお客様
  • 採用情報
  • パートナー
  • 法務とコンプライアンス
  • セキュリティとコンプライアンス
  • S Foundation
  • S Ventures

©2026 SentinelOne, All Rights Reserved.

プライバシーポリシー 利用規約

日本語