Webアプリケーションの脆弱性を利用した攻撃 OSコマンドインジェクションとは

先日、サーバーやクライアントOSの仮想化メーカーの6製品に、OSコマンドインジェクションの脆弱性が存在しているとして、CERTなどセキュリティ団体が一斉に警告を発しました。その脆弱性とは、 “OSコマンドインジェクション”に対する脆弱性がその製品にあり、特定の管理用Portを経由し不正なリクエストを送るとすべての権限をもった状態のOS内のコマンドを実行することができてしまうといった内容でした。

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

OSコマンドインジェクションとは、攻撃者が「OSコマンドインジェクションの脆弱性があるWebサーバーに対して、不正なOSコマンドを含むリスクエストを送信することによって、攻撃者がWebサーバー内でコマンドを実行することができる」サイバー攻撃のことです。

サーバー上で動作しているOSに対し、Webサーバーの権限でコマンドを実行する攻撃ですので、Webサーバーユーザーの実行権限内でのコマンド実行となる為、OSコマンドインジェクション攻撃がWebサーバーの完全な権限奪取(乗っ取り)となるわけではありませんが、意図としないコマンドを実行されてしまいますので、大きなリスクが含まれているサイバー攻撃のひとつです。攻撃の名称の通り、Webサーバーへのリクエストの中にOSコマンドをインジェクション(挿入)する攻撃です。

OSインジェクションの仕組み

基本的なOSインジェクション攻撃の仕組みは以下の通りです。攻撃者がWebサーバー内の脆弱なアプリケーションに対してOSコマンドを含むリクエストを送信し、Webサーバー管理者が意図としないコマンドを実行します。

  • 攻撃者がWebサーバーに対し攻撃パターンを送信
  • Webサーバー内でコマンド文字列が組み立てられる
  • Webサーバーのシェルで解釈され実行される
  • コマンドの実行
OSインジェクションの被害

OSインジェクションの危険性、想定される被害

OSインジェクション攻撃によって想定される被害は、

  • 情報漏洩
  • ファイルの削除・改ざん
  • マルウエアへの感染
  • 踏み台

など様々な被害が想定されます。rmやcurlコマンドなどOS上で実行することができるコマンド操作がOSインジェクション攻撃よって実行可能な状態になりますので、その被害の対象はターゲットとなったサーバー以外にも及ぶものとして想定しておかなければなりません。他のサーバーを攻撃する為の“踏み台”として利用されることや、DDoS攻撃に利用される可能性があり、被害者から加害者になるリスクもあるのがOSインジェクションです。

狙われやすい環境

サイバー攻撃を行う者は、常時、攻撃しやすい対象を探す為、脆弱性検出ツールを稼働させ、インターネット上に公開されている様々なサーバーに対し、脆弱性スキャンを行っています。インターネット上に公開されたサーバーやFirewall、WAFなどのセキュリティ製品をモニタリングしているとたった数時間もの間に世界の至る所から何度もセキュリティキャンされていることがわかります。

インターネット上には様々なサーバーが公開された状態で稼働していますが、その中でもサイバー攻撃者が狙いやすい環境というものが存在します。それは、世界中の多くの人が利用しているプロダクトやプログラミング言語でつくられたWebアプリケーションです。例えるならば世界シェアの約38%を占めるWordPress。Webアプリケーションを開発するにあたって標準と言っても過言ではない程に使われているプログラミング言語のPHPがそれにあたります。

WordPressを狙った攻撃

世界シェアの約38%を占めるWordPressをターゲットとし、セキュリティスキャンと最新の脆弱性をついたサイバー攻撃の手法を用意しておけば、約10台4台がWordPressにたどり着くことができ、効率的良く脆弱性の有無を検査し、WordPressが稼働するWebサーバーに攻撃を仕掛けることができます。サイバー攻撃者は深くITに精通したエンジニアでありますので、効率の悪い作業を避け、効率の良い作業を選択する職業柄とも言うべき思考をもっていますので、“サイバー攻撃者”は、好んで「世界中の多くの人が利用しているプロダクトやプログラミング言語でつくられたWebアプリケーション」を狙ったサイバー攻撃を試みる傾向がみられます。

多くのWebアプリケーションで採用されているプログラミング言語 PHP

PHPは世界中で多くのプログラマーが使っている人気のプログラミング言語です。日本国内で開発されているWebアプリケーションのほとんどがPHP言語で開発されているとも言われています。PHPにはより簡単にコマンドを実行することを目的に「exec()」や「 system()」などの外部コマンドの実行が可能な関数をもっています。これらの関数が使われたWebアプリケーションは、OSインジェクション攻撃のターゲットとなりますので、“コマンド呼び出しのない実装”にリファクタしなければなりません。

Sインジェクションに有効なセキュリティ対策

OSインジェクション攻撃はその名の通り、脆弱性が潜んでいるWebサーバーに対し不正なコマンドを含むリクエストを送信する攻撃になりますので、Webアプリケーションの中に“コマンドの呼び出しを実装している箇所が無いかを確認し、その現状を把握する”ことが最も有効なOSインジェクション対策の第一歩となります。そして、コマンドの実行を含む箇所が明確に確認することができた後は、OSコマンドを実装しない方法にリファクタします。OSインジェクション攻撃のターゲットとなる箇所をWebアプレ―ションから潰していくことでサイバー攻撃者からの攻撃の機会を奪っていきます。

コマンドの呼び出しを行う為の代表的な関数

  • exec()
  • system()
  • passthrough()
  • shell_exec()
  • pcntl_exec()
  • eval()
  • open()

Webアプリケーション内のセキュリティ対策以外のOSインジェクション対策としては、WAFの導入が有効です。WAFはアプリケーションレイヤに特化したWebサイトを防御する為のセキュリティ製品でOSインジェクション攻撃をWebサーバーに到達する前に検知し、サイバー攻撃者からの不正なリクエストをブロックしてくれます。

OSインジェクション攻撃に対し、非常に有効な対策となりますので、Webサーバーのセキュリティを高めてくれますので、必ず導入したい製品です。但し、そんなWAFも最新の脆弱性への攻撃に対し、防御機能が機能しない場合もありますので、Webアプリケーション内でのセキュリティ対策を十分に行った上で、さらにWAFを導入する「多層防御」のセキュリティ対策を行うことが重要です。

関連サービス

アプリケーションセキュリティ

アプリケーションセキュリティとは、コードに潜む脆弱性を改修し、安全な状態にするアプリケーションコードレベルのセキュリティ対策です。セキュリティ脆弱性検査等によって発見されたバグやセキュリティリスクの高いコードを改修、セキュリティ対策などを実施し、アプリケーションに安全な状態に改善します。

WordPressセキュリティ対策サービス

Worpdressセキュリティ対策サービスは、Worpressに潜む様々な脆弱性を検査・診断し、脆弱性診断によって発見されたセキュリティホールや構築時のセキュリティ未対策箇所へのセキュリティ対策を実施し、レジリエンス(強靭)なウェブサイトをつくりあげます。

クラウドセキュリティ

クラウドのメリットを最大限に活用する為には、クラウドセキュリティ対策を欠かすことはできません。APPSWINGBYでは、お客様の立場で、クラウドシステムのアセスメント・診断・セキュリティ対策・実行・モニタリングまでワンストップでご支援致します。