Skip to content

Commit 786d593

Browse files
committed
chore(release): drop the zlib1g exception the overlay makes stale
Every advisory baseline accepted CVE-2026-85091 against zlib1g 1:1.3.dfsg+really1.3.1-1+b1. The overlay removes that version from the images, and the release candidate check refuses an exception whose finding is fixed or absent. Remove it, and test that every exception on an overlaid package names the overlay version. Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
1 parent 1d0d6ae commit 786d593

11 files changed

Lines changed: 25 additions & 580 deletions

‎release/scripts/test_check_advisory_baselines.py‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1421,6 +1421,31 @@ def test_v3_baseline_is_rejected(self):
14211421
with self.assertRaises(SystemExit):
14221422
self.load_baseline(baseline)
14231423

1424+
def test_live_exceptions_on_overlaid_packages_name_the_overlay_version(self):
1425+
# A runtime package overlay replaces the Distroless base's copy of the
1426+
# package, so an exception naming any other version of it can no longer
1427+
# match a finding, and the candidate check refuses it as fixed or absent.
1428+
spec = importlib.util.spec_from_file_location(
1429+
"check_debian13_images",
1430+
Path(__file__).with_name("check-debian13-images.py"),
1431+
)
1432+
images = importlib.util.module_from_spec(spec)
1433+
spec.loader.exec_module(images)
1434+
for path in LIVE_BASELINES:
1435+
baseline = self.module.load_baseline(path)
1436+
for exception in baseline["exceptions"]:
1437+
overlay = images.RUNTIME_PACKAGES.get(exception["package"])
1438+
if overlay is None:
1439+
continue
1440+
with self.subTest(
1441+
path=path.name,
1442+
vulnerability=exception["vulnerability_id"],
1443+
package=exception["package"],
1444+
):
1445+
self.assertEqual(
1446+
overlay["version"], exception["installed_version"]
1447+
)
1448+
14241449
def test_all_live_baselines_use_evaluable_whole_image_fingerprints(self):
14251450
for path in LIVE_BASELINES:
14261451
with self.subTest(path=path):

