Closed24

dockerの脆弱性スキャンの結果を分析する

ピン留めされたアイテム
starnishistarnishi

ある dockerイメージの脆弱性スキャンの結果、CRITICAL1, HIGH8が見つかった。
これらについて分析した。

ピン留めされたアイテム
starnishistarnishi

サマリ

名前 パッケージ 重要度 Debianトリアージ 見解・結論 ステータス
CVE-2019-19814 linux:5.10.127-1 CRITICAL no-dsa / Minor issue 対応しない クローズ
CVE-2019-8457 db5.3:5.3.28+dfsg1-0.8 HIGH no-dsa / Minor issue 対応しない クローズ
CVE-2022-24765 git:1:2.30.2-1 HIGH no-dsa / Minor issue 対応しない クローズ
CVE-2022-29187 git:1:2.30.2-1 HIGH no-dsa / Minor issue 対応しない クローズ
CVE-2022-1679 linux:5.10.127-1 HIGH なし 対応しない(特定のワイヤレス製品に関する問題なため影響が小さい) クローズ
CVE-2013-7445 linux:5.10.127-1 HIGH ignored / Minor issue, requires invasive changes 対応しない クローズ
CVE-2021-3847 linux:5.10.127-1 HIGH なし 対応しない(アーキテクチャ的に影響が小さい) クローズ
CVE-2019-15794 linux:5.10.127-1 HIGH なし(fixed bookworm) 対応しない(アーキテクチャ的に影響が小さい) クローズ
CVE-2021-39686 linux:5.10.127-1 HIGH なし(fixed buster,bookworm) bullseyeがkernel 5.15系を採用しないと解決しないのかも。 オープン
starnishistarnishi

CVE-2019-8457

名前 パッケージ 重要度 説明 説明(日本語訳)
CVE-2019-19814 linux:5.10.127-1 CRITICAL In the Linux kernel 5.0.21, mounting a crafted f2fs filesystem image can cause __remove_dirty_segment slab-out-of-bounds write access because an array is bounded by the number of dirty types (8) but the array index can exceed this. Linux カーネル 5.0.21 では、巧妙に細工された f2fs ファイルシステム イメージをマウントすると、__remove_dirty_segment slab-out-of-bounds 書き込みアクセスが発生する可能性があります。これは、配列がダーティ タイプの数 (8) によって制限されているにもかかわらず、配列インデックスがこれを超える可能性があるためです。

debianのsecurity trackerをチェックする。
https://security-tracker.debian.org/tracker/CVE-2019-19814

  • 対応状況(bullseye)
    • vulnerable(脆弱性)
  • Notes
    • [bullseye] - linux <no-dsa> (Minor issue)

結論

Debianはbullseyeは本脆弱性に関して未対応。しかし、no-dsa(直接悪用されにくい問題。インフラに介入されないと起きない問題)なのでマイナー問題と判断。対応は未定。

starnishistarnishi

Debianは全てのセキュリティ問題に対応するわけではなく、問題によってトリアージして、

CVE があっても、すぐにパッケージの更新が行われるわけではありません。

  • 修正することが緊急ではないが、後で修正される可能性があるマイナーな問題である場合、「postponed」というタグを付けます。LTS にはポイントリリースがないので、これはより深刻な問題がある場合や、 小さな問題がたくさん積み重なっている場合を意味します。
  • 修正しない正当で強い理由がある場合 (例: ソースが未コンパイル、未出荷である、重要でなくバックポートが難しい、重要でなく逆依存に影響する API 変更が必要)、「ignored」タグを付けます。
  • LTS リリースのバージョンが影響を受けない場合(通常、脆弱性のあるコードがそのバージョンに存在しないため)、"not-affected" のタグを付けます。関連コミットを参照するのは良い習慣であり、良いテストです(cf. data/CVE/list の "NOTE: Introduced" )、脆弱性コードはしばしば上流のリリース間で名前が変更されたり分割されています。
  • そのパッケージが LTS リリースでサポートされていない場合、「終了」タグを付けます (Stretch のサポートされていないパッケージの一覧は、現在 debian-security-support:security-support-ended.deb9 で見ることができます。このファイルを更新し、必要なら dla-needed.txt に debian-security-support を追加してください -- README.source を参照してください)。
  • 重要度(severity)が「重要でない(unimportant)」に設定されている(これはめったに使われないはずで、通常セキュリティチームによって行われます)。
  • no-dsa" は "postponed" と "ignored" を含む、より曖昧なタグです。Debian セキュリティチームは、インターネットに面していない脆弱性を 「minor」 とマークする傾向があります。これは、直接悪用されることはないものの、 攻撃者が被害者のインフラに片足を踏み入れたときに、より大きな侵入を許してしまうからです。

