Why Talos Linux has zero Go vulnerability exclusions and what that means for your security

During a recent vulnerability assessment with an enterprise security partner, we were asked to provide our gap analysis for Go-based vulnerabilities in Talos Linux. The expectation was standard: they requested the exclusion records, which are the list of Common Vulnerabilities and Exposures (CVEs) present in our dependencies but marked as “unreachable” or “non-exploitable” in our specific context.
We ran the audit, and our results challenge industry norms: Talos Linux currently requires zero Go vulnerability exclusions.
This is a direct consequence of our team’s architectural decisions that eliminated the need for the complex exclusion management strategies required by general-purpose operating systems.
The operational cost of dependency management
In the current container security landscape, the “known vulnerable” state is an accepted standard. General-purpose operating systems ship with thousands of packages, creating vast dependency trees. Inevitably, scanners flag CVEs in libraries that are present on the disk but never executed by the application.
To manage this, vendors utilize VEX (Vulnerability Exploitability eXchange) documents, which instruct security scanners to ignore specific CVEs because, while the vulnerable library exists, the code path is not reachable. VEX is a necessary standard for managing noise in legacy architectures, but it also introduces significant operational overhead. Exclusion lists grow over time, require continuous triage, and demand that security teams trust the vendor’s assessment that a vulnerability is benign.
For a Go-heavy system like Talos Linux, where the control plane (machined, apid, trustd) is written entirely in Go, it would be reasonable to assume a similar backlog of unreachable CVEs exists. Importantly, we know precisely why this is not the case.
What we found
Talos Linux integrates govulncheck, the official Go vulnerability analysis tool, directly into the Continuous Integration (CI) pipeline. Unlike traditional scanners that perform simple version matching against a CVE database, govulncheck performs a full call-graph reachability analysis. This means it traces execution paths to determine whether the application actually calls the vulnerable function, as opposed to the vulnerable package simply being present in the binary.
This process has consistently found zero unreachable Go CVEs in Talos Linux. There are three architectural reasons for this.
- Supply chain minimalism
Talos Linux is not a general-purpose OS. It is an immutable platform purpose-built for Kubernetes, minimizing the dependency tree. By strictly limiting the dependency surface, we reduce the probability of introducing dormant vulnerabilities. - Remediation over suppression
Because the dependency surface is manageable, our team is able to patch or update dependencies rather than marking it as “acceptable risk.” With a general-purpose OS, the volume of packages makes this approach operationally impossible, but at Sidero, that’s our standard procedure. - Immutable, API-only surface
The Talos architecture eliminates SSH, shell access, and package managers. This does not merely reduce the attack surface. It eliminates entire categories of exploitation vectors. A Go CVE that requires local shell execution to exploit is structurally mitigated because the mechanism for local execution does not exist.
Technical note on the precision of call-graph analysis
Legacy vulnerability scanning often relies on metadata matching. For example, Package A (v1.0) contains CVE-XYZ. This approach lacks context. In static binaries like Go, a library may be linked, but the vulnerable function may be dead code that is never compiled into the execution path. Tools like govulncheck build a graph of the program’s flow. If the vulnerable function is not reachable via any execution path, it is not flagged. This shifts the focus from inventory management to actual execution risk, filtering out noise before it reaches the security dashboard.
Distinguishing user space from kernel space
It is critical to differentiate between the Go control plane and the Linux kernel. While our user space maintains a zero-exclusion posture, the Linux kernel requires a different vulnerability management strategy.
The Linux kernel is a massive upstream project. Talos Linux compiles a minimal, hardened kernel configuration, meaning thousands of upstream kernel CVEs do not apply because the affected drivers or subsystems are disabled. Documenting these exclusions is a necessary, ongoing engineering effort that we maintain rigorously.
This means: Kernel security requires careful exclusion management due to the scale of the upstream codebase, while the Go control plane requires no exclusion management because the codebase is purpose-built and maintained with a “fix-first” discipline.
The business impact on security operations
For enterprise security teams and CISOs, the architectural difference of Talos Linux translates into tangible operational value:
- High-fidelity reporting: When a scanner reports a Go CVE in Talos Linux, you know it is a genuine signal that has passed reachability analysis and requires immediate attention.
- Reduced alert fatigue: By eliminating the noise of unreachable vulnerabilities, security teams can reallocate engineering hours from triage to threat modeling and proactive defense.
- Compliance efficiency: The absence of a complex exclusion list simplifies audit processes, ensuring the system’s security posture is deterministic and verifiable.
The industry frequently discusses “shifting left,” but true security is architectural. Talos Linux’s lack of Go vulnerability exclusions didn’t happen entirely by chance. It’s a logical architectural outcome of how our team built.
When evaluating operating systems for production Kubernetes environments, the vulnerability surface–and the effort required to manage it–should be a primary factor in the decision-making process.
Finally, we invite security teams or anyone curious to clone the Talos Linux repository and run the analysis tools themselves.

