WAFによるOSコマンドインジェクション攻撃の防御

 2020.01.29  株式会社ジェイピー・セキュア

私たちは日頃からインターネットを通じて、Webアプリケーションやサービスを利用し、その恩恵を受けています。その一方でWebサイトの改ざんや情報漏えいといった事件・事故が後を絶たないという実情もあり、Webサイトの運営者はセキュリティに対する正しい知識が身に付ける必要があります。

本稿では、OSコマンドインジェクション攻撃について解説し、セキュリティ対策として有効な「WAF(Web Application Firewall)」をご紹介します。Webサイトを保護し、ユーザーに被害を与えず、会社の信頼を守るためにもOSコマンドインジェクションの仕組みや対策を理解しましょう。

OSコマンドインジェクションとはどのような攻撃か?

Webアプリケーションプログラムでシェルコマンド文字列を組み立てて実行している箇所がある場合、適切な実装がされていないと、外部からのパラメータ入力によって不正にコマンド文字列を送り込まれ、結果としてWebサーバーのOSコマンドを不正に実行される危険があります。つまり、本来想定していない命令を外部からの入力で強制的に実行されてしまうのです。この問題をOSコマンドインジェクションの脆弱性と呼び、悪用した攻撃手法をOSコマンドインジェクション攻撃と呼びます。

ここに以下のような脆弱なスクリプトがあります。

system("/usr/sbin/sendmail <mail.txt $mail");

$mailに下記が設定された場合

$mail = 'xxx@example.jp; /bin/cat /etc/passwd';

セミコロン「;」で複数のコマンドを続けて実行されることになり、sendmailに続いて、/bin/cat /etc/passwdが実行されてしまいます。

/usr/sbin/sendmail <mail.txt xxx@example.jp; /bin/cat /etc/passwd

OSコマンドインジェクション攻撃を受けると、

  • 情報漏えい、改ざん
  • マルウェアダウンロード、バックドア設置
  • スパムメール配信への悪用、踏み台

 

など、様々な被害に遭う恐れがあります。

rmコマンドにより重要ファイルを削除されたり、wgetコマンドで不正なファイルをダウンロードされるなど、任意のコマンドを実行されてしまうことから、その影響は非常に大きいといえます。

OSコマンドインジェクション攻撃で大規模な被害が生じた事例として、2016年に日本テレビで最大43万件におよぶ個人情報(氏名、住所や電話番号などの)漏えいの可能性が報じられました。CMSのMovable Type用に提供されていた携帯電話・スマートフォン向けWebサイトを構築するプラグインにOSコマンドインジェクションの脆弱性が存在していたことが原因で、J-Waveでも64万件の個人情報漏えいの可能性が報じられるなど、大きな話題となりました。

関連情報:ケータイキット for Movable Type の脆弱性 (CVE-2016-1204) に関する注意喚起

OSコマンドインジェクションの対策

PHPの「system()」や「exec()」等、Perlの「eval()」や「open()」等、外部コマンドの実行可能な関数を使用している場合は、Webサイトの特性や業態に関係なく、OSコマンドインジェクションの対策が必要です。

OSコマンドインジェクションの根本的な対策は、OSコマンドの呼び出しをしない実装、つまりOSコマンドインジェクションの原因を作らない実装にすることです。Perlのopen関数は引数としてパイプ「|」(パイプ)を使うことでOSコマンドを実行できるため、入力フォームなどの外部からの入力値を利用する実装において非常に危険です。open関数は、sysopen関数にすればシェルを起動することはありませんので、他の関数で代替できるかを検討し、シェル呼び出しが可能な関数の利用を避けるようにします。

「system()」や「open()」を使用する必要がある場合には、OSコマンドインジェクションに悪用される可能性のある記号文字「;」「|」「&」「`」「<」「>」「(」「)」等をエスケープするようにします。

関連情報:IPA「安全なウェブサイトの作り方

WAFによる対策

WAFは、Webアプリケーションの脆弱性を悪用する攻撃からWebサイトを保護するためのセキュリティ製品です。前述の根本的な対策が理想ですが、繰り返されるWebアプリケーションの改良の中で対策漏れが生じてしまうこともあるかもしれません。Webアプリケーションの安全性を維持するには高いセキュリティ意識と知識、技術が必要となります。

また、自社で開発したプログラムではなく、前述のように利用しているソフトウェアやプラグインに脆弱性が存在した場合は、自ら対処することは非常に困難であり、開発元からのバージョンアップ版やパッチの提供を待ち、速やかに適用する必要があります。WAFが導入されていると、攻撃を受けた際の影響を低減することができ、セーフティネットとして大きな役割を果たします。

WAFは、Webサーバーにインストールしたり、ゲートウェイ型としてネットワークに設置することでユーザーからのリクエストを検査します。以下のページでSQLインジェクション、ディレクトリトラバーサル、OSコマンドインジェクションによる攻撃とWAFによる防御の解説をしていますので、ぜひ参考にしてください。

WAFとは:攻撃デモ~WAFによる防御

いかがでしょうか?。WAFを導入することで、OSコマンドインジェクション攻撃を効率的に検出・防御することができます。Webサイトのセキュリティ強化を検討されている場合は、WAFにご注目ください。

信頼の純国産ソフトウェア型WAF SiteGuardシリーズ製品概要

SITEGUARD
ジェイピー・セキュアソフトウェアライセンス価格表

RELATED POST関連記事


RECENT POST「技術動向」の最新記事


WAFによるOSコマンドインジェクション攻撃の防御
SITEGUARD

RANKING人気資料ランキング

RECENT POST 最新記事

ブログ無料購読

RANKING人気記事ランキング

TOPIC トピック一覧