fbpx

CL LAB

HOME > CL LAB > AquaSecurity > 脅威アラート:release_agentを使用したコンテナエスケープ #aqua #コンテナ #セキュリティ #コンテナエスケープ #クリプトマイニング

脅威アラート:release_agentを使用したコンテナエスケープ #aqua #コンテナ #セキュリティ #コンテナエスケープ #クリプトマイニング

 ★ 8

本ブログは「Aqua Security」社の技術ブログで2021年11月3日に公開された「 Threat Alert: Threat Actors Using release_agent Container Escape 」の日本語翻訳です。

脅威アラート:release_agentを使用したコンテナエスケープ


今年の初めに、Aqua のセキュリティ研究チームである Team Nautilus は、ハニーポットを標的としたクリプトマイニングのキャンペーンを検出しました。このキャンペーンの一環として、攻撃者たちは、cgroup release_agent 機能を利用したコンテナエスケープ技術を使用しました。この技術により、攻撃者はコンテナからエスケープし、ホストや、潜在的には組織のネットワーク全体を侵害できます。我々の知る限り、実際にこの手法が攻撃で使用されたのは初めてのことです。

技術的な分析

攻撃者が使用したコンテナイメージは、攻撃の分析で説明したように、必要なレイヤーがサーバのDockerサービスに登録された後、ハニーポットのサーバの1つで構築されました。

このイメージには、2つの悪意のあるファイルが含まれていました。

  • nginx に改名された XMRig(MD5:859fbbedefc95a90d243a0a9b92d1ae9)
  • calm.sh という名前のシェルスクリプト(MD5:5e1a4c0202bc28778aa88b6b3e207553)

侵害されたホスト上で構築されたこのコンテナイメージは、悪意のあるスクリプトを実行するように設計されていました。

calm.sh というスクリプト(上のスクリーンショットの1~5行目)にあるコンテナエスケープのテクニックは、ペネトレーションテストのウェブサイトに掲載されているものと似ています。

このコンテナエスケープは、以下の手順で行われます。

  1. 新しい cgroup のディレクトリをマウントする
  2. そのディレクトリに cgroup を作成する
  3. その cgroup に release_agent を定義する

release_agent は、その cgroup 上の任意のプロセスの終了時に実行されるスクリプトです。release agent はホストから起動され、攻撃者がホストサーバ上で悪意のあるコードを実行できます。ただし、cgroup のディレクトリをマウントできるようにするには、コンテナに SYS_ADMIN 機能(--privileged)が必要です。

calm.sh スクリプトは、コンテナエスケープを使用してホスト上で悪意のあるコードを実行しますが、その目的はホスト上の XMRig のインスタンスを終了させることです。そして、calm.sh は、コンテナ内で動作するクリプトマイナーである nginx を実行するように設計されています。

他の攻撃者によるクリプトマイニングプロセスを停止させるために、ホスト上で XMRig を継続的に終了させているものと思われます。これは CPU 使用率が高くなり、検出される可能性が高くなることを防ぐためです。

まとめ


この手法によるコンテナエスケープは、今回初めて確認されたものです。ホスト上での主要な悪意のあるコードの実行には使用されていませんでしたが、潜在的な影響は、これまでに確認された他の攻撃よりもはるかに大きい可能性があります。

このリスクを軽減するために、組織は可能な限り特権コンテナの使用を避けるべきです。

Aqua 社のオープンソースのランタイムセキュリティおよびフォレンジック eBPF ツールである Tracee は、この種の脅威を検出し、インシデントの迅速な評価を支援できます。

次の JSON イベントは、Tracee によって発見された悪意のあるアクティビティにより、攻撃を受けたハニーポット上で生成されたものです。これは、攻撃の流れを記述したもので、特定のシステムコールやカーネル関数の呼び出しと、そのイベントに関連して提供された引数が含まれています。以下に、この攻撃を検知するための重要な部分を紹介します。

Tracee を使用してこの攻撃を検知するための Rego シグネチャをリリースしています。

package tracee.TRC_14
import data.tracee.helpers

__rego_metadoc__ := {
  
"id": "TRC-14",
  
"version": "0.1.0",
  
"name": "CGroups Release Agent File Modification",
  
"description": "An Attempt to modify CGroups release agent file was detected. CGroups are a Linux kernel feature which allows process's resources limitations. Adversaries may use this feature for container escaping.",
  
"properties": {
      
"Severity": 3,
      
"MITRE ATT&CK": "Privilege Escalation: Escape to Host"
  
}
}

eventSelectors := [
   {
      
"source": "tracee",
      
"name": "security_file_open",
      
"origin":"container"
  
}
]

tracee_selected_events[eventSelector] {
   eventSelector := eventSelectors[_]
}

tracee_match = res {
   input.eventName ==
"security_file_open"
  
flags = helpers.get_tracee_argument("flags")

   helpers.is_file_write(flags)

   pathname := helpers.get_tracee_argument("pathname")

   endswith(pathname, "/release_agent")

   res := {
       "File Flags": flags,
      
"File Path": pathname,
  
}
}

このシグネチャでは、release_agent ファイルの変更を識別することで、記述された攻撃を検出します。

New call-to-action

CL LAB Mail Magazine

CL LABの情報を逃さずチェックしよう!

メールアドレスを登録すると記事が投稿されるとメールで通知します。

メールアドレス: 登録

※登録後メールに記載しているリンクをクリックして認証してください。

Related post

[無料ウェビナー] GitLab_CI/CDハンズオン_2023111