このページの本文へ

前へ 1 2 3 次へ

F-Secure研究者が講演で警鐘、コマンドインジェクション攻撃防ぐコードレビューを―「Black Hat 2019」レポート

F5「BIG-IP」のiRule、コーディング次第で脆弱性量産リスクあり

2019年09月09日 07時00分更新

文● 谷崎朋子 編集● 大塚/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

ロードバランサーの向こう側にあるサーバー群へのポートスキャンも

 さらに踏み込んでコマンドインジェクションを悪用すれば、BIG-IP経由で内部ネットワークを探索し、ロードバランサーの向こう側(バックエンド)で稼働しているサーバー群を一覧表示させたり、それらにポートスキャンを実行してどんなサービスが稼働しているのかを調べることもできる。こうした情報は、さらなる攻撃拡大の糸口になるだろう。

 次の画面では、FTPサービスのTCP/21番ポートが開いているサーバーを発見したので、Anonymousログインを試みている。「大抵のネットワークには、FTPサービスが残念な設定で動いていたりと、みんなに知られるとちょっと恥ずかしい秘密が隠されているものなんだ(笑)」(ジャーカビー氏)。

ロードバランサーの配下にあるサーバーのFTPサービスにAnonymousログインを試行。iRuleスクリプトが脆弱であれば、こんな攻撃もできてしまう

 また、connectコマンドを実行させてBIG-IP上のMCPD(Master Control Program Daemon:ユーザープロセスとトラフィック管理マイクロカーネル間でのバイナリデータの送受信を担うデーモン)に接続し、MCPDに特定のコマンドを送信すれば、ユーザー名や権限、使えるtmshシェルのコマンドなどの情報も抜き出せる。tmshを実行してBIG-IPを乗っ取ることも不可能ではない。

MCPDデーモンに接続し、ユーザー名と権限リストを入手して使えるシェルコマンドをチェック。BIG-IPを乗っ取る

ミスは誰でもあることだから、必ずコードレビューを実施しよう

 こうしたコマンドインジェクション攻撃のリスクを防ぐには、iRulesスクリプトを書いたあとに必ずコードレビューすることだとジャーカビー氏は断言する。「evalやsubst、exprなどを使った、攻撃を誘発しそうなコマンドラインは確実にレビューし、ダブル置換がどのくらい存在するか、引数として予期しない値(コマンドライン)が渡されることがないかどうかといった点をしっかり検証してほしい」(同氏)。Webアプリケーションのコーディングだけでなく、その前段にあるBIG-IPのコーディングも要注意というわけだ。

 コードレビューをしやすくし、またうっかり脆弱性を作り込まないために、iRuleスクリプトはあまり長々と書かないようにして、構文エラーが発生している場合はログに残すことも勧める。さらに、コードレビューは自動化すべきだと語る。

 iRuleスクリプトのコードレビューを自動化するツールとして、脆弱なTclコードを検出する「tclscan.tcl」、Burp Suiteで使えるコマンドインジェクション検証スキャナ「iruledetector.py」(ジャーカビー氏が開発、Burp Suiteマーケットで配布)、iRuleスクリプトのロジックを検証して論理エラーを検出する「TestTcl」などが紹介された。いずれも無償のツールだ。

 このほかセッションテーブルのリスクについては、テーブル内のデータには攻撃コードが挿入される危険性があることを想定し、その内容を実行前に検証することを推奨。またローカルホスト乗っ取りについては、基本中の基本である「使っていないサービスは無効化する」ことだと、ジャーカビー氏は述べた。

 「脆弱なコードを書いてしまうことは、誰にでも起こりうることだ」とジャーカビー氏は語る。実際に同氏自身も、完璧なiRuleスクリプトを書いたつもりで検証ツールにかけたところ、コマンドインジェクション可能な“穴”が見つかったという。「こんなに注意して書いている自分でもミスを犯すなら、脆弱なコードが世の中にあふれかえっていても何ら不思議ではない」と照れ笑いしつつ、だからこそセキュアコーディングに加えてコードレビューは必須だと強調。少しでも自動検証ツール群が役だってくれればうれしいと締めくくった。

前へ 1 2 3 次へ

カテゴリートップへ