Summary
Frictionless contains an operating system command injection vulnerability in its explore console command when processing untrusted Data Package descriptors. A crafted resource path may cause shell-interpreted input to execute arbitrary commands as the local user who runs the command against the package.
Affected context
The vulnerability occurs in the Frictionless explore workflow when a user runs the command against a Data Package descriptor that is not fully trusted. Risk is present when resource path values from the descriptor are incorporated into a shell command without adequate separation from command syntax, allowing execution in the privileges and environment of the exploring user.
Exploit preconditions
- Attack surface: The Frictionless explore console command and its handling of Data Package descriptors
- Required access: The ability to provide or influence a descriptor that a victim will inspect
- Trigger point: Processing resource path values during execution of the explore command
- Why exploitation is possible: Descriptor-controlled values reach a shell command without sufficient neutralization or non-shell argument handling
Why this happens
The underlying bug is command construction from externally controlled resource path values followed by execution through a system shell. Shell metacharacters and command syntax can therefore be interpreted as instructions rather than treated solely as data. This behavior maps to CWE-78: Improper Neutralization of Special Elements used in an OS Command, commonly known as OS command injection.
Potential impact
- Arbitrary operating system commands may execute in the exploring user's security context
- Local files or environment data could be read, modified, or deleted
- The user's account or host could be compromised
- Credentials, tokens, or other sensitive information could be exposed
- The affected environment could be used for further compromise or malicious package activity
General mitigation guidance
Mitigation generally focuses on removing shell interpretation from data-processing paths and reducing trust in package metadata.
Common defensive patterns include:
- Prefer direct process execution APIs that pass arguments separately and do not invoke a shell
- Treat descriptor-controlled paths as untrusted data and apply strict validation against an expected path format
- Use allowlists for permitted resource locations and reject unexpected control characters
- Avoid constructing commands through string concatenation or interpolation
- Run exploration tasks with least-privilege accounts, restricted filesystem access, and limited network permissions
- Isolate processing of untrusted packages from sensitive host and user resources
How teams detect issues like this
Organizations can look for this weakness through:
- Static analysis rules that flag shell execution APIs receiving concatenated or descriptor-derived values
- Code review checks for string-built commands and use of shell-enabled process APIs
- Tests using benign metacharacter-like boundary cases to verify that values remain arguments rather than commands
- Runtime monitoring for unexpected child processes, shell launches, or access to sensitive files during package exploration
- Policy enforcement requiring non-shell process execution and validation of externally supplied paths
Automated code review and application security tools may help identify command-construction patterns during development.

