CVE-2026-48795:
JavaScript 취약성 분석 및 완화
개요
CVE-2026-48795 is a prototype pollution vulnerability in the AdonisJS @adonisjs/bodyparser package, representing an incomplete fix for the prior advisory CVE-2026-25754 (GHSA-f5x2-vj4h-vg4c). The vulnerability affects @adonisjs/bodyparser versions >= 10.1.3 and < 10.1.5, and >= 11.0.0-next.9 and < 11.0.3. It was published on June 30, 2026, and patched versions were released on May 22, 2026. It carries a CVSS v3.1 base score of 8.6 (High) (GitHub Advisory).
기술적 세부 사항
The root cause is CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes — Prototype Pollution). The original fix for CVE-2026-25754 replaced the internal FormFields storage object with Object.create(null), which blocked direct payloads like __proto__.polluted. However, lodash's _.set() (invoked via @poppinss/utils) still creates plain intermediate objects ({}) when traversing nested path segments. This means that payloads prefixed with a benign segment — such as user.__proto__.polluted or user.constructor.prototype.polluted — bypass the null-prototype root object and successfully pollute Object.prototype. The fix introduces a blocklist (PROTOTYPE_POLLUTING_KEYS) checked against every path segment via lodash.toPath() before any _.set() call is made (GitHub Advisory, Patch Commit v10, Patch Commit v11).
영향
Successful exploitation allows an unauthenticated remote attacker to pollute Object.prototype on any AdonisJS application route that accepts multipart/form-data requests via BodyParserMiddleware. Because the pollution is process-wide, downstream effects can include authorization bypasses, unexpected behavior in libraries that rely on inherited object properties, and potential exploitation of prototype pollution gadget chains leading to remote code execution. Confidentiality and integrity impacts are rated low, while availability impact is rated high (GitHub Advisory).
착취 단계
- Identify target: Locate an AdonisJS application running
@adonisjs/bodyparserversions >= 10.1.3 and < 10.1.5, or >= 11.0.0-next.9 and < 11.0.3, with at least one route acceptingmultipart/form-datarequests behindBodyParserMiddleware. - Craft malicious payload: Construct a
multipart/form-dataHTTP request containing a field name that uses a nested prototype-polluting path, such asuser.__proto__.pollutedoruser[__proto__][polluted]oruser.constructor.prototype.polluted, with an attacker-controlled value. - Send the request: Submit the crafted request to any eligible endpoint (no authentication required). The bodyparser processes the field name through
lodash.toPath()and passes it to_.set(), which traverses the path and sets the property onObject.prototype. - Achieve prototype pollution: The property is now set on
Object.prototypefor the entire Node.js process, meaning all plain objects in the application inherit the attacker-controlled property. - Leverage impact: Exploit the polluted prototype to trigger authorization bypasses, manipulate application logic that checks inherited properties, or chain with known prototype pollution gadgets in the dependency tree to escalate to remote code execution (GitHub Advisory).
타협의 징후
- Network: Inbound HTTP POST requests to any route with
Content-Type: multipart/form-datacontaining field names with segments such as__proto__,constructor, orprototype(e.g.,user.__proto__.polluted,user[__proto__][polluted],user.constructor.prototype.x). - Logs: Application access logs showing
multipart/form-dataPOST requests with unusual field names containing double-underscore patterns orconstructor/prototypekeywords; Node.js error logs reflecting unexpected property inheritance or type errors in downstream libraries. - Process: Unexpected application behavior such as authorization checks returning incorrect results, properties appearing on plain objects that were not explicitly set, or crashes in libraries sensitive to prototype chain modifications.
완화 및 해결 방법
Upgrade @adonisjs/bodyparser to version 10.1.5 (for the v10 branch) or 11.0.3 (for the v11 branch), both released on May 22, 2026. The fix adds a PROTOTYPE_POLLUTING_KEYS blocklist (__proto__, prototype, constructor) and checks every path segment via lodash.toPath() before invoking _.set(), discarding any field whose path contains a dangerous segment. No configuration-based workaround is available; upgrading is the only recommended remediation (v10.1.5 Release, v11.0.3 Release).
커뮤니티 반응
The advisory was published by AdonisJS maintainer RomainLanz and credited to researcher EchoSkorJjj for discovery. The vulnerability was picked up by standard vulnerability aggregators (Tenable, VulnDB, OSV, ENISA EUVD) shortly after disclosure, and appeared in a CISA vulnerability bulletin. No significant independent researcher commentary or broad social media discussion has been identified beyond routine aggregation (GitHub Advisory).
추가 자료
근원: 이 보고서는 AI를 사용하여 생성되었습니다.
관련 JavaScript 취약점:
무료 취약성 평가
클라우드 보안 태세를 벤치마킹합니다
9개의 보안 도메인에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 식별합니다.
추가 Wiz 리소스
맞춤형 데모 받기
맞춤형 데모 신청하기
"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."