引用: https://wiki.debian.org/LTS/Development

ざっくりいうと

  • postponed
    • 緊急ではなく、後で修正されるかもしれないマイナーな問題。ただし、LTSはポイントリリースがないので小さな問題が積み重なっている場合や深刻な問題がある場合もある
  • ignored
    • 修正しない正当で強い理由がある
  • not-affected
    • LTSリリースバージョンとは関係ない問題
  • no-dsa
    • 直接悪用されにくい問題。インフラに介入されないと起きない問題
starnishistarnishi

CVE-2019-8457

名前 パッケージ 重要度 説明 説明(日本語訳)
CVE-2019-8457 db5.3:5.3.28+dfsg1-0.8 HIGH SQLite3 from 3.6.0 to and including 3.27.2 is vulnerable to heap out-of-bound read in the rtreenode() function when handling invalid rtree tables. 3.6.0 から 3.27.2 までの SQLite3 は、無効な rtree テーブルを処理するときに、rtreenode() 関数でヒープ範囲外読み取りに対して脆弱です。

debianのsecurity trackerをチェックする。
https://security-tracker.debian.org/tracker/CVE-2019-8457

  • 対応状況(bullseye)
    • vulnerable(脆弱性)
  • Notes
    • [bullseye] - db5.3 <no-dsa> (Minor issue)

結論

Debianはbullseyeは本脆弱性に関して未対応。しかし、no-dsa(直接悪用されにくい問題。インフラに介入されないと起きない問題)なのでマイナー問題と判断。対応は未定。

starnishistarnishi

CVE-2022-24765

名前 パッケージ 重要度 説明 説明(日本語訳)
CVE-2022-24765 git:1:2.30.2-1 HIGH Git for Windows is a fork of Git containing Windows-specific patches. This vulnerability affects users working on multi-user machines, where untrusted parties have write access to the same hard disk. Those untrusted parties could create the folder C:\.git, which would be picked up by Git operations run supposedly outside a repository while searching for a Git directory. Git would then respect any config in said Git directory. Git Bash users who set GIT_PS1_SHOWDIRTYSTATE are vulnerable as well. Users who installed posh-gitare vulnerable simply by starting a PowerShell. Users of IDEs such as Visual Studio are vulnerable: simply creating a new project would already read and respect the config specified in C:\.git\config. Users of the Microsoft fork of Git are vulnerable simply by starting a Git Bash. The problem has been patched in Git for Windows v2.35.2. Users unable to upgrade may create the folder .git on all drives where Git commands are run, and remove read/write access from those folders as a workaround. Alternatively, define or extend GIT_CEILING_DIRECTORIES to cover the parent directory of the user profile, e.g. C:\Users if the user profile is located in C:\Users\my-user-name. Git for Windows は、Windows 固有のパッチを含む Git のフォークです。この脆弱性は、信頼されていない関係者が同じハード ディスクへの書き込みアクセス権を持つマルチユーザー マシンで作業しているユーザーに影響を与えます。これらの信頼できない関係者は、Git ディレクトリを検索しているときに、おそらくリポジトリの外部で実行される Git 操作によって取得されるフォルダ「C:.git」を作成する可能性があります。 Git は、その Git ディレクトリ内のすべての構成を尊重します。 「GIT_PS1_SHOWDIRTYSTATE」を設定した Git Bash ユーザーも脆弱です。 posh-git をインストールしたユーザーは、PowerShell を起動するだけで脆弱になります。 Visual Studio などの IDE のユーザーは脆弱です。単に新しいプロジェクトを作成するだけで、C:\.git\config で指定された構成が既に読み取られ、尊重されます。 Git の Microsoft フォークのユーザーは、Git Bash を開始するだけで脆弱になります。この問題は、Git for Windows v2.35.2 で修正されています。アップグレードできないユーザーは、回避策として、Git コマンドが実行されるすべてのドライブにフォルダー「.git」を作成し、それらのフォルダーから読み取り/書き込みアクセスを削除することができます。または、 GIT_CEILING_DIRECTORIES を定義または拡張して、ユーザー プロファイルの parent ディレクトリをカバーします。ユーザープロファイルが「C:\Users\my-user-name」にある場合は「C:\Users」。

