KimaiのDockerに脆弱性、デフォルトのAPP_SECRETが露見しアカウント乗っ取りが可能に

公式のDockerイメージでKimaiを運用しているユーザーは、重大な脆弱性CVE-2026-52824、GHSA-jr9p-4h4j-6c58として追跡)が発見されたことを受け、早急にインストールを更新するよう強く求められています。

この脆弱性は、公開されて誰でも知り得るアプリケーションシークレットが使われていることが原因で、アカウント乗っ取りのリスクにインストール環境をさらします。影響を受けるのはKimaiバージョン2.57.0以前で、バージョン2.58.0で修正済みです。

脆弱性アセスメントサービス

セキュリティ研究者のAzureADTrent氏が報告し、KimaiのメンテナーであるKevin Papst氏が6月11日に公開したこの問題は、公式コンテナイメージの安全でないデフォルト設定に起因します。

KimaiのDocker脆弱性

デフォルトの環境変数は`APP_SECRET=change_this_to_something_unique`と定義されており、本来はデプロイ時に置き換えられることを想定しています。

この値はSymfonyにおけるアプリケーションの`kernel.secret`として機能し、HMACで保護されたセキュリティ関連の値を生成・検証する際に使われる暗号鍵です。しかし、KimaiのDockerエントリーポイントはこの安全でないデフォルト値を検証したり置き換えたり、あるいはこの値のままでは起動を拒否したりすることをせず、潜在的な脆弱性につながっていました。

その結果、インターネットからアクセス可能で、かつデフォルトのDocker設定のまま起動されているKimaiのデプロイメントでは、予測可能な暗号鍵が露見してしまう可能性があります。

未認証の攻撃者は、この既知の値を悪用してセキュリティ関連のデータを偽造し、super_adminアカウントを含む他のユーザーになりすまして認証を突破できる可能性があります。

この脆弱性を悪用するには、攻撃者は標的のユーザー名を把握したうえで、そのアカウントIDを特定または推測し、二要素認証が有効になっていないアカウントを標的にする必要があります。

Symfonyは、KIMAI_REMEMBERというリメンバーミー用Cookie、LoginLinkの署名、パスワードリセット用URL、そしてCSRFトークンなど、複数のセキュリティ関連コンポーネントの署名にこの影響を受けたシークレットを利用しています。

Kimaiのユーザーidは11から始まる連番の整数であるため、最初の管理者アカウントにはID 11が割り当てられていることが多くなっています。さらに、ユーザーIDがURLやAPIレスポンスに露出することもあり、攻撃者が特権アカウントを狙いやすくなっています。

この問題は重大(critical)に分類されており、CWE-1188「安全でないデフォルト値によるリソースの初期化」に対応付けられています。この脆弱性は、コンテナセキュリティにおいてよくある問題を浮き彫りにしています。すなわち、本番運用向けのイメージに予測可能なシークレットを組み込んだまま出荷し、起動時のシークレットローテーションや安全な初期化を強制していないという問題です。

これを受けてKimaiバージョン2.58.0では、Dockerの初期化プロセスが変更され、環境変数でシークレットが指定されていない場合には`bin2hex(random_bytes(32))`を用いてランダムな`APP_SECRET`を自動生成するようになりました。生成されたシークレットは`/opt/kimai/var/data/.appsecret`に保存されます。

同時に、エントリーポイントは`/opt/kimai/.env.local`を作成し、管理者が指定した値、または新たに生成されたシークレットのいずれかを格納します。プロジェクト側はDockerfileから安全でない`APP_SECRET`の値を削除し、デプロイごとに固有のランダムなシークレットを設定する必要性を強調するようドキュメントを更新しました。

さらにKimaiは、関連するアドバイザリ(GHSA-m492-gv72-xvxj)においてLoginLinkの値のエントロピーを高めています。この変更により、旧バージョンのデプロイメントがハードコードされたデフォルトのシークレットを使用しているというだけの理由で、攻撃者がLoginLinkを生成できてしまう事態を防ぎます。ただし、管理者はこの変更をパッチ適用の代替とみなすべきではありません。

各組織は、KimaiのDockerデプロイメントを直ちにバージョン2.58.0以降にアップグレードし、強力かつ一意な`APP_SECRET`を明示的に設定するとともに、侵害の可能性があるインスタンスについてはシークレットをローテーションする必要があります。

また管理者は、可能な限りアクティブなセッションを無効化し、管理者アカウントや認証関連のアクティビティを確認し、二要素認証を有効にし、インターネットへの公開が不要なKimaiインスタンスへの外部アクセスを制限することも求められます。

 脅威検知と迅速な調査を加速し、SOCを強化しましょう。 -> ANY.RUNをSOCに統合する こちらから。

ネットワークセキュリティ

翻訳元: https://gbhackers.com/kimai-docker-vulnerability-exposes-default-app_secret/

ソース: gbhackers.com