/

CVE-2026-93349

Severity:

HIGH RISK

(8.8)

OS Command Injection (CWE-78) in Frictionless Explore

CVE-2026-93349

Awaiting Analysis

Vulnerability type

Category:

OS Command Injection

CWE:

CWE-78

Impact:

Arbitrary Command Execution

Severity:

HIGH RISK

(8.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

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.

Sources

SourceLink
github.comgithub.com/SaiTeja-Erukude/CVE-2026-93349-frictionless-command-injection
github.comgithub.com/frictionlessdata/frictionless-py/pull/1820
github.comgithub.com/frictionlessdata/frictionless-py/releases/tag/v5.19.1
github.comgithub.com/frictionlessdata/frictionless-py/releases/tag/v5.20.0rc2
vulncheck.comvulncheck.com/advisories/frictionless-os-command-injection-via-explore-console-command

Frequently asked

questions

It can be triggered through an untrusted Data Package supplied to a user, but execution occurs on the system where that user runs the explore command. Remote exploitability therefore depends on how packages are distributed and processed.

An attacker generally needs to influence a descriptor that a victim will explore. Direct access to the victim's machine is not necessarily required if the package is obtained from an untrusted source.

Avoid shell-mediated command construction, pass arguments through a direct process API, and validate resource paths against a strict expected format.

Treat package metadata as untrusted, apply secure code review and static analysis for shell execution, and run package-processing commands with minimal privileges and isolation.

Find out what's already
exploitable in your codebase.