[Security] Fix HIGH vulnerability: V-002 #3728
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Security Fix
This PR addresses a HIGH severity vulnerability detected by our security scanner.
Security Impact Assessment
nvm installexecution. Many developers work on untrusted networks, but attack window is limited to installation time and requires GPG to be absent on the system.Evidence: Proof-of-Concept Exploitation Demo
This demonstration shows how the vulnerability could be exploited to help you understand its severity and prioritize remediation.
How This Vulnerability Can Be Exploited
The vulnerability in nvm.sh allows a man-in-the-middle (MITM) attacker to bypass integrity checks for Node.js binaries by serving malicious binaries and checksums when the
gpgcommand is unavailable on the victim's system. This occurs because nvm only verifies the GPG signature of the checksum file ifgpgis installed; otherwise, it trusts the checksum alone, enabling the attacker to inject arbitrary code into the installed Node.js version. An attacker could exploit this by intercepting HTTPS traffic (e.g., via DNS poisoning, ARP spoofing, or a compromised Wi-Fi network) and replacing the legitimate Node.js tarball and checksum with malicious versions that execute attacker-controlled payloads upon Node.js invocation.The vulnerability in nvm.sh allows a man-in-the-middle (MITM) attacker to bypass integrity checks for Node.js binaries by serving malicious binaries and checksums when the
gpgcommand is unavailable on the victim's system. This occurs because nvm only verifies the GPG signature of the checksum file ifgpgis installed; otherwise, it trusts the checksum alone, enabling the attacker to inject arbitrary code into the installed Node.js version. An attacker could exploit this by intercepting HTTPS traffic (e.g., via DNS poisoning, ARP spoofing, or a compromised Wi-Fi network) and replacing the legitimate Node.js tarball and checksum with malicious versions that execute attacker-controlled payloads upon Node.js invocation.Exploitation Impact Assessment
Vulnerability Details
V-002nvm.shnvm.shscript only verifies the GPG signature of the checksum file for Node.js binaries if thegpgcommand is available. Ifgpgis not installed, nvm proceeds without verifying the authenticity of the checksum file, allowing a MITM attacker to serve a malicious binary and a matching malicious checksum file, bypassing the integrity check.Changes Made
This automated fix addresses the vulnerability by applying security best practices.
Files Modified
nvm.shVerification
This fix has been automatically verified through:
🤖 This PR was automatically generated.