ククログ

株式会社クリアコード > ククログ > 2026 > コンテナイメージで検出された脆弱性をDebianのポイントリリースで修正してもらう方法

コンテナイメージで検出された脆弱性をDebianのポイントリリースで修正してもらう方法

ソフトウェアの実行環境を分離できることから、コンテナイメージを利用すると便利なことが多々あります。 Linuxディストリビューションの配布するコンテナイメージをベースイメージとしてカスタマイズして 利用するというのもよくある利用形態の一つです。

昨今の多数の脆弱性報告にともない、利用しているコンテナイメージをスキャンするとそれらの脆弱性が大量に検出されるというのも珍しくなくなってきました。

今回はベースイメージとしてDebianのコンテナイメージを利用している際に検出された脆弱性を、Debian側で修正してもらうにはどうするのがよいのかを紹介します。

Fluentdのコンテナイメージの事例

クリアコードでは、Fluentdの開発に継続的に参加しています。 また、利用しやすいようにFluentdのコンテナイメージのメンテナンスもしています。

Fluentdのコンテナイメージでは、Rubyのコンテナイメージをベースイメージに採用しており、それはさらにDebianのコンテナイメージを元にしています。 したがって、Fluentdのコンテナイメージを脆弱性スキャナでスキャンした場合、派生元のコンテナイメージの脆弱性も多数検出されることがあります。

Fluentdで使っていないコンポーネントで多数検出されることもあり、実運用では適宜フィルタすることになります。 とはいえ、フィルタが不要な状態のほうが健全です。

trixie-slimのコンテナ脆弱性スキャン結果

CVEの評価と、Debian側の評価のずれ

CVEが公開されているからといって、必ずしもすぐにその脆弱性がディストリビューション側で 修正されるとは限りません。

脆弱性が報告されると、Debianのセキュリティチームが深刻度を評価します。 深刻と判断されたものはDebian Security Advisory(DSA)が発行され、 security.debian.org経由ですぐに更新が配布されます。 一方、深刻度が低いと判断されたものにはDSAを発行せず、 Debianのポイントリリース1での修正に回されるものがあります。

例えば、CVE-2026-12087はSeverityが9.1 (Critical)と評価されています。 しかしDebianのセキュリティトラッカーを見ると、CVE-2026-12087は forkyおよびsidではperl 5.42.3-1/libsocket-perl 2.041-1ですでに修正されているものの、trixieではマイナーなissueとして扱うことになっています。

  • [trixie] - libsocket-perl <no-dsa> (Minor issue)
  • [trixie] - perl <no-dsa> (Minor issue)

その場合には、Debianのリリースチームによる定期的なポイントリリースに含めてもらわなければなりません。

CVE-2026-12087 security trackerの内容

ポイントリリースに修正をいれてもらう準備

CVE-2026-12087を例に、修正してもらうための事前準備を説明します。

  • trixieは安定版なので、脆弱性のみを最小限のパッチで修正することが求められる
  • trixieにアップロードするには、Debianリリースチームによる承認が必要になる
  • Debianリリースチームとのやりとりはバグ登録でおこなう

実際どのように審査がなされているかは、release.debian.orgを対象にしたバグ一覧のうち、trixie-pu:が件名に含まれているものを参照するとよいです。 trixie-pu:とは、trixie proposed-updatesのことで、次期ポイントリリースへの更新をリリースチームに提案するときの規約です。

perl/libsocket-perlを同時に修正するのが望ましいのですが、libsocket-perlを先に修正することでも脆弱性は塞げる(Perl本体のコアモジュールよりも優先して修正したSocketモジュールが読み込まれる)ことから、 libsocket-perlの修正をバックポートしてみることにしました。2

次のような流れで修正を試みました。

  • まずは最新の状況を確認するため、libsocket-perlのリポジトリを確認する
  • セキュリティトラッカーの情報をもとにパッチをバックポートし、リグレッション防止のためのテストを追加した
  • メンテナーによる脆弱性対応状況が不明だったので、pkg-perl-maintainers というメーリングリストに問い合わせメールを投げた

trixie-pu:に投げるつもりだったバグ報告の下書きは次のような内容です。

To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: trixie-pu: package libsocket-perl/2.038-1+deb13u1

Package: release.debian.org
Severity: normal
Tags: trixie
X-Debbugs-Cc: libsocket-perl@packages.debian.org, kenhys@xdump.org, pkg-perl-maintainers@lists.alioth.debian.org
Control: affects -1 + src:libsocket-perl
User: release.debian.org@packages.debian.org
Usertags: pu

Please consider accepting libsocket-perl 2.038-1+deb13u1 into trixie.

[ Reason ]

The update fixes CVE-2026-12087, an out-of-bounds heap
read in pack_ip_mreq_source().

already fixed in unstable/forky as version 2.041-1.

The security team marked it <no-dsa> (minor issue) for trixie [1], so
a point release seems the appropriate route.

Although the practical impact is low, NVD rates it CVSS v3 9.1 [2],
which means trixie users running vulnerability scanners see it flagged
as critical and have to carry a local exception for the whole trixie
lifetime. 
Shipping the one-line bounds check removes that burden, and the
backporting risk is minimal.

[1] https://security-tracker.debian.org/tracker/CVE-2026-12087
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-12087

[ Impact ]

CVE-2026-12087: if a vulnerable third-party application passes
attacker-controlled data to pack_ip_mreq_source(), adjacent heap
memory could be disclosed to the caller.

[ Tests ]

- Built successfully in a trixie environment.
- Integrated package test suite (t/cve-2026-12087.t) passes during build.

  make[2]: Entering directory '/build/libsocket-perl-2.038'
  "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Socket.bs blib/arch/auto/Socket/Socket.bs 644
  PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/li
  b', 'blib/arch')" t/*.t
  t/cve-2026-12087.t .. 
  1..1
  ok 1 - pack_ip_mreq_source rejects short source
  ok
  t/getaddrinfo.t ..... 

- t/cve-2026-12087.t fails without CVE-2026-12087.patch. 
  you can ensure that with the following steps manually.
  (In production, patch will be applied in debian/series)
  
  $ dget -ux http://deb.debian.org/debian/pool/main/libs/libsocket-perl/libsocket-perl_2.038-1.dsc
  $ cd libsocket-perl-2.038
  $ patch -p1 < ../libsocket-perl_2.038-1+deb13u1.debdiff
  $ perl Makefile.PL
  $ patch -p1 < debian/patches/CVE-2026-12087-test.patch
  $ make test TEST_FILES=t/cve-2026-12087.t
  ...
  Result: FAIL
  Failed 1/1 test programs. 1/1 subtests failed.
  ...
  $ patch -p1 < debian/patches/CVE-2026-12087.patch
  $ make test TEST_FILES=t/cve-2026-12087.t
  ...
  All tests successful.
  Files=1, Tests=1,  0 wallclock secs ( 0.01 usr  0.00 sys +  0.02 cusr  0.00 csys =  0.03 CPU)
  Result: PASS

[ Risks ]

The patches are small and self-contained, and a regression test is included.

[ Checklist ]
  [x] *all* changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in (old)stable
  [x] the issue is verified as fixed in unstable

[ Changes ]

* CVE-2026-12087.patch: add a length check on the source address
  argument in pack_ip_mreq_source() before dereferencing it, so that a
  too-short string croaks instead of reading past the end of the buffer.
  Backport of upstream commit de19a0b0ad1900fef976c5c1400bd8f11ec6c6cb.
  No API/ABI change; only malformed input is affected.
* CVE-2026-12087-test.patch: add t/cve-2026-12087.t, a regression test
  written for this backport (upstream has no dedicated test for it).
  Kept as a separate patch so the actual security fix stays reviewable
  in isolation.

[ Other info ]

The proposed fix is a minimal backport of the upstream
security fix to the version currently in trixie (2.038-1).
Unrelated upstream changes perldoc have not been included.

The source debdiff is attached.

Best Regards

これだけ細かく記述するのは、trixie-pu: には次のような内容が求められるからです。

  • パッケージの更新が必要な理由
  • (更新しない場合に)どのような影響があるか
  • どのようにテストしたか
  • パッケージの更新にともなうリスクはどれだけあるか

いずれも、安定版の品質を保つために必要とされています。

結果としてどうなったか

本来なら、trixie-pu: のバグを立てて、Debianのリリースチームとやりとりして承認をしてもらってパッケージをアップロードという流れになります。

幸い、CVE-2026-12087に関しては、事前にpkg-perl-maintainersへメールを投げておいたことが功を奏したのか、メンテナーの方が動いてくれました。 perlは5.40.1-6+deb13u1として他のいくつかの脆弱性とともに次のポイントリリースで修正される見込みです。 libsocket-perlについても同様です。 詳細は次のバグ報告で説明されています。

このようにDebian側で修正してもらうにはDebianパッケージの知見が少し必要ですが、 成果は直接Debianの利用者に反映されるだけでなく、コンテナイメージの世界にも影響を与えます。

興味があったらぜひ手を動かしてみるのはいかがでしょうか。

  1. Debianの既知の不具合やセキュリティ更新をまとめたリリース。次のDebian 13のポイントリリースは13.7で2026年9月12日頃の予定になっている。

  2. https://www.debian.org/doc/manuals/developers-reference/pkgs.ja.html#special-case-uploads-to-the-stable-and-oldstable-distributions