debianのsecurity trackerをチェックする。
https://security-tracker.debian.org/tracker/CVE-2022-24765

  • 対応状況(bullseye)
    • vulnerable(脆弱性)
  • Notes
    • [bullseye] - git <no-dsa> (Minor issue)

結論

Debianはbullseyeは本脆弱性に関して未対応。しかし、no-dsa(直接悪用されにくい問題。インフラに介入されないと起きない問題)なのでマイナー問題と判断。対応は未定。

starnishistarnishi

CVE-2022-29187

名前 パッケージ 重要度 説明 説明(日本語訳)
CVE-2022-29187 git:1:2.30.2-1 HIGH Git is a distributed revision control system. Git prior to versions 2.37.1, 2.36.2, 2.35.4, 2.34.4, 2.33.4, 2.32.3, 2.31.4, and 2.30.5, is vulnerable to privilege escalation in all platforms. An unsuspecting user could still be affected by the issue reported in CVE-2022-24765, for example when navigating as root into a shared tmp directory that is owned by them, but where an attacker could create a git repository. Versions 2.37.1, 2.36.2, 2.35.4, 2.34.4, 2.33.4, 2.32.3, 2.31.4, and 2.30.5 contain a patch for this issue. The simplest way to avoid being affected by the exploit described in the example is to avoid running git as root (or an Administrator in Windows), and if needed to reduce its use to a minimum. While a generic workaround is not possible, a system could be hardened from the exploit described in the example by removing any such repository if it exists already and creating one as root to block any future attacks. Git は分散リビジョン管理システムです。 バージョン 2.37.1、2.36.2、2.35.4、2.34.4、2.33.4、2.32.3、2.31.4、および 2.30.5 より前の Git は、すべてのプラットフォームで権限昇格に対して脆弱です。 疑いを持たないユーザーは、CVE-2022-24765 で報告された問題の影響を受ける可能性があります。たとえば、ユーザーが所有する共有 tmp ディレクトリに root として移動すると、攻撃者が git リポジトリを作成する可能性があります。 バージョン 2.37.1、2.36.2、2.35.4、2.34.4、2.33.4、2.32.3、2.31.4、および 2.30.5 には、この問題に対するパッチが含まれています。 例で説明されているエクスプロイトの影響を受けないようにする最も簡単な方法は、root (または Windows では管理者) として git を実行することを避け、必要に応じてその使用を最小限に抑えることです。 一般的な回避策は不可能ですが、そのようなリポジトリが既に存在する場合は削除し、将来の攻撃をブロックするためにルートとして作成することで、例で説明したエクスプロイトからシステムを強化することができます。

debianのsecurity trackerをチェックする。
https://security-tracker.debian.org/tracker/CVE-2022-29187

  • 対応状況(bullseye)
    • vulnerable(脆弱性)
  • Notes
    • [bullseye] - git <no-dsa> (Minor issue)

