Read the docs
TI-2024-39112 Aliases GHSA-m56h-5xx3-2jc2

Prototype pollution in jsii.configureCategories

Priority LOW 38CWE-1321Published · Updated

Key facts

Attack vector
—
Privileges required
—
User interaction
—
Attack complexity
—
Impact type
—
Confidentiality · integrity · availability
—
Fix status
Fixed

No CVSS vector from any source. Fix status from GitHub.

Summary

## Summary `jsii` is a TypeScript to JavaScript compiler that also extracts an interface definition manifest to generate RPC stubs in various programming languages. jsii is typically used as a command-line tool, but it can also be loaded as a library. When loaded as a library into a larger application, prototype pollution may happen if untrusted user input is passed to the library. When used as a command line-tool, this pollution cannot occur. ## Impact You may be impacted if you have written an application that loads jsii as a library, and passes untrusted user input into the `jsii.configureCategories()` function. In that case, a user can craft input in such a way that, following the invocation, a field named "category" with a user-controlled value is added to the JavaScript Object prototype. This will cause every object in the program (both new and existing) to have a field named "category", even if it shouldn't. **This will not affect jsii itself, but it might affect the application you have loaded jsii into.** > The function `jsii.configureCategories()` is used to configure the severity (error, warning, etc.) of various jsii diagnostics. **Impacted versions: <=5.7.2, <=5.6.3, <=5.5.14, <=5.4.45** **Example:** ```js const jsii = require('jsii'); // prints 'undefined' console.log(JSON.stringify({}.category)) // calling 'configureCategories' with user input jsii.configureCategories(JSON.parse('{"__proto__": "user-input"}')) // from this point onwards, every single object literal in the program // will contain the 'category' key, with user controlled value console.log(JSON.stringify({}.category)) // prints 'user-input' // this can affect the execution of the main program in case it also makes // use of an object key called 'category'. for example, if the main programs // happens to have code like this: const x = {} // some object in the main program (not necessarily empty) if (x.category) { // this block will always be executed, effectively // changing the behavior of the main program. console.log('Do something') } else { console.log('Do something else') } ``` For more information about javascript prototype pollution, see [1]. ## Patches A patch is included in versions [5.7.3](https://github.com/aws/jsii-compiler/releases/tag/v5.7.3), [5.6.4](https://github.com/aws/jsii-compiler/releases/tag/v5.6.4), [5.5.15](https://github.com/aws/jsii-compiler/releases/tag/v5.5.15), [5.4.46](https://github.com/aws/jsii-compiler/releases/tag/v5.4.46) ## Workarounds Sanitize user input to configureCategories() by stripping the __proto__ property if detected. ## References If you have any questions or comments about this advisory, we ask that you contact AWS/Amazon Security via our issue reporting page [2] or directly via email to [[email protected]](mailto:[email protected]). Please do not create a public GitHub issue. [1] https://learn.snyk.io/lesson/prototype-pollution/ [2] [https://aws.amazon.com/security/issue-reporting](https://aws.amazon.com/security/vulnerability-reporting) ## Credits We would like to thank _Tariq Hawis_ for collaborating on this issue through the coordinated vulnerability disclosure process.

Why it matters now

Fix Fixed jsii (npm): 5.7.3, 5.6.4, 5.5.15 +1

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
—jsii (npm)5.7.0 to before 5.7.35.7.3Patch availableGHSA-m56h-5xx3-2jc2
—jsii (npm)5.6.0 to before 5.6.45.6.4Patch availableGHSA-m56h-5xx3-2jc2
—jsii (npm)5.5.0 to before 5.5.155.5.15Patch availableGHSA-m56h-5xx3-2jc2
—jsii (npm)5.4.0 to before 5.4.465.4.46Patch availableGHSA-m56h-5xx3-2jc2
  • jsii (npm) Vendor— Affected 5.7.0 to before 5.7.3 Fixed in 5.7.3 Patch available GHSA-m56h-5xx3-2jc2
  • jsii (npm) Vendor— Affected 5.6.0 to before 5.6.4 Fixed in 5.6.4 Patch available GHSA-m56h-5xx3-2jc2
  • jsii (npm) Vendor— Affected 5.5.0 to before 5.5.15 Fixed in 5.5.15 Patch available GHSA-m56h-5xx3-2jc2
  • jsii (npm) Vendor— Affected 5.4.0 to before 5.4.46 Fixed in 5.4.46 Patch available GHSA-m56h-5xx3-2jc2

Remediation

  • Fix · GHSA-m56h-5xx3-2jc2 jsii (npm) Fixed in 5.7.3 Advisory →
  • Fix · GHSA-m56h-5xx3-2jc2 jsii (npm) Fixed in 5.6.4 Advisory →
  • Fix · GHSA-m56h-5xx3-2jc2 jsii (npm) Fixed in 5.5.15 Advisory →
  • Fix · GHSA-m56h-5xx3-2jc2 jsii (npm) Fixed in 5.4.46 Advisory →

Timeline

  1. 2026-10-03 Threatist record created from GHSA-m56h-5xx3-2jc2

References

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences