GHSA-2c83-wfv3-q25f json
Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') in ZMarkdown
published 5y ago modified 5y ago
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
### Impact
A Remote Command Execution vulnerability was found in the rebber module, which allowed execution of arbitrary commands. The reported problem came from CodeBlocks, which could be escaped to insert malicious LaTeX.
Anyone using `rebber` without sanitation of code content or a custom macro is impacted by this vulnerability. Here is an example of a Markdown content that will exploit the vulnerability:
````markdown ``` \end{CodeBlock}
\immediate\write18{COMMAND > outputrce} \input{outputrce}
\begin{CodeBlock}{text} ``` ````
Will insert into the generated LaTeX the result of executing `COMMAND` on the system.
### Patches
The vulnerability has been patched in version 5.2.1. If impacted, you should update to this version as soon as possible.
### Workarounds
It is possible to mitigate the vulnerability without upgrading by using a custom code macro. Please make sure this custom macro escapes your closing LaTeX sequence. For the example above, use:
```javascript const escaped = content.replace(new RegExp('\\\\end\\s*{CodeBlock}', 'g'), '') ```
### For more information
If you have any questions or comments about this advisory, open an issue in [ZMarkdown](https://github.com/zestedesavoir/zmarkdown/issues).
Patch / fix
- npm rebber 5.2.1
Is GHSA-2c83-wfv3-q25f in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| npm | rebber | <5.2.1 |
5.2.1 |
Classification
- Weakness
-
- CWE-78 Improper Neutralization of Special Elements used in an OS Command
References
Sources
- GitHub Advisory GHSA-2c83-wfv3-q25f
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.