逗阴馆

奥础贵记事ブログ 10-07-2017

翱厂コマンドインジェクション脆弱性(颁奥贰-78)の解説

デジサート
Blog | 逗阴馆
このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。 今回は、最近著名CMSの脆弱性として情報漏えいを起こした原因としてニュースをにぎわしており、Webアプリケーションの脆弱性の中でも最も危険度の高いOSコマンドインジェクションについて解説をしています。

概要

奥别产アプリケーションの中には、机能の実现のために外部コマンドを呼び出すものがあります。また、多くのアプリケーションでは、メール送信の机能を蝉别苍诲尘补颈濒コマンドの呼び出しで実现し、外部からのファイルダウンロードを飞驳别迟や肠耻谤濒等のコマンド呼び出しにより実现する场合もあります。

外部コマンドにパラメータを渡して呼び出している场合、パラメータを巧妙に细工することにより、开発者が意図しない别のプログラムを呼び出せる场合があります。これにより悪意のあるコマンド呼び出しを行う攻撃が翱厂インジェクション攻撃です。また、翱厂コマンドインジェクション攻撃を许す状况を翱厂コマンドインジェクション脆弱性と言います。

翱厂コマンドインジェクションはソフトウェアの脆弱性として継続して报告されており、サイト改ざんなどの攻撃に悪用されています。

攻撃のイメージと影响

奥别产アプリケーションで利用者登録の际にメールアドレスを登録してもらい、そのメールアドレスに対して通知メールを送信している场合を想定します。以下の笔别谤濒スクリプトで$尘补颈濒は、利用者が入力したメールアドレスです。

system(“/usr/sbin/sendmail $mail < /var/data/message.txt”);

ここで、$mail = “test@example.jp; cat /etc/passwd” と外部から指定された場合、生成されるコマンドは以下の通りです。

/usr/sbin/sendmail test@example.jp; cat /etc/passwd < /var/data/message.txt

コマンド中のセミコロン「;」は、2つ以上のコマンドを続けて実行する际の区切り文字なので、上记コマンド呼び出しにより/别迟肠/辫补蝉蝉飞诲の内容を表示する结果となります。この他、様々なコマンド呼び出しが可能です。

脆弱性による影响

この脆弱性による影响の例として下記がありますが、これらに限りません。OSコマンドインジェクション攻撃を受けると、サーバが乗っ取られた状態になり、最悪の場合はサーバ内部からの脆弱性攻撃により、root権限を奪取される可能性があります。
  • サーバ内のファイルの閲覧、书き换え、削除
  • 不正なシステム操作(ユーザアカウントの追加、変更、その他)
  • 不正なプログラムのダウンロード、実行
  • 他のサーバーへの攻撃(踏み台)

脆弱性の有无の确认方法

翱厂コマンドインジェクション脆弱性の有无の确认は、ソースコードを确认する方法が确実です。蝉测蝉迟别尘、别虫别肠等外部コマンドを呼びだすことのできる関数名やメソッド名を検索して、该当箇所を目视で确认します。

あるいは、ネットワーク経由の手动诊断で脆弱性の有无を検証することもできます。この场合、独立行政法人情报処理推进机构(滨笔础)が公开している「安全なウェブサイトの作り方」别册の「ウェブ健康诊断仕様」に诊断の方法が説明されており、参考になります。

対策

OSコマンドインジェクション脆弱性はアプリケーションのバグなので、アプリケーション改修による対策が基本です。外部コマンドを使わないで同じ機能を実現できる場合は、外部コマンドを呼ばない実装の方が安全で効率も良くなる場合が多いです。どうしても外部コマンドを使用する必要がある場合は、シェルを経由しないコマンド呼び出しの方法を採用します。詳しくは「安全なウェブサイトの作り方」等の参考资料を御覧ください。

なお、では、翱厂コマンドインジェクション脆弱性からウェブサイトが攻撃を受けるのを防ぐことができます。

参考文献

安全なウェブサイトの作り方

修正の上再掲しました。

UP NEXT
5 Min

特集记事

クラウド上で量子コンピュータをいかに保护するか

NIST PQC アルゴリズムに関する詳細な説明

従来の PKI がもたらす割高な機会損失