結論

Debianはbullseyeは本脆弱性に関して未対応。しかし、no-dsa(直接悪用されにくい問題。インフラに介入されないと起きない問題)なのでマイナー問題と判断。対応は未定。

starnishistarnishi

CVE-2022-1679

名前 パッケージ 重要度 説明 説明(日本語訳)
CVE-2022-1679 linux:5.10.127-1 HIGH A use-after-free flaw was found in the Linux kernel’s Atheros wireless adapter driver in the way a user forces the ath9k_htc_wait_for_target function to fail with some input messages. This flaw allows a local user to crash or potentially escalate their privileges on the system. ユーザーが ath9k_htc_wait_for_target 関数をいくつかの入力メッセージで強制的に失敗させる方法で、Linux カーネルの Atheros ワイヤレス アダプター ドライバーに解放後の使用の欠陥が見つかりました。 この欠陥により、ローカル ユーザーがクラッシュしたり、システム上で権限を昇格させたりする可能性があります。

debianのsecurity trackerをチェックする。
https://security-tracker.debian.org/tracker/CVE-2022-1679

  • 対応状況(bullseye)
    • vulnerable(脆弱性)
  • Notes
    • なし

結論

Debianは脆弱性の対応は各ディストリビューションに対して行なっていない。また、トリアージ情報はない。
本脆弱性は、特定のワイヤレス製品に関する問題なので、ECS上で動かしている分には影響は小さいと判断。

starnishistarnishi

CVE-2013-7445

名前 パッケージ 重要度 説明 説明(日本語訳)
CVE-2013-7445 linux:5.10.127-1 HIGH The Direct Rendering Manager (DRM) subsystem in the Linux kernel through 4.x mishandles requests for Graphics Execution Manager (GEM) objects, which allows context-dependent attackers to cause a denial of service (memory consumption) via an application that processes graphics data, as demonstrated by JavaScript code that creates many CANVAS elements for rendering by Chrome or Firefox. 4.x までの Linux カーネルの Direct Rendering Manager (DRM) サブシステムは、Graphics Execution Manager (GEM) オブジェクトの要求を誤って処理します。これにより、コンテキスト依存の攻撃者が、グラフィック データを処理するアプリケーションを介してサービス拒否 (メモリ消費) を引き起こすことができます。 、Chrome または Firefox でレンダリングするための多くの CANVAS 要素を作成する JavaScript コードによって示されます。

debianのsecurity trackerをチェックする。
https://security-tracker.debian.org/tracker/CVE-2013-7445

  • 対応状況(bullseye)
    • vulnerable(脆弱性)
  • Notes
    • [bullseye] - linux <ignored> (Minor issue, requires invasive changes)

結論

Debianはbullseyeは本脆弱性に関して未対応。しかし、ignored(修正しない正当で強い理由がある場合)としており、対応の予定はない。理由としては、マイナー問題かつ侵襲的な変更を必要とするため)。

starnishistarnishi

CVE-2021-3847

名前 パッケージ 重要度 説明 説明(日本語訳)
CVE-2021-3847 linux:5.10.127-1 HIGH An unauthorized access to the execution of the setuid file with capabilities flaw in the Linux kernel OverlayFS subsystem was found in the way user copying a capable file from a nosuid mount into another mount. A local user could use this flaw to escalate their privileges on the system. ユーザーが nosuid マウントから別のマウントに対応ファイルをコピーする方法で、Linux カーネル OverlayFS サブシステムの機能の欠陥を伴う setuid ファイルの実行への不正アクセスが発見されました。 ローカル ユーザーはこの欠陥を利用して、システム上での権限を昇格させることができました。

debianのsecurity trackerをチェックする。
https://security-tracker.debian.org/tracker/CVE-2021-3847

  • 対応状況(bullseye)
    • vulnerable(脆弱性)
  • Notes
    • なし

結論

