Miggo Logo

CVE-2017-16026: Remote Memory Exposure in request

5.9

CVSS Score
3.0

Basic Information

EPSS Score
0.78318%
Published
11/9/2018
Updated
9/12/2023
KEV Status
No
Technology
TechnologyJavaScript

Technical Details

CVSS Vector
CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
requestnpm>= 2.49.0, < 2.68.02.68.0
requestnpm>= 2.2.6, < 2.47.02.68.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stems from how multipart body parts were handled when the body type was a number. The unpatched add function in lib/multipart.js passed numeric values directly to 'new Buffer(part)', creating a buffer of uninitialized memory of the specified size. The commit diff shows this was fixed by adding a type check and string conversion for numeric values. The PoC demonstrates this by sending {body:500}, which would trigger the vulnerable code path. The function's direct buffer allocation without sanitizing numeric input matches the described vulnerability mechanism.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

*****t** v*rsions o* `r*qu*st` will *is*los* lo**l syst*m m*mory to r*mot* syst*ms in **rt*in *ir*umst*n**s. W**n * multip*rt r*qu*st is m***, *n* t** typ* o* `*o*y` is `num**r`, t**n * *u***r o* t**t siz* will ** *llo**t** *n* s*nt to t** r*mot* s*r

Reasoning

T** vuln*r**ility st*ms *rom *ow multip*rt *o*y p*rts w*r* **n*l** w**n t** *o*y typ* w*s * num**r. T** unp*t**** `***` *un*tion in `li*/multip*rt.js` p*ss** num*ri* v*lu*s *ir**tly to 'n*w *u***r(p*rt)', *r**tin* * *u***r o* uniniti*liz** m*mory o*