これは鋭い疑問だと思います。②という認識であっていますが、もう少し補足したいと思います。

狭義のOSコマンドインジェクション(CWE-78)は、ご指摘の②のとおり、複数コマンドを起動するための構文(/bin/sh のセミコロン等)を使って複数のコマンドを実行するものです。しかし、広義ではコード実行可能な脆弱性全体をOSコマンドインジェクションと呼ぶケースもあります。

CWE-78のページにもNoteとして以下が書かれています。

「用語

OSコマンドインジェクション」というフレーズは、人によって異なる意味を持ちます。ある人々にとっては、それは攻撃者がアプリケーションが呼び出すプログラムの引数にコマンドセパレータを注入するケースのみを指します。他の人々にとっては、攻撃者が自分で選んだOSコマンドを実行できるあらゆる種類の攻撃を指します。この用法には、アプリケーションが攻撃者が制御するプログラムを見つけて実行してしまう信頼されていない検索パスの脆弱性(CWE-426)を含むことがあります。

問題をさらに複雑にするのは、引数インジェクション(CWE-88)によって、コマンドラインに別のコマンドラインスイッチやオプションが挿入されるケースです。例えば、後続の引数をコマンドとして実行する目的を持つ「-exec」スイッチです(この「-exec」スイッチはUNIXの「find」コマンドに存在します)。しかしながら、この後者のケースでは、CWE-88がCWE-78と連鎖する中で主要な脆弱性と見なされる可能性があります。

https://cwe.mitre.org/data/definitions/78.html

CWE - CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') (4.15)

Common Weakness Enumeration (CWE) is a list of software weaknesses.

cwe.mitre.org

ただ、そうなると「OSコマンドインジェクション」という用語が果たして適切なのかという疑問に至ります。この用語には、OSコマンドを注入できるという意味しかないからです。なので、CWE-78のタイトルは、「Improper Neutralization of Special Elements used in an OS Command(OSコマンドで使用される特殊要素の不適切な無害化)」となっていて、副題的にOS Command Injectionとなっています。

1か月

利用規約プライバシーポリシーに同意の上ご利用ください

徳丸 浩さんの過去の回答
    Loading...