Sysdig Secure/Falcoの活用術!〜Kubernetes基盤の脅威モデリングとランタイムセキュリティの強化〜
![SysdigSecure Falcoの活用術.PNG](https://static.wixstatic.com/media/d11470_5d2ae2b158fe4e7fa594ad2ad7d6b1fe~mv2.png/v1/fill/w_593,h_218,al_c,lg_1,q_85,enc_auto/SysdigSecure%20Falco%E3%81%AE%E6%B4%BB%E7%94%A8%E8%A1%93_PNG.png)
2022年8月5日(金)CloudNative Security Conference 2022がオンラインで開催されました。
そこで「Sysdig Secure/Falcoの活用術!〜Kubernetes基盤の脅威モデリングとランタイムセキュリティの強化〜」と題しまして、株式会社インターネットイニシアティブ(以下IIJ)様より Sysdig Secure/Falcoを用いてIKEのランタイムセキュリティを強化するために実施したPoCについての紹介が行われました。
株式会社インターネットイニシアティブ様については、弊社SCSK株式会社が2019年11月から商用版の国内総販売代理店となったことから、日本語による手厚いサポートが期待できる点に注目を頂き Sysdig Secureをご導入頂いた経緯がございます。
開催イベント:CloudNative Security Conference 2022
日時:2022年8月5日(金)
開催場所:オンライン
まず冒頭に今回の題材ともなっている Kubernetes基盤「IKE」(IIJ Kubernetes Engine) について、IIJの李氏により紹介されました。
「IKE(IIJ Kubernetes Engine)はIIJのサービスのためのプラットフォームとして開発運用されている Kubernetes の基盤です。OSSの他に他社製品や自社で開発しているソフトウェアを組み合わせて一つの大きなエコシステムとなっております。特徴は共有の Kubernetes クラスターを複数のマルチテナントに提供しているという点にあります。」(李氏)
このような特徴によって基盤自体の稼働効率を上げ、また横断的に利用できるプロダクトの融通が可能といったメリットがあると言います。本講演では、監視基盤である IKE Monitoringに対して Sysdig Secureを活用することによって、セキュリティを強化していく方法が紹介されています。また、IKEに対してどういった脅威が想定されるのかについて、脅威モデリングを使った脅威の抽出方法について解説されました。
IKE Monitoring
ログ、メトリックス、トレースの収集や長期保存が可能なマルチテナント対応の監視基盤
IKE上にデプロイされたシステムの状態を把握することが可能
利用者はIKE上の Grafana を使って可視化や検索が可能
Sysdig Secure
◆Cloud Nativeプラットフォームを守る包括的なセキュリティ製品
IKEでは、基盤としてセキュリティを担保する仕組みとして導入
◆代表的な機能5つ
脆弱性管理 / コンプライアンス機能 / ランタイムセキュリティ / フォレンジック機能 / 監査機能
Falco
独自のルールを用いてコンテナの脅威を検知することに特化したエンジン
再利可能なリストやマクロを活用して、可読性の高いルールを作成可能
Sysdig Secureでは、Falcoのルールを用いて検知ルールをカスタマイズ
Sysdig Secureを活用したIKEのセキュリティ強化
Sysdig Secureはクラウドネイティブプラットフォームを守る包括的なセキュリティ製品です。
「IKEでは、基盤としてセキュリティを担保するためにこの Sysdig Secureを導入していますが、分散システムのセキュリティを一元的に見通しよく管理するために大変優れているプロダクトです。」と李氏。
Sysdig Secureの代表的な5つの機能「脆弱性管理」「コンプライアンス」「ランタイムセキュリティ」「フォレンジック」「監視」について紹介され、その中で特に「ランタイムセキュリティ」について深掘りされました。
「ランタイムセキュリティで使われるこの Falcoはシステムコールを情報源として独自のルールの記述方法を使ってランタイム時の脅威を検知することに特化したエンジンです。最近ではカーネルレイヤーをパッチングするためにeBPFなどがありますが、より簡易的なルールを記述することで同等の機能を実現することはできます。」
「示しているコードでは Falcoでコンテナ内のcronの実行を検知するためのものとなっています。Falcoマクロを再利用することで可読性の高いルールを作成して行くことができます。」(李氏)
次にIIJの長谷川氏より Sysdig Secureを利用する際に、実際にどういった脅威を想定するのかを特定する方法として、脅威モデリングを使った抽出について語られました。
![検知ルール.png](https://static.wixstatic.com/media/d11470_6386ae04b2b146ceaf702a66d3f28070~mv2.png/v1/fill/w_971,h_297,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/%E6%A4%9C%E7%9F%A5%E3%83%AB%E3%83%BC%E3%83%AB.png)
脅威モデリングを使った脅威の抽出方法
「脅威を洗い出す手法として、一般的に脅威モデリングと呼ばれるものがあります。脅威モデリングには主に四つの工程があり、データフロー図(以下DFD)の作成、脅威の特定、リスク評価、リスク対応と遷移していきます。この中でも今回は特にDFDの作成と脅威の特定に焦点を当てていきます。」
「今回例として取り上げるのは IKE MonitoringのDFDの一部です。ユーザが作成したアプリケーションを IKEにデプロイしそのメトリクス情報がどのように流れていくのかそのデータフローについて図を作成しています。」(長谷川氏)
「DFDを実際に作成してみて思ったこととして、クラウドネイティブプラットフォーム上で動作するシステムはコンポーネントがすごく複雑なので、全体のDFDを作るよりもまずは操作やデータに着目した範囲の狭いものを作っていくのがやりやすいことが分かりました。詳細に描くことで解像度が上がり、セキュリティ上の脅威を見つけやすくなると思いますが、まずは大きく抽象化したパターンで書き進めて、より詳細に表現できそうな部分を細かくしていくとやりやすいと思います。また既存のシステムの場合はインフラや設定などが構成管理されているとそれを元に図やデータフローを考えることができるので非常に楽だと思います。」とクラウドネイティブプラットフォームならではのDFD作成方法のコツが述べられました。
![IKE MonitoringのDFD.png](https://static.wixstatic.com/media/d11470_c53687669f714b78b362f9ada653039c~mv2.png/v1/fill/w_916,h_444,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/IKE%20Monitoring%E3%81%AEDFD.png)
フレームワークを活用した驚異の特定
次にDFDを元にした脅威の特定について、マイクロソフトにより提唱された STRIDEと呼ばれるフレームワークを使った方法や、より具体的に落とし込んだ手法として、STRIDE-per-Elementと STRIDE-per-Interactionについても解説されました。
※補足《「STRIDE」は攻撃側に立って、脅威を以下6つに分類します。
それぞれSpooling(なりすまし)、Tampering(改竄)、Repudiation(否認)、Information Disclosure(情報漏洩)、DoS(サービス停止) 、 Elevation of privilege (権限昇格)。》
《「STRIDE-per-Element」は、「DFDの全要素に対してSTRIDEで分析する」「一般的に以下のようなチャートを利用して、各要素でチェックされている脅威を洗い出す」といった特徴「STRIDE-per-Interaction」は、「DFDの信頼境界に対してSTRIDEで分析する」手法》
「今回は vminsertに着目してみます。vminsertはプロセスなので STRIDE-per-Elementとしては STRIDEの視点すべてに関して考えていきます。例えば vminsertに関する Spoofing (なりすまし)としては vminsertプロセスやコンテナが悪意ある別のプロセス、コンテナになりすましされるということが考えられます。Tampering(改ざん)としては Prometheusよりリモートライトされるメトリックスを vmstorageストレージに渡す前に改ざんされる可能性がありそうです。またメトリクスを大量に送りつけることによる DoSなども考えられます。」
「もう一つの例として STRIDE-per-Interactionを考えていきます。ここでは Grafanaによるメトリクスの読み取りに関して生じるデータフローの交差点に着目した際の脅威を考えてみます。まず Spoofingとしては第三者になりすまして Grafanaを利用されるという脅威が挙げられます。また Information Disclosureでは正規の Grafanaとは別にメトリクス情報の取得が行われることによる漏洩があります。DoSでは悪意ある負荷がかかるようなクエリだったり、大量のクエリを発行することによる脅威も考えられます。」(長谷川氏)
更に長谷川氏は、実際の攻撃手法を洗い出すための Attack Treeという手法について続けました。
「たとえばある脅威を達成するためには攻撃手法AもしくはBがあるとします。それらの攻撃手法を達成するために必要な前段となる条件や攻撃がある場合がほとんどです。そのため攻撃手法Aに関しては、攻撃手法1と2の両方が必要となるケースをandとして描いています。こうした攻撃手法は専門的な知識が要求されるため時間もかかりますが、重要度が高いものに関しては作成して対策を考えると効果は大きい。」
「専門的な知識に関してはすでに整備された外部リソースを参考にするのが良いと思います。代表的なものとしては MITRE ATT&CKがありますが、これは実際に攻撃者が使った戦術やテクニックが体系的にまとまっているナレッジベースです。」
(長谷川氏)
上記手法を使ってDFDから考えた、IKE Monitoring及び多くの環境でも考えられる脅威は以下図のようになっています。
![IKE MonitoringのDFDから考える脅威.png](https://static.wixstatic.com/media/d11470_939c6ba6f408476e886c7cd6650145c1~mv2.png/v1/fill/w_891,h_480,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/IKE%20Monitoring%E3%81%AEDFD%E3%81%8B%E3%82%89%E8%80%83%E3%81%88%E3%82%8B%E8%84%85%E5%A8%81.png)
このような検討を実施することの効果を長谷川氏は語ります。
「Attack Treeを作成することで具体的な手段が整理され対策方法やどこまで考慮するべきかなどの検討材料に使うことができます。頭の中で思い浮かぶものもあるかと思いますが、メンバー間での認識合わせをする際に非常に便利な手法だと感じました。」(長谷川氏)
続いて、Sysdig Secure/Falcoを使って実際にどのように検知していくのか、検知した場合にどのように見えるのかについて、李氏より話がありました。
ランタイムセキュリティによるリアルタイム監視の重要性
そもそもランタイムセキュリティとはなんでしょうか。
「ランタイムセキュリティとは実際に動いているシステムに対してその挙動をシステムが動いている状態で、リアルタイムに監視する仕組みです。脅威への対応アプローチとしては様々あるかと思いますが、今回は Sysdig Secure/Falcoを活用したランタイムセキュリティという観点で話をします。」(李氏)
コンテナ環境におけるセキュリティ対策として、よく例にコンテナイメージのスキャンが挙げられていますが未知の脆弱性に対する効果はあまり期待できないといいます。
「他の方法としては Kubernetesのセキュリティコンテキストや、ポットセキュリィポリシー( Kubernetes1.25では削除される予定)などの設定が挙げられます。これらに関しては正しく設定されていればその効果は大きいです。しかしながら設定ミスやアップデートでの挙動の変化などによって意図した挙動しない場合が考えられます。」(李氏)
イメージスキャナやポッドセキュリティポリシーといった機能は、事前に把握している条件を満たしていて例外がないものであればセキュアであるという前提があり、そのため逆に時間が経過して環境が変化することにより、担保してあったセキュリティが崩れてしまうことがあるといいます。
「ランタイムセキュリティでは実際に動いている挙動に対してそのルールを定めます。こちらの方がより最終的にいわゆるインシデントベースな結果が得られる場合があります。加えて Sysdig Secureの場合は検知したイベントに対して通知をするだけ、コンテナをKillする、コンテナを停止するといった対応を選択することができ、セキュリティの原則としては怪しい挙動すべてとめることが最善となりますが、実運用上では難しいケースも少なくなく、特に通知のみをすることによってシステム自体のオブザーバビリティーを高めることができて、運用者としては取れる選択肢の幅を広げることができます。」(李氏)
続いて、Sysdig Secureを使ったランタイムセキュリティの取り組みについて活用事例が紹介されました。
活用事例として通信やファイルシステム上の操作の観測というような低レイヤーでの監視についての話から、クラウドネイティブな環境で実施されることを想定した、Sysdig Secure/Falcoで高レイヤーの情報を取得した場合についても話を聞くことができました。
「クラウドネイティブな環境ではノードは均一的で一様であることが望ましいものの、一部特殊なケアが必要なノードが必要となることもあります。ここでは占有ノード上でホワイトリストを作ることで、特定のコンテナイメージのみを実行させるためのルールについて見ていきます。こちらのルールでは IKE Monitoringで使うコンテナイメージをホワイトリストとして作成し、これら以外のコンテナイメージの実行を検知するというものです。緩い運用であれば、例えばコンテナデプロイされても直ちにそれを止めたり消したりする必要性はありませんが、意図しないデプロイは設定のミスであったり、システムのキャパシティのゆとりのなさを表している可能性もあり、監視の対象として相応しいものとなっています。こちらが Istioを起動させた所を検知したものとなっています。コンテナ詳細についての情報が得られたり、またこのUI上ボタン一つでこの検知を除外するルールを追加することができます。」(李氏)
![コンテナ情報に関する観測.png](https://static.wixstatic.com/media/d11470_9c89aa9810a74e6fb16a54e26b381480~mv2.png/v1/fill/w_973,h_449,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E6%83%85%E5%A0%B1%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E8%A6%B3%E6%B8%AC.png)
また当日は、Sysdig Secureのworkloadポリシーの例の他、kube-apiserverを経由して namespace毎に絞り込みができる、kubernetes auditポリシーを例にした kube-apiserverのAPI操作の観測についても話を聞くことができました。
Sysdig Secureの使用感
講演の最後に長谷川氏は Sysdig Secureの使用感についてこうまとめました。
「初めて Sysdig Secureを使ってみた感想としてブラウザ上で簡単にルールの管理や反映を行うことができ、設定作業が容易であり、スコープを定めての設定なども簡単に出来ました。またプリセットされたルールも多彩でして新規ルールを考える際の参考にもなったりしました。」(長谷川氏)
今後も各企業でクラウドネイティブな環境の利用が拡大していくことが予想されますが、容易に環境構築できるからこそのセキュリティ上の課題が発生します。より効率的・効果的なセキュリティ対策の実現のためにも、今回ご紹介した Sysdig Secureなどのアプリケーションの活用が企業に求められています。