‎release/security/breg-advisory-baseline.json‎

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -241,64 +241,6 @@
241241
"definition_digest": "sha256:bb79000251c05524874cbd08a23eb1ea37dcb8528f838cdb4a4b7625f2b013ef"
242242
}
243243
},
244-
{
245-
"vulnerability_id": "CVE-2026-85091",
246-
"package": "zlib1g",
247-
"installed_version": "1:1.3.dfsg+really1.3.1-1+b1",
248-
"severity": "High",
249-
"status": "accepted_risk",
250-
"owner": "@jeremi",
251-
"rationale": "Reviewed the v0.45.0 Linux amd64 breg local reproduction from review-only rehearsal 41678404398 on 2026-11-04. The pinned distroless cc-debian13 nonroot base, complete ordered DiffIDs, production OCI process contract, native Grype/Syft inventories and assertion file digests were checked against the exact exported rootfs. Grype reports not-fixed with no fixed version for zlib1g 1:1.3.dfsg+really1.3.1-1+b1. Debian's trixie tracker still marks this CVE vulnerable and does not record a <no-dsa> note. The base carries zlib, including gzwrite, gzfwrite, gzprintf and gzvprintf. The reviewed application executables neither need libz nor contain libz.so, gz_vacate, gzwrite, gzfwrite, gzprintf or gzvprintf. No reviewed dynamic lookup opens that closure, and the bounded source paths expose no stalled gzip-write followed by formatted-output operation. The reviewed reports exposure/breg.json and exposure/breg.bregctl.json record no review-required dynamic lookup in /usr/local/bin/breg and /usr/local/bin/bregctl; their resolved constant lookups select only __pthread_get_minstack, _dl_find_object, getrandom, none of which selects an affected symbol or library. The public Token Status List codec uses pure-Rust miniz_oxide, not system libz or its gz* routines, and no shipped entrypoint calls that module. Candidate acceptance still requires the exact ordered rootfs layers, production OCI process contract and Syft-bound executable, loader, libc, libm and libpthread digests. The owner and invalidation triggers remain unchanged; the approved quarterly review expires on 2027-01-26.",
252-
"reviewed_at": "2026-11-03",
253-
"expires_at": "2027-01-26",
254-
"invalidation_triggers": [
255-
"candidate_image_identity_mismatch",
256-
"candidate_rootfs_changed",
257-
"component_layer_changed",
258-
"expired",
259-
"exposure_assertion_changed",
260-
"exposure_assertion_false",
261-
"exposure_assertion_unevaluable",
262-
"fix_available",
263-
"material_finding_changed",
264-
"package_version_changed",
265-
"rootfs_evidence_mismatch",
266-
"runtime_config_changed",
267-
"runtime_base_changed"
268-
],
269-
"runtime_definition_digest": "sha256:718427f904e91891bdd8c830ddaeb1751d9131b34add0c329eebadda456ff866",
270-
"component_layer_id": "sha256:e4ba966d7f0527dfe0fcb559e4e18d4da42c4e6beae924719255e0dedb554ed0",
271-
"exposure_assertion": {
272-
"kind": "whole_image_fingerprint_equals",
273-
"reference_image_digest": "sha256:21e3d9934b2dd6fe8de0a90d2cbf18e6124f1db84439003de8e07f32ae3b7b74",
274-
"reference_source_revision": "e1f2772def2febbc477854ba2e8a5c447eef9893",
275-
"reference_provenance": "local_reproduction",
276-
"runtime_definition_digest": "sha256:718427f904e91891bdd8c830ddaeb1751d9131b34add0c329eebadda456ff866",
277-
"files": [
278-
{
279-
"path": "/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
280-
"sha256": "sha256:c8438e4fde1934e61c88311633f00949ff645d5c04cdb8671fa3d78164d2f307"
281-
},
282-
{
283-
"path": "/usr/lib/x86_64-linux-gnu/libc.so.6",
284-
"sha256": "sha256:9792e3cbb541c8f44c7acf5f14f4022ea62998ecc787d326bed4d8b6547dfd92"
285-
},
286-
{
287-
"path": "/usr/lib/x86_64-linux-gnu/libm.so.6",
288-
"sha256": "sha256:6d567d53e895273ca14a1f9dc164fc6c8d39aed2f60aa46a733c2784228915f3"
289-
},
290-
{
291-
"path": "/usr/lib/x86_64-linux-gnu/libpthread.so.0",
292-
"sha256": "sha256:85e21f7dba0394411d00959176fd18b470e575b0b05f1f4f41e5636802ce0500"
293-
},
294-
{
295-
"path": "/usr/local/bin/breg",
296-
"sha256": "sha256:659d41fa92d7cdd46c922175013ddfc80c06c030032495ae3a618a37d4f0f86b"
297-
}
298-
],
299-
"definition_digest": "sha256:bb79000251c05524874cbd08a23eb1ea37dcb8528f838cdb4a4b7625f2b013ef"
300-
}
301-
},
302244
{
303245
"vulnerability_id": "CVE-2026-102010",
304246
"package": "gcc-14-base",

‎release/security/breg-mcp-advisory-baseline.json‎

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -242,64 +242,6 @@
242242
"definition_digest": "sha256:3d1a19e8a3d413c64bce17522610cbed80bff37d4abec0bc4d4d520e1581572a"
243243
}
244244
},
245-
{
246-
"vulnerability_id": "CVE-2026-85091",
247-
"package": "zlib1g",
248-
"installed_version": "1:1.3.dfsg+really1.3.1-1+b1",
249-
"severity": "High",
250-
"status": "accepted_risk",
251-
"owner": "@jeremi",
252-
"rationale": "Reviewed the v0.45.0 Linux amd64 breg-mcp local reproduction from review-only rehearsal 41678404398 on 2026-11-04. The pinned distroless cc-debian13 nonroot base, complete ordered DiffIDs, production OCI process contract, native Grype/Syft inventories and assertion file digests were checked against the exact exported rootfs. Grype reports not-fixed with no fixed version for zlib1g 1:1.3.dfsg+really1.3.1-1+b1. Debian's trixie tracker still marks this CVE vulnerable and does not record a <no-dsa> note. The base carries zlib, including gzwrite, gzfwrite, gzprintf and gzvprintf. The reviewed application executables neither need libz nor contain libz.so, gz_vacate, gzwrite, gzfwrite, gzprintf or gzvprintf. No reviewed dynamic lookup opens that closure, and the bounded source paths expose no stalled gzip-write followed by formatted-output operation. The reviewed reports exposure/breg-mcp.json record no review-required dynamic lookup in /usr/local/bin/breg-mcp; their resolved constant lookups select only __pthread_get_minstack, _dl_find_object, getrandom, none of which selects an affected symbol or library. Candidate acceptance still requires the exact ordered rootfs layers, production OCI process contract and Syft-bound executable, loader, libc, libm and libpthread digests. The owner and invalidation triggers remain unchanged; the approved quarterly review expires on 2027-01-26.",
253-
"reviewed_at": "2026-11-03",
254-
"expires_at": "2027-01-26",
255-
"invalidation_triggers": [
256-
"candidate_image_identity_mismatch",
257-
"candidate_rootfs_changed",
258-
"component_layer_changed",
259-
"expired",
260-
"exposure_assertion_changed",
261-
"exposure_assertion_false",
262-
"exposure_assertion_unevaluable",
263-
"fix_available",
264-
"material_finding_changed",
265-
"package_version_changed",
266-
"rootfs_evidence_mismatch",
267-
"runtime_base_changed",
268-
"runtime_config_changed"
269-
],
270-
"runtime_definition_digest": "sha256:a9d16bcf7fcc246370f243304a91691c130de3c54ac8b507b601359987b29b27",
271-
"component_layer_id": "sha256:e4ba966d7f0527dfe0fcb559e4e18d4da42c4e6beae924719255e0dedb554ed0",
272-
"exposure_assertion": {
273-
"kind": "whole_image_fingerprint_equals",
274-
"reference_image_digest": "sha256:13adf62c90b3e8641605a649dfb07d556bc21b663c6dd9d8927cd71763f10ed3",
275-
"reference_source_revision": "e1f2772def2febbc477854ba2e8a5c447eef9893",
276-
"reference_provenance": "local_reproduction",
277-
"runtime_definition_digest": "sha256:a9d16bcf7fcc246370f243304a91691c130de3c54ac8b507b601359987b29b27",
278-
"files": [
279-
{
280-
"path": "/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
281-
"sha256": "sha256:c8438e4fde1934e61c88311633f00949ff645d5c04cdb8671fa3d78164d2f307"
282-
},
283-
{
284-
"path": "/usr/lib/x86_64-linux-gnu/libc.so.6",
285-
"sha256": "sha256:9792e3cbb541c8f44c7acf5f14f4022ea62998ecc787d326bed4d8b6547dfd92"
286-
},
287-
{
288-
"path": "/usr/lib/x86_64-linux-gnu/libm.so.6",
289-
"sha256": "sha256:6d567d53e895273ca14a1f9dc164fc6c8d39aed2f60aa46a733c2784228915f3"
290-
},
291-
{
292-
"path": "/usr/lib/x86_64-linux-gnu/libpthread.so.0",
293-
"sha256": "sha256:85e21f7dba0394411d00959176fd18b470e575b0b05f1f4f41e5636802ce0500"
294-
},
295-
{
296-
"path": "/usr/local/bin/breg-mcp",
297-
"sha256": "sha256:4125b7085812fff0f6a922060d1b143bd549accf2be2c2bf08060aadd4a35463"
298-
}
299-
],
300-
"definition_digest": "sha256:3d1a19e8a3d413c64bce17522610cbed80bff37d4abec0bc4d4d520e1581572a"
301-
}
302-
},
303245
{
304246
"vulnerability_id": "CVE-2026-102010",
305247
"package": "gcc-14-base",

‎release/security/breg-review-advisory-baseline.json‎

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -242,64 +242,6 @@
242242
"definition_digest": "sha256:a3ede5143345e0f35bae3b2123a75b2e1ace6e3924dcf1d8693b9d8eadd881fe"
243243
}
244244
},
245-
{
246-
"vulnerability_id": "CVE-2026-85091",
247-
"package": "zlib1g",
248-
"installed_version": "1:1.3.dfsg+really1.3.1-1+b1",
249-
"severity": "High",
250-
"status": "accepted_risk",
251-
"owner": "@jeremi",
252-
"rationale": "Reviewed the v0.45.0 Linux amd64 breg-review local reproduction from review-only rehearsal 41678404398 on 2026-11-04. The pinned distroless cc-debian13 nonroot base, complete ordered DiffIDs, production OCI process contract, native Grype/Syft inventories and assertion file digests were checked against the exact exported rootfs. Grype reports not-fixed with no fixed version for zlib1g 1:1.3.dfsg+really1.3.1-1+b1. Debian's trixie tracker still marks this CVE vulnerable and does not record a <no-dsa> note. The base carries zlib, including gzwrite, gzfwrite, gzprintf and gzvprintf. The reviewed application executables neither need libz nor contain libz.so, gz_vacate, gzwrite, gzfwrite, gzprintf or gzvprintf. No reviewed dynamic lookup opens that closure, and the bounded source paths expose no stalled gzip-write followed by formatted-output operation. The reviewed reports exposure/breg-review.json record no review-required dynamic lookup in /usr/local/bin/breg-review; their resolved constant lookups select only __pthread_get_minstack, _dl_find_object, getrandom, none of which selects an affected symbol or library. Candidate acceptance still requires the exact ordered rootfs layers, production OCI process contract and Syft-bound executable, loader, libc, libm and libpthread digests. The owner and invalidation triggers remain unchanged; the approved quarterly review expires on 2027-01-26.",
253-
"reviewed_at": "2026-11-03",
254-
"expires_at": "2027-01-26",
255-
"invalidation_triggers": [
256-
"candidate_image_identity_mismatch",
257-
"candidate_rootfs_changed",
258-
"component_layer_changed",
259-
"expired",
260-
"exposure_assertion_changed",
261-
"exposure_assertion_false",
262-
"exposure_assertion_unevaluable",
263-
"fix_available",
264-
"material_finding_changed",
265-
"package_version_changed",
266-
"rootfs_evidence_mismatch",
267-
"runtime_base_changed",
268-
"runtime_config_changed"
269-
],
270-
"runtime_definition_digest": "sha256:b8793228923f066d8fd04204f048c41b1a98946660972fc1018ac6e4c341433b",
271-
"component_layer_id": "sha256:e4ba966d7f0527dfe0fcb559e4e18d4da42c4e6beae924719255e0dedb554ed0",
272-
"exposure_assertion": {
273-
"kind": "whole_image_fingerprint_equals",
274-
"reference_image_digest": "sha256:ca6daff09687282ce8b1615e8b991834c8d50bed8423869a27df31aed259763a",
275-
"reference_source_revision": "e1f2772def2febbc477854ba2e8a5c447eef9893",
276-
"reference_provenance": "local_reproduction",
277-
"runtime_definition_digest": "sha256:b8793228923f066d8fd04204f048c41b1a98946660972fc1018ac6e4c341433b",
278-
"files": [
279-
{
280-
"path": "/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
281-
"sha256": "sha256:c8438e4fde1934e61c88311633f00949ff645d5c04cdb8671fa3d78164d2f307"
282-
},
283-
{
284-
"path": "/usr/lib/x86_64-linux-gnu/libc.so.6",
285-
"sha256": "sha256:9792e3cbb541c8f44c7acf5f14f4022ea62998ecc787d326bed4d8b6547dfd92"
286-
},
287-
{
288-
"path": "/usr/lib/x86_64-linux-gnu/libm.so.6",
289-
"sha256": "sha256:6d567d53e895273ca14a1f9dc164fc6c8d39aed2f60aa46a733c2784228915f3"
290-
},
291-
{
292-
"path": "/usr/lib/x86_64-linux-gnu/libpthread.so.0",
293-
"sha256": "sha256:85e21f7dba0394411d00959176fd18b470e575b0b05f1f4f41e5636802ce0500"
294-
},
295-
{
296-
"path": "/usr/local/bin/breg-review",
297-
"sha256": "sha256:7932590d0ceb12ca0963908e36c40821486558cd81a47b232422e0ed85740c28"
298-
}
299-
],
300-
"definition_digest": "sha256:a3ede5143345e0f35bae3b2123a75b2e1ace6e3924dcf1d8693b9d8eadd881fe"
301-
}
302-
},
303245
{
304246
"vulnerability_id": "CVE-2026-102010",
305247
"package": "gcc-14-base",

‎release/security/casework-advisory-baseline.json‎

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -242,64 +242,6 @@
242242
"definition_digest": "sha256:f329ae0e7d1f8f5e3988d0a2551e4c4b4fdd9954d2de431ea1241d336e78e096"
243243
}
244244
},
245-
{
246-
"vulnerability_id": "CVE-2026-85091",
247-
"package": "zlib1g",
248-
"installed_version": "1:1.3.dfsg+really1.3.1-1+b1",
249-
"severity": "High",
250-
"status": "accepted_risk",
251-
"owner": "@jeremi",
252-
"rationale": "Reviewed the v0.45.0 Linux amd64 casework local reproduction from review-only rehearsal 41678404398 on 2026-11-04. The pinned distroless cc-debian13 nonroot base, complete ordered DiffIDs, production OCI process contract, native Grype/Syft inventories and assertion file digests were checked against the exact exported rootfs. Grype reports not-fixed with no fixed version for zlib1g 1:1.3.dfsg+really1.3.1-1+b1. Debian's trixie tracker still marks this CVE vulnerable and does not record a <no-dsa> note. The base carries zlib, including gzwrite, gzfwrite, gzprintf and gzvprintf. The reviewed application executables neither need libz nor contain libz.so, gz_vacate, gzwrite, gzfwrite, gzprintf or gzvprintf. No reviewed dynamic lookup opens that closure, and the bounded source paths expose no stalled gzip-write followed by formatted-output operation. The reviewed reports exposure/casework.json and exposure/casework.caseworkctl.json record no review-required dynamic lookup in /usr/local/bin/casework and /usr/local/bin/caseworkctl; their resolved constant lookups select only __pthread_get_minstack, _dl_find_object, getrandom, none of which selects an affected symbol or library. Candidate acceptance still requires the exact ordered rootfs layers, production OCI process contract and Syft-bound executable, loader, libc, libm and libpthread digests. The owner and invalidation triggers remain unchanged; the approved quarterly review expires on 2027-01-26.",
253-
"reviewed_at": "2026-11-03",
254-
"expires_at": "2027-01-26",
255-
"invalidation_triggers": [
256-
"candidate_image_identity_mismatch",
257-
"candidate_rootfs_changed",
258-
"component_layer_changed",
259-
"expired",
260-
"exposure_assertion_changed",
261-
"exposure_assertion_false",
262-
"exposure_assertion_unevaluable",
263-
"fix_available",
264-
"material_finding_changed",
265-
"package_version_changed",
266-
"rootfs_evidence_mismatch",
267-
"runtime_base_changed",
268-
"runtime_config_changed"
269-
],
270-
"runtime_definition_digest": "sha256:3b559ccbf493ed3025aa35cb3db74bd7bff3cf5b5f4e9d70ea2beb60ff36f132",
271-
"component_layer_id": "sha256:e4ba966d7f0527dfe0fcb559e4e18d4da42c4e6beae924719255e0dedb554ed0",
272-
"exposure_assertion": {
273-
"kind": "whole_image_fingerprint_equals",
274-
"reference_image_digest": "sha256:0e28cb112394a865d6eeb94d7ec26da6df46a669e7707807cf63336d8036e74f",
275-
"reference_source_revision": "e1f2772def2febbc477854ba2e8a5c447eef9893",
276-
"reference_provenance": "local_reproduction",
277-
"runtime_definition_digest": "sha256:3b559ccbf493ed3025aa35cb3db74bd7bff3cf5b5f4e9d70ea2beb60ff36f132",
278-
"files": [
279-
{
280-
"path": "/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
281-
"sha256": "sha256:c8438e4fde1934e61c88311633f00949ff645d5c04cdb8671fa3d78164d2f307"
282-
},
283-
{
284-
"path": "/usr/lib/x86_64-linux-gnu/libc.so.6",
285-
"sha256": "sha256:9792e3cbb541c8f44c7acf5f14f4022ea62998ecc787d326bed4d8b6547dfd92"
286-
},
287-
{
288-
"path": "/usr/lib/x86_64-linux-gnu/libm.so.6",
289-
"sha256": "sha256:6d567d53e895273ca14a1f9dc164fc6c8d39aed2f60aa46a733c2784228915f3"
290-
},
291-
{
292-
"path": "/usr/lib/x86_64-linux-gnu/libpthread.so.0",
293-
"sha256": "sha256:85e21f7dba0394411d00959176fd18b470e575b0b05f1f4f41e5636802ce0500"
294-
},
295-
{
296-
"path": "/usr/local/bin/casework",
297-
"sha256": "sha256:9da02599f5ee83d1b4105f706f944276bbfed91efd19593644b0d9f1c8fc4988"
298-
}
299-
],
300-
"definition_digest": "sha256:f329ae0e7d1f8f5e3988d0a2551e4c4b4fdd9954d2de431ea1241d336e78e096"
301-
}
302-
},
303245
{
304246
"vulnerability_id": "CVE-2026-102010",
305247
"package": "gcc-14-base",

0 commit comments

Comments
 (0)