Debianは脆弱性の対応は各ディストリビューションに対して行なっていない。また、トリアージ情報はない。
本脆弱性は、ファイルシステムマウント時の脆弱性であり、ECS上で動かしているアプリケーションはs3及びデータベースマネージドサービスを利用しておりファイルシステムマウントは行なっていないため影響は小さいと判断。

starnishistarnishi

CVE-2019-15794

名前 パッケージ 重要度 説明 説明(日本語訳)
CVE-2019-15794 linux:5.10.127-1 HIGH Overlayfs in the Linux kernel and shiftfs, a non-upstream patch to the Linux kernel included in the Ubuntu 5.0 and 5.3 kernel series, both replace vma->vm_file in their mmap handlers. On error the original value is not restored, and the reference is put for the file to which vm_file points. On upstream kernels this is not an issue, as no callers dereference vm_file following after call_mmap() returns an error. However, the aufs patchs change mmap_region() to replace the fput() using a local variable with vma_fput(), which will fput() vm_file, leading to a refcount underflow. Linux カーネルの Overlayfs と、Ubuntu 5.0 および 5.3 カーネル シリーズに含まれる Linux カーネルへの非アップストリーム パッチである shiftfs は、どちらも mmap ハンドラの vma->vm_file を置き換えます。 エラーが発生すると、元の値は復元されず、参照は vm_file が指すファイルに置かれます。 アップストリーム カーネルでは、call_mmap() がエラーを返した後、呼び出し元が vm_file を逆参照しないため、これは問題ではありません。 ただし、aufs パッチは mmap_region() を変更して、ローカル変数を使用する fput() を vma_fput() に置き換えます。これにより、fput() vm_file が実行され、refcount アンダーフローが発生します。

debianのsecurity trackerをチェックする。
https://security-tracker.debian.org/tracker/CVE-2019-15794

  • 対応状況(bullseye)
    • vulnerable(脆弱性)
    • 次期バージョン(bookworm)はfixed(解決済)
  • Notes
    • [stretch] - linux <not-affected> (overlayfs passes through mmap)
    • [jessie] - linux <not-affected> (overlayfs not present)

結論

Debianはbullseyeは本脆弱性に関して未対応。次期バージョン(bookworm)では解決済み。また、トリアージ情報はない。本脆弱性は、ファイルシステムマウント時の脆弱性であり、ECS上で動かしているアプリケーションはs3及びデータベースマネージドサービスを利用しておりファイルシステムマウントは行なっていないため影響は小さいと判断。

starnishistarnishi

CVE-2021-39686

名前 パッケージ 重要度 説明 説明(日本語訳)
CVE-2021-39686 linux:5.10.127-1 HIGH In several functions of binder.c, there is a possible way to represent the wrong domain to SELinux due to a race condition. This could lead to local escalation of privilege with no additional execution privileges needed. User interaction is not needed for exploitation.Product: AndroidVersions: Android kernelAndroid ID: A-200688826References: Upstream kernel bind.c のいくつかの関数では、競合状態が原因で SELinux に対して間違ったドメインを表す可能性があります。 これにより、追加の実行権限を必要とせずに、ローカルで権限が昇格する可能性があります。 悪用にユーザーの介入は必要ありません。製品: Androidバージョン: Android カーネルAndroid ID: A-200688826参照: アップストリーム カーネル

debianのsecurity trackerをチェックする。
https://security-tracker.debian.org/tracker/CVE-2021-39686

  • 対応状況(bullseye)
    • vulnerable(脆弱性)
    • buster、及び、次期バージョン(bookworm)はfixed(解決済)
  • Notes(トリアージ情報)
    • なし
  • その他
    • bullseyeが採用しているカーネルは5.10系
    • 5系で対応しているバージョンは5.15.15-1

結論

Debianはbullseyeは本脆弱性に関して未対応。buster及び次期バージョン(bookworm)では解決済み。また、トリアージ情報はない。bullseyeがkernel 5.15系を採用しないと解決しないのかも。

starnishistarnishi

CI上での脆弱性スキャンの実行

CVEなどの脆弱性データベースは日々更新されているため、同じコンテナイメージてあっても、新しいデータベースで定期的に脆弱性スキャンが必要。また、コンテナイメージが変わる場合も脆弱性スキャンが必要。ただし、頻度としては非常に低いため、リリースプロセスに脆弱性スキャンを組み込むか、任意のタイミングでの実行にするかは検討が必要。

  • リリースビルド時に脆弱性スキャンを実行する
  • 月1回、脆弱性スキャンを実行する

にする。脆弱性スキャンツールとしては非常に導入が簡単なTrivyを採用し、CircleCIのプロセスに組み込む。

Trivyの実行オプションについては、重要度をCRITICAL、HIGHに絞るため --severity CRITICAL,HIGH を指定する。また、アップストリームプロジェクトでパッチが適用されていないものはこちらでも解決ができないので予め非表示になるように --ignore-unfixed を付けることにする。

starnishistarnishi

コンテナイメージのバージョンアップと脆弱性スキャンの対応プロセス

今回対象にしたコンテナイメージは、 php-8.0-fpm-bullseye だった。このコンテナイメージはphpのバージョンアップが含まれた php-8.0.22-fpm-bullseye が公開されていた。

php-8.0-fpm-bullseyeの場合、 ignore-unfixed を指定すると、検出される脆弱性は0件になる。
php-8.0.22-fpm-bullseyeの場合、 ignore-unfixed を指定すると、検出される脆弱性は1件になる。

調査している間に、8.0.23 や 8.1系のコンテナイメージも公開されていた。

ignore-unfixed でスキャンした場合、

  • php-8.0-fpm-bullseye 0件
  • php-8.0.22-fpm-bullseye 1件
  • php-8.0.23-fpm-bullseye 0件
  • php-8.1-fpm-bullseye 0件
  • php-8.1.10-fpm-bullseye 0件

従って、8.0系ならphp-8.0.23-fpm-bullseye、8.1系ならphp-8.1.10-fpm-bullseye(DIGESTは8.1と同じ) のどちらかが選択肢になりそう。

starnishistarnishi
  • ignore-unfixedはアップストリームプロジェクトでパッチ未適用の問題(ようは解決されておらず、こちらでも対処しようがない問題)
  • ignore-unfixedをつけて検出された問題はアップストリームプロジェクトでパッチ適用されている問題で、何らかのコンテナイメージが公開されている可能性がある
  • よって、新たに公開されたコンテナイメージを脆弱性スキャンし、脆弱性が解決するようなら、コンテナイメージをバージョンアップを提案検討する

という流れ

starnishistarnishi

レイヤーとしては、
アプリコンテナイメージ
FROM php:8.0-fpm-bullseye
FROM debian:bullseye-slim

  • リリース時にコンテナイメージの脆弱性チェックを行う
    • 新しいライブラリ・パッケージ・ミドルウェアなどの導入あり
    • ライブラリ・パッケージ・ミドルウェアのバージョンアップあり
  • 定期的(月1など)にコンテナイメージの脆弱性チェックを行う
    • 最新の脆弱性データベースでチェックを行う
  • 依頼ベースの脆弱性チェック
    • jpcertなどの注意喚起によりセキュリティチームなどからの脆弱性チェック依頼

FROM php:8.0-fpm-bullseye FROM debian:bullseye-slimはアップストリームの状況を見つつ、対応する。
アプリコンテナイメージは、アプリ用に導入したライブラリ・パッケージ・ミドルウェアに問題がある場合に、アプリチームが個別に対応する。

starnishistarnishi

vueとかs3に上げてるフロントエンドの脆弱性はどうやってチェックするのだろう

starnishistarnishi

docker-php-ext-installはphpのリポジトリから取得してそう

このスクラップは2023/06/13にクローズされました