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

 2023.11.09  2024.04.23

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

本稿では、OSコマンドインジェクション攻撃について解説し、セキュリティ対策として有効な「WAF(Web Application Firewall)」をご紹介します。

Webサイトを保護し、ユーザーに被害を与えず、会社の信頼を守るためにもOSコマンドインジェクションの仕組みや対策を理解しましょう。

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

OSコマンドインジェクションとは、ユーザーによるWebアプリケーションへの入力値にOSコマンドを紛れ込ませ、Webサーバー上で不正にコマンドを実行するものです。

入力値からシェルコマンド文字列を組み立てて実行する箇所が適切に実装されていないと、本来想定していない命令を外部からの入力で強制的に実行されてしまいます。

このような脆弱性を悪用した攻撃手法がOSコマンドインジェクションです。

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コマンドインジェクションによる被害

OSコマンドインジェクション攻撃を受けた場合、以下のような様々な被害に遭う恐れがあります。

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

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

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

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

【解説】Webセキュリティ ~Webサイトを取り巻く脅威と対策~

【解説】Webセキュリティ ~Webサイトを取り巻く脅威と対策~

安心・安全なWebサイトの運営に欠かせない脆弱性対策、WAFによる対策について解説します。

詳細はこちら

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アプリケーションの安全性を維持するには高いセキュリティ意識と知識、技術が必要となります。

また、自社で開発したプログラムではなく、利用しているフレームワークやCMSのプラグインなどに脆弱性が見つかった場合は、自ら対処することは非常に困難であり、開発元からのバージョンアップ版やパッチの提供を待ち、速やかに適用する必要があります。

このようなときにWAFが導入されていると、攻撃を受けた際の影響を低減することができ、セーフティネットとして大きな役割を果たします。

waf-v2

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

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

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

WAFとは

WAFとは

Webアプリケーションファイアウォール(WAF:Web Application Firewall)は、ウェブサイトに対するアプリケーションレイヤの攻撃対策に特化したセキュリティ対策です。

詳細はこちら

RECENT POST「WAF」の最新記事


WAF

WAFはなぜ導入が必要?利用目的とメリット・デメリットを解説

WAF

WAF導入と運用のポイント!WAFのチューニングに必要なものとは

WAF

証明書はどうするの?WAFによるSSL通信の検査

WAF

ModSecurityとは?オープンソースWAFのメリット・デメリットを解説

WAFによるOSコマンドインジェクション攻撃の防御
5分でまるわかり!WAFによるサイバー攻撃対策
1分でわかる「SiteGuardシリーズ」
RECENT POST 最新記事
ブログ無料購読
RANKING人気記事ランキング