VDB
Sign up
CRITICAL9.8

GHSA-qg8p-v9q4-gh34

Potential Command Injection in shell-quote

Quick fix

GHSA-qg8p-v9q4-gh34 — shell-quote: upgrade to the fixed version with the command below.

npm install shell-quote@1.6.1

Details

Affected versions of `shell-quote` do not properly escape command line arguments, which may result in command injection if the library is used to escape user input destined for use as command line arguments.

## Proof of Concept:

The following characters are not escaped properly: `>`,`;`,`{`,`}`

Bash has a neat but not well known feature known as "Bash Brace Expansion", wherein a sub-command can be executed without spaces by running it between a set of `{}` and using the `,` instead of ` ` to seperate arguments. Because of this, full command injection is possible even though it was initially thought to be impossible.

``` const quote = require('shell-quote').quote; console.log(quote(['a;{echo,test,123,234}'])); // Actual "a;{echo,test,123,234}" // Expected "a\;\{echo,test,123,234\}" // Functional Equivalent "a; echo 'test' '123' '1234'" ```

## Recommendation

Update to version 1.6.1 or later.

Are you affected?

Enter the version of the package you're using.

Affected packages

npm/shell-quote
Introduced in: 0Fixed in: 1.6.1
Fixnpm install shell-quote@1.6.1

References