Security Fix for RCE on "gitlogplus" - huntr.dev #59
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.
https://huntr.dev/users/Asjidkalam has fixed the RCE on "gitlogplus" vulnerability 馃敤. Asjidkalam has been awarded $25 for fixing the vulnerability through the huntr bug bounty program 馃挼. Think you could fix a vulnerability like this?
Get involved at https://huntr.dev/
Q | A
Version Affected | ALL
Bug Fix | YES
Original Pull Request | 418sec#1
Vulnerability README | https://github.com/418sec/huntr/blob/master/bounties/npm/gitlogplus/1/README.md
User Comments:
馃搳 Metadata *
Code execution vulnerability
Bounty URL: https://www.huntr.dev/bounties/1-npm-gitlogplus
鈿欙笍 Description *
The gitlogplus module is vulnerable against an arbitrary command injection issue which is made possible since some user-inputs are executed inside a command which doesn't have validations of any kind. The argument options can be controlled by users without any sanitization. It was using
exec()
&execSync()
function which is vulnerable to Command Injection if it accepts user input and it goes through any sanitization or escaping.馃捇 Technical Description *
The use of the
child_process
functionexec()
is highly discouraged if you accept user input and don't sanitize/escape them. I replaced it withexecFile()
andexecFileSync
which mitigates any possible Command Injections as it accepts input as arrays.馃悰 Proof of Concept (PoC) *
Install the package and run the below code:
A file named
HACKED
will be created in the current working directory.馃敟 Proof of Fix (PoF) *
After applying the fix, run the PoC again and no files will be created. Hence command injection is mitigated.
馃憤 User Acceptance Testing (UAT)
Only
execFile
andexecFileSync
is used, no breaking changes introduced.