Default profiles usually leave many unused syscalls available, so they reduce risk only partially. That creates two problems: the container still has a broad attack surface, and the profile may not reflect the workload’s real behavior. In practice, teams either accept excessive exposure or block needed calls and disrupt application function. A tailored profile avoids both failures.
Why default seccomp profiles fail to match the workload
Default seccomp profiles are a blunt control. They aim to reduce kernel attack surface, but they are usually built for broad compatibility rather than the exact syscall behavior of one service. That means the profile often becomes a compromise between safety and operability, instead of a precise control that reflects how the workload actually runs.
A workload-specific whitelist is different because it is derived from observed behavior, not generic assumptions. When a team skips that step, the security boundary is defined by what the default profile happened to anticipate, not by the application’s real dependency set.
What the leftover syscall surface means in practice
The main breakage is mismatch. A default profile can leave many syscalls available that the workload never needs, which weakens the containment value of seccomp. It also makes exception handling harder, because teams often discover the gap only after a production failure or after they have already accepted a broader allowlist than intended.
For teams that care about hardening containers, the question is not whether seccomp is present, but whether it is narrow enough to matter. A broad default still helps, but it does not provide the same reduction in exploit options as a profile built around actual process behavior. SPIFFE workload identity specification is useful as a comparison point for how precise trust boundaries should be defined, even though the control mechanism here is syscall filtering rather than workload identity.
One practical consequence is that a partially effective profile can create a false sense of isolation. Teams may believe the workload is tightly constrained when, in reality, a large portion of the kernel interface remains reachable. That gap matters most when the service processes untrusted input, handles secrets, or runs adjacent to other sensitive workloads.
Why workload-specific whitelists are operationally safer
A custom whitelist reduces both security and change-management failure. Security improves because only the syscalls required by the workload remain available. Reliability improves because the allowlist is validated against the application’s actual runtime path, which reduces the chance of blocking a required syscall and breaking normal behavior.
That is why profile design should be treated as an application-specific control, not a platform default. A default profile may be acceptable as an interim baseline, but it should not be the end state for long-lived services that deserve tighter containment.
For containerized systems, the same principle aligns with broader workload hardening guidance in the OWASP Non-Human Identity Top 10, especially where services depend on machine credentials and secrets. It also fits the operational model described in Kubernetes NHI Security Guide, where secure defaults are useful but workload-specific controls are what actually close exposure.
Risk and Threat Considerations
Default seccomp profiles create two distinct risks: excessive syscall exposure and brittle overrestriction. Excess exposure preserves more of the kernel attack surface than many teams expect, while overrestriction can take a service down or force unsafe exceptions just to restore availability.
Failure mechanism: the profile is not derived from the workload’s real syscall set, so the control either permits unnecessary kernel operations or blocks legitimate ones. Attackers benefit from the unused surface; operators suffer when the profile drifts away from the application’s runtime behavior.
Impact: the service can remain unnecessarily exploitable, or it can fail under normal load after a deployment, configuration change, or library update. In both cases, the team loses confidence in the container hardening control and often weakens it further to keep the application running.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
NIST SP 800-53 Rev 5, CIS Controls v8 and NIST CSF 2.0 set the technical controls, while ISO/IEC 27001:2022 defines the regulatory obligations.
| Framework | Control / Reference | Relevance |
|---|---|---|
| NIST SP 800-53 Rev 5 | SC-39 — Process Isolation | Seccomp is a process isolation control that limits kernel interface exposure. |
| Recommendation — Apply SC-39 to restrict process access to only the kernel calls the workload requires. | ||
| CIS Controls v8 | CIS-4 — Secure Configuration of Enterprise Assets and Software | Default seccomp profiles are baseline configurations that should be hardened per workload. |
| Recommendation — Harden container defaults and replace generic profiles with workload-specific allowlists. | ||
| ISO/IEC 27001:2022 | A.8.9 — Configuration management | Profile selection and tuning are configuration decisions that affect security and reliability. |
| Recommendation — Document, test, and maintain seccomp profiles as controlled security configuration. | ||
| NIST CSF 2.0 | PR.PS-01 — Configuration Management | Workload-specific seccomp whitelists are a protective configuration that should be managed precisely. |
| Recommendation — Manage seccomp profiles as protective configurations and review them after runtime changes. | ||
Practitioner Guidance
What to verify: treat a seccomp profile as valid only when it has been tested against the current runtime path, not just the development build. If the service has multiple modes, validate the profile against each one, because a profile that fits one code path may break another.
Decision rule: if the workload is stable and important enough to harden, move from default seccomp to an observed syscall whitelist. If the workload changes frequently, keep the profile narrow enough to reduce exposure, but expect to re-baseline it after dependency or runtime changes.
Practitioner takeaway: default profiles are a temporary compatibility control, not a precision security control. The useful standard is whether the profile matches the workload’s actual syscall behavior closely enough to reduce attack surface without forcing unsafe exceptions.
Related resources from NHI Mgmt Group
- What breaks when teams rely on generic JavaScript scanning instead of runtime-specific rules?
- What breaks when teams rely only on AUC instead of checking threshold-specific metrics?
- What breaks when teams rely on long-lived credentials instead of short-lived workload identities?
- What breaks when cloud security teams rely on provider-specific views instead of a unified data model?