OSコマンドインジェクションとは?入力がサーバーの命令になる理由

画像変換用の入力から、本来触れないはずの機械の操作レバーへ別の経路が伸びるイメージ

30秒でわかる答え

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

OSコマンドインジェクションは、外からの入力を悪用し、サーバーなどで意図しない命令を実行させる攻撃です。ファイル名などの値として扱うはずの内容が、動かす処理を変える命令に入り込むことが問題になります。

OSコマンドインジェクションは、外からの入力を悪用し、サーバーなどで意図しない命令を実行させる攻撃です。ファイル名などの値として扱うはずの内容が、動かす処理を変える命令に入り込むことが問題になります。

画像を小さくする、動画を別の形式へ変える。こうした便利な機能の裏側では、別のプログラムが呼び出されることがあります。その呼び出しへ外部の入力をどう渡すかが、安全性に関わります。

OSコマンドインジェクションとは入力が命令として解釈される問題

OSは、コンピューターの基本的な動作や資源を管理するソフトウェアです。OSコマンドは、その環境でファイルを扱ったり、プログラムを起動したりするための命令です。

文字で書いた命令を読み取って処理につなぐプログラムを、シェルと呼びます。Webサービスが、裏側の作業のためにシェルを呼ぶ場合もあります。利用者が黒い画面へ直接入力するときだけの仕組みではありません。

ファイル名と作業の指示が混ざるとどうなる?

たとえば、画像を小さくするサービスを考えます。サーバーは変換用のプログラムを呼び、「このファイルを小さくする」という処理を行います。

このとき、受け取ったファイル名などを、そのまま一つの命令の文字列へつなぐ作り方では、特別な意味を持つ文字によって、別の処理が追加される場合があります。攻撃者はその不備を狙います。

ファイル名は、作業の対象を指定する情報です。それが「何の作業をするか」まで変更できる状態になってしまう、と考えると分かりやすいでしょう。

これは説明のための例です。画像変換や外部プログラムの利用が、それだけで危険という意味ではありません。IPAのOSコマンド・インジェクション解説は、シェルを起動できる機能の利用を避けることや、入力を適切に制限することを対策として挙げています。

ファイル変換から情報漏えいへつながる経路

画像を変える機能なのに、なぜ別の情報まで漏れるのでしょうか。手がかりは、その変換処理が、ほかに何へアクセスできるかです。

サーバーで動く処理には、読むことのできるファイル、接続できるデータベース、通信できる相手などの範囲があります。これが広いと、不正な命令を実行された際、変換機能の外へ影響が届く可能性があります。

変換する処理が、ほかの情報へ触れられると影響が広がる
1外から入力が届く

ファイルや設定の値を、変換機能が受け取る

2命令の扱いに不備

値が意図しないコマンドとして解釈される

3触れる範囲へ影響

その処理が使える権限や接続を通じ、別の情報にも届き得る

入力の扱いと権限の両方を見るための模式図です。すべての情報へアクセスできるという意味ではありません。

Gyazoの調査報告では何が確認された?

Helpfeelは、2026年10月21日に公表したGyazoの調査報告で、アップロードされた動画などの変換処理に、外部の入力がサーバーのコマンドとして解釈される脆弱性があったと説明しています。

同報告によると、第三者は変換処理用のサーバー上で命令を実行し、そこから到達できるデータベースへ接続して、大量の読み取りと外部への送信を行ったとされています。原因となった脆弱性は9月12日に修正済みで、10月21日は調査結果の公表日です。HelpfeelのGyazoに関する第三報

この報告は、外部ソフトウェア部品や委託先に起因する攻撃ではなく、自社開発・運用システムの脆弱性だったとも説明しています。「情報が漏れた」という結果が似ていても、すべてを同じ原因の事件として扱うことはできません。

ここで見るべき点は、変換処理の弱点と、その処理から触れられる情報の範囲がつながったことです。被害件数や対象情報の全体は、公式報告で個別に確認します。

必ずサーバー全体を操作されるわけではない

影響する範囲は、動いているプログラムの権限や接続先によって変わります。ファイルの読み取り・変更、サービスの停止、別のシステムへの不正な接続などが起こり得ますが、すべての攻撃で同じ被害になるとは限りません。

「管理者権限でなければ無害」とも言えません。一般の処理でも、秘密の設定や利用者の情報へアクセスできれば、重要な被害につながる可能性があります。

OSコマンドインジェクションとリモートコード実行の関係

OSコマンドインジェクションは、入力を通じて不正な命令を実行させる仕組みを表す言葉です。リモートコード実行(RCE)は、離れた場所から、対象で本来許されない処理を動かせることに注目しています。

OSコマンドインジェクションは、RCEへつながる経路の一つです。ただし、RCEにはメモリの扱いの不備など、別の原因で起きるものもあります。

言葉何に注目しているか
OSコマンドインジェクション外部の入力が、OSコマンドの不正実行につながる仕組み
SQLインジェクション外部の入力が、データベースへの命令を変える仕組み
リモートコード実行(RCE)外部から、対象で意図しない処理を動かせること
情報漏えい本来外へ出てはいけない情報が漏れること

原因や仕組み、できること、起きた被害を分けるための表です。SQLから別の処理へ影響が広がる場合などもあり、被害が必ずこの区分だけで収まるという意味ではありません。

PHPやNode.jsのニュースに「コード実行」とあっても、それだけでGyazoと同じ原因だとは判断できません。対象の機能と、どのような入力の扱いに問題があるかを、それぞれの報告で確かめます。

OSコマンドインジェクション対策は入力と実行を分ける

対策では、まず、その処理をOSコマンドの呼び出しなしで実現できないか考えます。ファイルの操作や変換を、利用する言語や専用の部品の機能で行える場合があります。

OWASPの防御ガイドも、OSコマンドを直接呼ぶことを避ける方法を優先しています。どうしても必要な場合には、命令と値を分ける仕組みと、許可する入力の検証を組み合わせます。

分けて渡しても、値の確認は必要

プログラムへ渡すファイル名や設定値などを、引数と呼びます。命令と引数を別々に渡すことは重要ですが、受け取った値が意図しない設定として解釈されれば、別の問題が残る場合があります。

そのため、「この文字があったら消す」という処理だけではなく、どのプログラムを動かし、どんな値を認めるかを決めます。必要な数字や形式に合わないものは、処理へ進めないようにします。

初心者が、知らない記号を削る独自対策を作る必要はありません。使う仕組みの公式な方法と、想定する入力の範囲を、開発担当者が合わせて確認します。

処理へ渡す権限も、必要な範囲に絞る

変換するためのプログラムに、関係のない保存情報や設定まで触る権限が必要かを見直します。不要な接続や権限を減らすことで、仮に不備があっても、影響を広げにくくできます。

ただし、権限を絞ることは脆弱性を直した証拠ではありません。入力の扱いを修正することと、被害が広がる範囲を狭めることを、両方進めます。

サービスの利用者なら、攻撃用の文字列を試すのではなく、公式の対象者案内や必要な対応を確認します。開発を依頼する立場なら、次の問いを担当者へ渡せます。

  • 外から受け取る値を、命令の文字列へそのままつないでいないか。
  • OSコマンドを呼ばない方法へ置き換えられないか。
  • その処理が触れる情報と権限を、必要な範囲へ絞っているか。

Webサーバーは、受け取った要求に応じて処理を行います。そのとき、渡されたデータが、勝手に新しい作業の指示へ変わらないようにする。これが、OSコマンドインジェクション対策の中心です。

内容の最終確認日: