Skip to content

cacert: 3.111 -> 3.131.1; distrust Comodo AAA Services root in nixos/security/pki - #11

Merged
lf- merged 1 commit into
mercury-headfrom
sec-2613/cacert-3.131.1
Oct 22, 2026
Merged

lf- merged 1 commit into
mercury-headfrom
sec-2613/cacert-3.131.1

Conversation

@mercury-atlas-agent

Copy link
Copy Markdown

Motivation

Compromised eMudhra intermediates chain to emSign roots that the fork's cacert (NSS 3.111) still trusts for server auth. These intermediates can impersonate public TLS endpoints. Any consumer of raw pkgs.cacert from this fork, including container builds that skip the NixOS module, trusts them. Refs SEC-2613.

What changes

Backports NixOS#576347 (bumps cacert to NSS 3.131.1, which drops the emSign roots) into the fork's older package layout. Also backports the remaining part of NixOS#576390: the NixOS module now always blacklists "Comodo AAA Services root".

Decisions

  • Kept the fork's fetchFromGitHub NSS source; only the version and hash change. Prefetching NSS_3_111_RTM reproduces the old hash, which supports the new one.
  • Module blacklist contains only Comodo AAA, as upstream has it after cacert: 3.126 -> 3.131.1 NixOS/nixpkgs#576347. NSS 3.131.1 already drops the emSign roots.

Validation

I built the edited package.nix via callPackage on nixpkgs a831408. The bundle has 118 certs (old: 121). emSign ECC G3 (86A1ECBA…) is absent. AAA (D7A7A0FB…) is emailProtection-only, so it is missing from the no-trust-rules bundle. openssl verify -purpose sslserver on the incident chains.zip: the 6 G3 chains go from ACCEPT to reject, and the 6 AAA chains are rejected before and after. github.com and google.com still verify. Not verified: a full fork build, module VM tests, and rollout.

Atlas agent session link

…vices root

Backport of NixOS#576347 (NSS 3.131.1 removes the emSign roots whose
intermediates were compromised) and NixOS#576390 as reduced by
NixOS#576347 (distrust Comodo AAA Services root in the NixOS module).

Refs SEC-2613

Co-authored-by: Stephen Judkins <stephen@mercury.com>
Co-authored-by: mercury-atlas-agent[bot] <274372067+mercury-atlas-agent[bot]@users.noreply.github.com>
@linear-code

linear-code Bot commented Oct 21, 2026

Copy link
Copy Markdown

SEC-2613

@mercury-atlas-agent

Copy link
Copy Markdown
Author

The check (Check pkgs/by-name) failure isn't fixed here, and no change on this branch can fix it.

@hdgarrood

Copy link
Copy Markdown

This is ready to go from my perspective - I'm just going to wait until I see MWB CI pass with this before merging

Comment on lines +11 to +14
blacklist = cfg.caCertificateBlacklist ++ [
# CVE-2026-111943 (backport of NixOS/nixpkgs#576390)
"Comodo AAA Services root"
];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why does this forbid list a comodo CA? the one that issued emudhra?

also this only affects nixos. not nixpkgs. which may also be a problem?

@lf- lf- left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok i have looked around. aiui major distros have distrusted the comodo aaa services CA so we're probably not going to blow up everything by killing it.

but again remember that this config only affects nixos

@hdgarrood

Copy link
Copy Markdown

pkgs/by-name/ca/cacert/package.nix is nixpkgs no?

@lf-

lf- commented Oct 22, 2026

Copy link
Copy Markdown

pkgs/by-name/ca/cacert/package.nix is nixpkgs no?

yes but the blocklist of the comodo AAA whatever is in the nixos tree so only affects nixos

@lf-
lf- merged commit 0619a4e into mercury-head Oct 22, 2026
4 of 5 checks passed
@hdgarrood
hdgarrood deleted the sec-2613/cacert-3.131.1 branch October 22, 2026 17:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants