ブログ

Falcoを用いてCVE-2019-14287 を検知する方法

Google Cloudとコンテナの継続的なセキュリティ

本文の内容は、2019年10月15日にSysdigのKaizhe Hungが投稿したブログ(https://sysdig.com/blog/detecting-cve-2019-14287/)を元に日本語に翻訳・再構成した内容となっております。

最近、脆弱な事象としてCVE-2019-14287がsudoで発見されました。 このブログ投稿では、FalcoまたはSysdig Secureを使用して、この脆弱性に対するエクスプロイトの試みを検出する方法を紹介します。

sudoを使用すると、ユーザーは他のユーザー特権でコマンドを実行できます。 通常、非特権ユーザーがrootとしてコマンドを実行できるようにするために使用されます。 この問題は、sudoが1.8.28より前のバージョンで任意のユーザーIDを使用して実行コマンドを実装する方法に存在します。 CVSS v3スコアは7.8であるため、攻撃ベクトルはローカルであり、デフォルト以外の構成が必要ですが、悪用しやすい重大度の高い脆弱性について説明しています。

このバグを悪用するには、悪意のあるユーザーがすべてのユーザー(rootを除く)としてコマンドを実行できる特権を持っている必要があります。 sudoersファイルのRunasパラメーターに特別な値ALLを持つエントリがある場合、条件が満たされます。

sudo CVE-2019-14287の悪用

sudoコマンドで-u#-1または-u#4294967295を指定してsudoを呼び出すと、悪意のあるユーザーは、sudoersが前述の条件を満たしている限り、rootとして任意のコマンドを実行できます。

それに加えて、悪意のあるsudo操作はsyslog機能を介して正しくログを記録しません。 ルートとしてログに記録されるはずでしたが、-1または4294967295であることが判明しました。

テストユーザーを作成して、/ etc / sudoersファイルに次の設定を書き込みましょう。

# User privilege specification

root   ALL=(ALL:ALL) ALL

test   ALL=(ALL, !root) /usr/bin/id

理論的には、このテストユーザーは、明示的に禁止されているルートを除くすべてのユーザーとしてidコマンドを実行できます。

sudoersアクセスをテストできます。

test@1425485fcefd:/$ sudo -u root id

Sorry, user test is not allowed to execute '/usr/bin/id' as root on 1425485fcefd.

予想どおり、rootユーザーに直接なりすますことは許可されていません。

test@1425485fcefd:/$ sudo -u#1000 id

uid=1000(test) gid=1000(test) groups=1000(test)

別の(通常の)ユーザーになりすまして、そのIDでidを実行することができます。私たちの構成によれば、これも同様に予期されます。

では、試してみましょう。

test@1425485fcefd:/$ sudo -u#-1 id

uid=0(root) gid=0(root) groups=0(root)

ビンゴ! sudoersの構成で許可されていない場合、rootとしてコマンドを実行できました。

syslogにあるログエントリは次のようになります。

Oct 15 10:51:02 1425485fcefd sudo:    test : TTY=console ; PWD=/ ; USER=#-1 ; COMMAND=/usr/bin/id

CVE-2019-14287を検出する

この脆弱性の悪用の試みを検出することが基本です。システムにすぐにパッチを適用できない場合は、攻撃を検出し、潜在的に防ぐことができます。 脆弱性の影響を受けるシステムとコンテナを既にアップグレードしている場合、私たちの環境で悪意のあるアクティビティをキャッチできるように、あらゆる試みを検出することは依然として非常に興味深いです。

Falcoは、コンテナーおよびクラウドネイティブアプリの侵入および異常検出のためのCNCFオープンソースプロジェクトです。 稼働しているKubernetesを保護し、ホストおよびコンテナレベルの両方でこのアクティビティを検出するために使用できます。 Falcoは、カスタマイズ可能な一連のルールによって定義しています。そして、異常な振る舞いを検出すると、セキュリティイベントを生成します。

Falcoの利点の1つは、強力で柔軟なルール言語を活用することです。 この種の動作をフィルタリングするルールをすばやく簡単に作成できるため、誰かがsudo CVE-2019-14287を悪用しようとしていることを検出できます。

以下は、sudo CVE-2019-14287を検出するために作成されたルールです。

- rule: Sudo Potential bypass of Runas user restrictions (CVE-2019-14287)

desc: When sudo is configured to allow a user to run commands as an arbitrary user via the ALL keyword in a Runas specification, it is possible to run commands as root by specifying the user ID -1 or 4294967295. This can be used by a user with sufficient sudo privileges to run commands as root even if the Runas specification explicitly disallows root access as long as the ALL keyword is listed first in the Runas specification

condition: >

   spawned_process and

   proc.name="sudo" and

   (proc.cmdline contains "-u#-1" or proc.cmdline contains "-u#4294967295")

output: "Detect sudo exploit (CVE-2019-14287) (user=%user.name command=%proc.cmdline container=%container.info)"

priority: CRITICAL

tags: [filesystem, mitre_privilege_escalation]

ルールがエクスプロイトの試みを検出すると、Falcoは次のような通知をトリガーします。

00:51:26.935975300: Critical Detect sudo exploit (CVE-2019-14287) (user=ubuntu command=sudo -u#4294967295 id -u container=host (id=host))

Falcoの通知は、ロギングシステム、選択したSIEM、または他の複数の宛先に転送できます。

Sysdig Secureは、オープンソースのFalco検出エンジンを拡張して、Kubernetesワークロードのライフサイクル全体にわたる包括的なセキュリティを提供します。 Sysdig内でもまったく同じルールを使用できます。

n01.png

CVE-2019-14287の悪用の試みを示すイベントが検出されました

n02.png

Sysdig Secureポリシーエディターに読み込まれたFalcoルール

さらに、Sysdig Secureでは次のことが可能になります。

  • Falcoの検出機能を予防と対応で拡張することにより、脅威をブロック
  • 自動プロファイリング、柔軟なポリシーエディター、および集中管理により、ランタイムFalcoポリシーを作成および更新する負担を軽減
  • セキュリティモニタリングに加えて、イメージスキャン、フォレンジック/インシデント対応、および監査を使用して、DevOpsプロセス全体にセキュリティを埋め込みます
  • すぐに使用可能なチェックと、コンプライアンス標準にマップするランタイムポリシーを使用してコンプライアンスを検証

CVE-2019-14287に対して脆弱なsudoパッケージの検出や、また、新規のデプロイメントの前にCI / CDパイプラインまたはレジストリで影響を受ける新しいコンテナーをブロックし、Kubernetesクラスター内の悪意のあるコンテナーをブロックする実稼働環境で既に実行されているコンテナー全体でこの脆弱性の悪用の試みに対応も可能となります。

n03.png

sudoのバージョンに対して影響を受ける全ての稼働中のコンテナをSysdig Secureで特定し、レポートすることもできます。

まとめ

CVE-2019-14287の脆弱性により、悪意のあるユーザーは、特定のsudoers構成をローカルで悪用して、他の非特権ユーザーとしてコマンドを実行し、rootとしてコマンドを実行できます。

Falcoでは、エクスプロイトの動作パターンに一致するカスタムルールを記述することにより、この種のアクティビティをフィルタリングおよび検出し、ホストおよびコンテナ全体の悪意のあるアクティビティに関して警告することができます。 Sysdig Secureは、この機能をさらに一歩進めて、これらの攻撃に対応し、それらをブロックし、sudo脆弱性を持つ影響を受けた稼働中のコンテナをレポートできるようにします。

最近の投稿

カテゴリー

アーカイブ

ご質問・お問い合わせはこちら

top