/

CVE-2026-108744

Severity:

HIGH RISK

(7.0)

OS Command Injection (CWE-78) in pbi-cli desktop_sync

CVE-2026-108744

Deferred

Vulnerability type

Category:

OS Command Injection

CWE:

CWE-78

Impact:

Arbitrary Command Execution

Severity:

HIGH RISK

(7.0)

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

A high-severity OS command injection vulnerability in pbi-cli can cause attacker-controlled project paths to be interpreted as command-line syntax when projects are reopened.

If a victim opens a Power BI project from a specially prepared local path, commands may execute with the victim's operating-system privileges during report writing or reloading.

A high-severity OS command injection vulnerability in pbi-cli can cause attacker-controlled project paths to be interpreted as command-line syntax when projects are reopened.

If a victim opens a Power BI project from a specially prepared local path, commands may execute with the victim's operating-system privileges during report writing or reloading.

Affected context

The vulnerability occurs in the desktop synchronization workflow that reopens Power BI projects through cmd /c start. It affects environments where project paths can be influenced by an attacker and are passed to the command interpreter without reliable quoting or argument isolation. Exploitation generally depends on a victim opening a project from a prepared local location.

The vulnerability occurs in the desktop synchronization workflow that reopens Power BI projects through cmd /c start. It affects environments where project paths can be influenced by an attacker and are passed to the command interpreter without reliable quoting or argument isolation. Exploitation generally depends on a victim opening a project from a prepared local location.

Exploit preconditions

  • Attack surface: Local desktop project-opening and synchronization workflow
  • Required access: Ability to provide or influence a Power BI project path and persuade a victim to open it
  • Trigger point: Reopening a project during report writing or reload operations
  • Why exploitation is possible: An unquoted path is passed to cmd /c start, allowing command-interpreted path characters to alter execution behavior
  • Attack surface: Local desktop project-opening and synchronization workflow
  • Required access: Ability to provide or influence a Power BI project path and persuade a victim to open it
  • Trigger point: Reopening a project during report writing or reload operations
  • Why exploitation is possible: An unquoted path is passed to cmd /c start, allowing command-interpreted path characters to alter execution behavior

Why this happens

The underlying bug is an OS command injection caused by placing an untrusted filesystem path into a command-interpreter invocation without robust quoting or argument separation.

Special characters in the path can be interpreted as command syntax rather than literal filename content. This maps to CWE-78: Improper Neutralization of Special Elements used in an OS Command, because externally influenced data reaches an operating-system command without sufficient neutralization.

The underlying bug is an OS command injection caused by placing an untrusted filesystem path into a command-interpreter invocation without robust quoting or argument separation.

Special characters in the path can be interpreted as command syntax rather than literal filename content. This maps to CWE-78: Improper Neutralization of Special Elements used in an OS Command, because externally influenced data reaches an operating-system command without sufficient neutralization.

Potential impact

  • Arbitrary commands may execute with the victim's privileges
  • Local files and project data could be read, modified, or deleted
  • Credentials, tokens, or other user-accessible secrets could be exposed
  • The compromised workstation could be used for persistence or lateral movement
  • Reports or project content could be altered or corrupted
  • Arbitrary commands may execute with the victim's privileges
  • Local files and project data could be read, modified, or deleted
  • Credentials, tokens, or other user-accessible secrets could be exposed
  • The compromised workstation could be used for persistence or lateral movement
  • Reports or project content could be altered or corrupted

General mitigation guidance

Mitigation generally focuses on avoiding command interpreters for routine process launching and treating project paths as untrusted data.

Common defensive patterns include:

  • Use direct process-launch APIs that pass executable names and arguments separately
  • Apply strict path validation and canonicalization before opening projects
  • Preserve paths as data rather than concatenating them into shell command strings
  • Restrict project-opening workflows to trusted directories and controlled file sources
  • Run desktop components with least privilege and avoid unnecessary access to sensitive resources
  • Add security tests covering paths with spaces, metacharacters, and unexpected separators

Mitigation generally focuses on avoiding command interpreters for routine process launching and treating project paths as untrusted data.

Common defensive patterns include:

  • Use direct process-launch APIs that pass executable names and arguments separately
  • Apply strict path validation and canonicalization before opening projects
  • Preserve paths as data rather than concatenating them into shell command strings
  • Restrict project-opening workflows to trusted directories and controlled file sources
  • Run desktop components with least privilege and avoid unnecessary access to sensitive resources
  • Add security tests covering paths with spaces, metacharacters, and unexpected separators

How teams detect issues like this

Detection can include static analysis for command-interpreter calls that concatenate or interpolate filesystem paths, especially uses of cmd /c, shell-enabled process APIs, or string-built command lines.

Code review should flag unquoted path variables, implicit shell execution, and project-opening logic that accepts attacker-influenced locations. CI policies can require argument-separated process APIs, validated path handling, and regression tests for command-injection metacharacters. Automated code-scanning and dependency-review tools may help identify related patterns.

Detection can include static analysis for command-interpreter calls that concatenate or interpolate filesystem paths, especially uses of cmd /c, shell-enabled process APIs, or string-built command lines.

Code review should flag unquoted path variables, implicit shell execution, and project-opening logic that accepts attacker-influenced locations. CI policies can require argument-separated process APIs, validated path handling, and regression tests for command-injection metacharacters. Automated code-scanning and dependency-review tools may help identify related patterns.

Sources

SourceLink
github.comgithub.com/MinaSaad1/pbi-cli
github.comgithub.com/MinaSaad1/pbi-cli/blob/c8655cb9a131e2ce87ae5e1380994099f693d6af/src/pbi_cli/utils/desktop_sync.py#L286-L291
github.comgithub.com/MinaSaad1/pbi-cli/blob/c8655cb9a131e2ce87ae5e1380994099f693d6af/src/pbi_cli/utils/desktop_sync.py#L398-L405
hackmd.iohackmd.io/@haind/pbi-cli-desktop-sync-pbip-cmd-argument-injection
vulncheck.comvulncheck.com/advisories/pbi-cli-3.10.1-through-3.12.0-os-command-injection-via-desktop-sync

Frequently asked

questions

Not directly in the usual case. Exploitation generally requires delivering or influencing a project path and persuading a victim to open the project locally.

The attacker typically needs a way to provide a project or path that reaches the desktop synchronization workflow. The victim must then perform an operation that reopens or reloads the project.

Avoid invoking a command interpreter for project launching. Use an argument-safe process API, pass the path as a separate argument, and validate it before use.

Treat filenames and paths as untrusted input, prohibit shell-string construction, enforce secure code-review rules, and test file-opening workflows with adversarial path values.

Not directly in the usual case. Exploitation generally requires delivering or influencing a project path and persuading a victim to open the project locally.

The attacker typically needs a way to provide a project or path that reaches the desktop synchronization workflow. The victim must then perform an operation that reopens or reloads the project.

Avoid invoking a command interpreter for project launching. Use an argument-safe process API, pass the path as a separate argument, and validate it before use.

Treat filenames and paths as untrusted input, prohibit shell-string construction, enforce secure code-review rules, and test file-opening workflows with adversarial path values.

Find out what's already
exploitable in your codebase.