「BIG-IP」に深刻な脆弱性?
夏の大型連休直前、金曜日の夕方に報道されていて何となくスルーされているニュースがあります。
エフセキュア株式会社は、F5 Networksの提供するロードバランサー(負荷分散装置)の「BIG-IP」において、一般的な構成で重大な脆弱性を発見したと発表した。
脆弱性を発見したのはF-SecureセキュリティコンサルタントのChristoffer Jerkeby氏で、攻撃者は脆弱性を持つBIG-IPの設定を悪用して、企業/団体のネットワークに侵入でき、侵入先のデバイスによって管理されたWebサービスを使用する個人に対して、さまざまな攻撃を仕掛けることができるという。
セキュリティ上の本質的な欠陥は、ネットワークトラフィックの管理に使用されるBIG-IP Local Traffic Managerで使用されるTclベースのスクリプト言語「iRules」に存在しており、特定のコーディング手法によって任意のTclコマンドを挿入でき、ターゲットとなるTclスクリプトのセキュリティコンテキストにおいて任意のコマンドを実行される可能性がある。
これまでの経験を思い返してみても、BIG-IPは本当にどこの現場に行っても使われていてかなりブランド力のあるアプライアンスです。最近はクラウドでも仮想アプライアンスとして導入して使うケースもあり、結構このニュースはインフラエンジニアを動揺させてもいいはずですが何となく「連休明け」みたいになってしまった感があります。
特にiRulesはBIG-IPのロードバランサーの機能の中でも肝とも言える機能です。
しかしこのニュースを読んでも、iRulesの何が悪いのかよくわからないので、周辺情報を確認してみました。
情報元を辿る
このニュースを深掘りしてみましょう。
実際、F-SucureのJerkeby氏が警告している文章は以下です(英文)。こちらは2019/8/9にリリースされた文章です。
また、上記の内容について、Jerkeby氏のプレゼンテーションがYoutubeにあります。
Christoffer Jerkeby - Load Balancer with RCE, Hacking F5 - SecurityFest 2019
かなり具体的に、脆弱なiRulesを書いた場合の挙動をデモしています。
本件は、F5社(BIG-IPの製造元)が2019/5/22にレターを出しています。
https://support.f5.com/csp/article/K15650046
F5 would like to thank Christoffer Jerkeby of F-Secure Sweden for working with F5 to highlight this issue.
基本はこのドキュメントをきちんと読み込むべきということです。
何が問題か
本件の文脈としては、下記の通りと理解しています。
・F5社はこの問題はiRules内で使われるTCLスクリプトやF5製品の脆弱性ではないと判断している。どんな言語でも、脆弱性のある書き方はできるため、ユーザー側で脆弱性のない書き方をすべきだと主張している。
・F-SecureのJerkeby氏は、BIG-IPおよびTCLを使ったソリューションは世界各地で利用されているが、この脆弱なTCLの書き方による脆弱性についてまだユーザーの認知が不十分である。iRulesの書き方がまずいと、情報漏洩や改ざんが起こると警告している。また修正パッチを適用すればいい類の問題ではなくユーザー側で対処しなければいけないのが問題を助長していると主張する。
・今回のTCLの問題の本質はコマンドインジェクション。iRulesの中で式を利用する際に括弧をつけないと、iRules実行の際に外部からコマンドを仕込まれ実行できてしまう。
・BIG-IPにおいては、コードインジェクションが発生する可能性のある書き方をiRulesにした場合、ログに以下の警告が出るようにしている。
Error Message: <irule_name>: warning: [use curly braces to avoid double substitution][<Part_of_irule_in_question>]
(参照:https://support.f5.com/csp/article/K57410758)
To Do
F5のドキュメントを見る限りは、問題がある書き方(コードインジェクションが発生するような記述)は警告が出るようになっているため、ログを確認するべきだと思います。また、アラートがあるものはiRulesを見直し適切に括弧を追加し、アラートが出ないようにしなければいけないでしょう。
また、F5社が出しているツールを使ってiRulesのプログラムを検査してみるのも良いかと思います。
Jerkeby氏は下記のように言ってます。
このセキュリティ問題は、iRules(Tclスクリプト)自体のコーディングの欠陥です。企業がBIG-IPロードバランサーをセットアップするときに作成するものです。そのため、BIG-IP自体に問題はないため、F5や誰でも簡単なソフトウェアパッチで修正できる問題ではありません。組織自身で問題を調査して修正する必要があります。
日本国内でもBIG-IPの利用シーンは非常に多いので、もし社内でiRulesを利用しているのであれば積極的に運用エンジニアにて確認を行った方がいい案件だと思います。