Join our Newsletter — 33% off our NHI Course
Threats, Abuse & Incident Response

CWE-78

← Back to Glossary
By NHI Mgmt Group Updated October 28, 2026 Domain: Threats, Abuse & Incident Response

CWE-78 is a weakness class for improper neutralisation of special elements used in an operating system command. It describes command injection, where attacker-controlled input is passed into a shell or command interpreter and changes the command that gets executed, creating a path to arbitrary command execution.

What CWE-78 Means in Practice

CWE-78 is about command injection, where untrusted input reaches an operating system command interpreter and alters what the system executes. The weakness is dangerous because the attacker is not just influencing data, but the command boundary itself.

It often appears when an application assembles shell commands from request parameters, file names, headers, environment values, or other externally influenced data. Even small parsing differences, quoting mistakes, or unexpected metacharacters can turn an intended administrative action into arbitrary command execution.

Why Command Injection Is So Dangerous

The core danger is that command injection usually runs with the privileges of the vulnerable process. If that process can read files, reach internal services, modify configuration, or call other tools, the injected command can inherit that reach immediately.

This weakness is especially severe in automation, CI/CD jobs, web backends, and internal tooling, where developers often assume trusted inputs or privileged execution contexts. A single injection path can expose secrets, alter deployments, or create a bridge into deeper systems.

For a broader root-cause view of how command injection fits into the software weakness landscape, the CWE Top 25 Guide places it alongside other high-impact weakness classes that repeatedly drive severe incidents.

How Organisations Assess Exposure

Exposure review starts with locating every place the application, script, or agent hands data to a shell, command runner, or system utility. Teams should look beyond obvious code paths and include scheduled jobs, pipeline steps, wrappers, and helper scripts that may build commands indirectly.

Inventory also matters because command injection risk depends on where the code runs and what it can reach. Internet-facing services, privileged automation, and workflows with access to credentials or infrastructure tools deserve the most urgent review.

The practical question is not only whether a command is built dynamically, but whether attacker-controlled data can influence arguments, switches, command separators, or command selection. The Command Injection Guide is useful when you need to trace those patterns through real application and pipeline designs.

Remediation, Detection, and Recovery

The safest fix is to avoid shell construction altogether and use APIs that pass arguments as structured values rather than a command string. Where a shell truly cannot be avoided, input must be constrained to allowlists and every metacharacter handling rule must be explicit and tested.

Compensating controls matter when remediation takes time. Reduce process privileges, isolate execution paths, restrict network reach, and remove unnecessary command execution from internet-exposed code paths. These controls do not eliminate the weakness, but they reduce the blast radius.

Detection should focus on unusual child processes, unexpected command-line patterns, abnormal script activity, and outputs that suggest command execution beyond the application’s normal behavior. After patching, teams should review logs and host telemetry for signs that the weakness was already exploited before the fix landed.

Identity Impact After Exploitation

When command injection succeeds, the attacker often inherits whatever the process could access: service account material, API keys, session files, deployment credentials, SSH keys, or other secret-bearing state. That makes post-exploitation rotation and review an identity and access concern as well as an application-security concern.

Any command-injection incident should trigger a search for credentials, tokens, and keys that the compromised process could read or use. If the process had elevated permissions, assume lateral movement, persistence, or supply-chain tampering may also be possible until proven otherwise.

Risk and Threat Considerations

Command injection is dangerous because it collapses the boundary between input handling and execution. An attacker who can influence the command line can often move from simple data tampering to full host compromise, secret theft, or pivoting into internal systems.

Failure mechanism: The application passes attacker-controlled text into a shell or command interpreter, and the interpreter treats part of that text as executable syntax instead of inert data.

Impact: The attacker may execute arbitrary commands with the privileges of the vulnerable process, enabling data theft, service disruption, persistence, or further compromise of adjacent systems.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

MITRE ATT&CK and OWASP API Security Top 10 address the attack and risk surface, while OWASP ASVS, CIS Controls v8 and NIST SP 800-53 Rev 5 set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
OWASP ASVSV15 — Secure Coding and ArchitectureCWE-78 is a secure-coding weakness created by unsafe command construction.
Recommendation — Eliminate shell-based command construction and keep user input out of executable syntax.
CIS Controls v8CIS-16 — Application Software SecurityCWE-78 is a software weakness that should be prevented through secure development practices.
Recommendation — Review code paths that invoke operating-system commands and remove injection-prone patterns.
MITRE ATT&CKT1059 — Command and Scripting InterpreterCWE-78 enables attacker use of command interpreters for execution.
Recommendation — Hunt for unexpected interpreter invocation and suspicious child-process activity.
NIST SP 800-53 Rev 5SI-10 — Information Input ValidationCWE-78 arises when input is not validated before influencing command execution.
Recommendation — Validate and constrain external input before it can affect command execution.
OWASP API Security Top 10API8 — Security MisconfigurationCommand injection often arises from unsafe server-side handling in exposed APIs and services.
Recommendation — Audit server-side command paths in APIs and remove unsafe command execution patterns.

Practitioner Guidance

Why practitioners should care: Treat every shell invocation as a security boundary, not a convenience layer. Command injection is often introduced during scripting, automation, or “temporary” operational code, then forgotten until it becomes an exploit path.

Common misunderstanding: Escaping alone is not a universal defence, because context, encoding, argument parsing, and interpreter behaviour vary. The safer pattern is to avoid command strings where possible and keep untrusted input out of command syntax entirely.

Practitioner takeaway: If a system must invoke the OS, design the interface so untrusted input can only become data, never command structure.

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Reviewed and updated by the NHIMG editorial team on October 28, 2026.
NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org