【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~Contianer Drift編~
皆さん、こんにちは!
第18回担当の川杉です。今回は第7回に取り上げたブログの続編となります。
今回はContainer Driftに焦点を当てます。それでは早速参りましょう!
第7回【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~マルウェア検知編~
https://www.scsk.jp/sp/sysdig/blog/scsk/scsksysdigfalco.html
Container Driftって?
Container Driftは日本語では、「コンテナのずれ」という意味です。コンテナはイメージビルド時にアプリケーションが動くためのソフトウェア構成情報を埋め込むため、デプロイ後のコンテナに変更を加えないことがお作法となります。ご存知の方も多いかと思いますが、デプロイ済みのコンテナに変更を加えないことは、必要な時にいつでも同じアプリケーションを同じ品質で起動できるというコンテナの特長を活かした運用につながります。
この考えに基づくと稼働中のコンテナにソフトウェア構成情報の変更が起きることは通常ないため、変更が起きた(コンテナイメージの内容とずれた)場合は、サイバー攻撃が疑われます。攻撃者はコンテナ侵入後、攻撃ツールのダウンロードや既存ソフトウェアを脆弱なバージョンに変更することがあります。Sysdigは起動中のコンテナ内のソフトウェア構成変更を検知し、変更されたプロセスの実行をブロック(プロセスキル)します。コンテナイメージの時にはインストールされていなかったバイナリファイルの実行をブロックできるので未知のマルウェアにも対応できる点が素晴らしいですね!
Container Driftは非常に強力な機能ではありますが、実はあまり知られておらず、購入後のお客様にご紹介すると驚かれることもあります。具体的には、次のようなContainer Driftを検知/防御することができます。
検知パターン
- コンテナデプロイ後に新たにダウンロードorインストールされたバイナリファイル
- パッケージマネージャーでバージョンアップデートされたバイナリファイル
- バイナリファイルの実行権限変更
- Sysdigの設定画面で指定したバイナリファイルの実行
今回は1について実際に検証してみようと思います。
Container Drift検証
事前準備
それでは早速検証の準備から始めていきましょう。
今回の検証で事前に用意するものは以下の通りです。
- Sysdig agentを導入したKubernetes(Docker環境でも可)
※今回はOpenshift環境にインストールして検証しています - Container Driftの前提条件にあった環境の準備
※下記ドキュメントを参考に利用条件に沿った環境をご用意ください
https://docs.sysdig.com/en/docs/sysdig-secure/policies/threat-detect-policies/manage-policies/container-drift/#prerequisites
いざ検証
まずは検証用のポリシーを作成していきましょう。
今回はRuntime Policyの作成画面で"Container Drift"を選択します。
ポリシー作成画面に遷移するのでNameに任意の名前を入力し、Descriptionに任意の値を入力、Prevent Executionのトグルボタンを有効化して"Save"を押すだけです。
複雑な設定も必要なく、とても簡単にポリシーが作成できましたね。
Volume Binariesを設定することでコンテナにマウントされたボリューム内のバイナリ実行を検知できます。その他にもProhibited Binariesで任意のバイナリ実行を禁止にできます。便利ですね。各オプションの詳細は下記URLの公式ドキュメントをご覧ください。
https://docs.sysdig.com/en/docs/sysdig-secure/policies/threat-detect-policies/manage-policies/container-drift/#configure-a-container-drift-policy
それでは実際に試してみましょう。
今回は、nginxコンテナをデプロイして、Falco OSSプロジェクトが提供しているevent-generatorバイナリをcurlでダウンロードして、実行を防御できるかみていきましょう。
event-generatorはFalcoのセキュリティイベントをトリガーするためのプログラムです。詳細は下記URLに記載があるのでご興味ある方は是非ご覧ください。
https://github.com/falcosecurity/event-generator
まずはnginxコンテナを作成します。
$oc create namespace test namespace/test created $oc run nginx --image=nginx --namespaces test pod/nginx created $oc get pod nginx -n test NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 4m35s
作成完了しました。今回はtestというnamespace上でnginxを動かしています。 Githubからevent generatorをダウンロードしてみましょう。
$oc exec -it nginx -n test -- bash root@nginx:/#curl -L -o event-generator-linux-amd64.tar.gz https://github.com/falcosecurity/event-generator/releases/download/v0.12.0/event-generator_0.12.0_linux_amd64.tar.gz root@nginx:/#tar -xzvf event-generator-linux-amd64.tar.gz LICENSE README.md event-generator root@nginx:/# chmod 777 event-generator
実行権限も付与し、あとは実行するだけです。 それではダウンロードしてきたバイナリ実行してみます。
root@nginx:/# ./event-generator Sysdig Drift Control: Execution of drifted binary '/event-generator' by process '/usr/bin/bash' was blocked bash: ./event-generator: Operation not permitted
Container Driftによってバイナリの実行がブロックされました。 Sysdig GUIから検知結果を見てみましょう。
プロセスツリーの中身も見てみましょう。
Container Drift実行前後で発生したプロセスがあればそれについても表示されます。プロセスの流れが可視化されるため検知された際の調査がはかどりそうですね!
最後に
今回はContainer Driftをご紹介しました。コンテナ運用のお作法を利用した実にSysdigらしい機能でしたね!コンテナデプロイ後にダウンロードまたはインストールされたファイルはサイバー攻撃の可能性があります。Container Driftを利用することで、未知のマルウェアがコンテナ内で実行された場合でも防御可能です。未知のマルウェアはシステム側から攻撃を受けるまでマルウェアであることがわからないものがほとんどですが、そういったものの対策ができるのは心強いですね。
本ブログでは次回以降もSysdigやコンテナ、Kubernetesを中心としたセキュリティやモニタリングについてとりあげていきたいと思います。
それでは、またの機会に!
※今回ご紹介した機能の詳細情報は下記URLに掲載されております。
https://docs.sysdig.com/en/docs/sysdig-secure/policies/threat-detect-policies/manage-policies/container-drift/
担当者紹介

- 担当者名
- 川杉
- コメント
- 3年ほど前からSysdigを中心にコンテナ・Kubernetes領域で仕事をしています。社内でコンテナ技術の啓蒙活動も積極的に行っています。
- 保有資格
- Certified Kubernetes Administrator
Certified Kubernetes Security Specialist
SCSK技術者ブログ

【Sysdig技術者によるブログ】Serverless AgentがAzure Container Appsに対応しました

【Sysdig技術者によるブログ】システムコール分析における生成AIの活用

【SCSK技術者によるブログ】Sysdig情報アップデート~AWS連携にS3オプションが追加されました~

【SCSK技術者によるブログ】Falco初学者講座 - Exceptions編

【SCSK技術者によるブログ】Falco初学者講座 - List/Macro編

【SCSK技術者によるブログ】コンテナの電力消費をSysdig Monitorで監視してみよう

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~Contianer Drift編~

【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう②

【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう①

【 SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた(Monitor編)

【SCSK技術者によるブログ】Falco初学者講座 - condition編

【SCSK技術者によるブログ】Sysdig Sageを使ってみた

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編②~

【SCSK技術者によるブログ】Sysdigをセキュアに使おう~IP Allowlist編~

【SCSK技術者によるブログ】Node ExporterをSysdig Monitorに連携してみた

【SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた

【SCSK技術者によるブログ】CNAPPの理解とSysdigのカバレッジ

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~マルウェア検知編~

【SCSK技術者によるブログ】Sysdigのライセンス体系

【SCSK技術者によるブログ】Sysdig とMicrosoft Entra ID間でSAML認証設定を試してみた

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編~

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~AWSサインインなりすまし検知編~

【SCSK技術者によるブログ】Sysdig SecureのRisks機能を試してみた
