build(deps): update dependency dottie to v2.0.7 [security] - #605
Open
renovate[bot] wants to merge 1 commit into
Open
build(deps): update dependency dottie to v2.0.7 [security]#605renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #605 +/- ##
=======================================
Coverage 69.56% 69.56%
=======================================
Files 3 3
Lines 69 69
=======================================
Hits 48 48
Misses 21 21 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
from
March 5, 2026 16:54
63c68f7 to
356992e
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
2 times, most recently
from
March 30, 2026 18:56
356992e to
5bd2dc6
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
2 times, most recently
from
April 27, 2026 20:15
5bd2dc6 to
c034860
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
from
May 12, 2026 13:48
c034860 to
bb1a16e
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
from
May 28, 2026 22:29
bb1a16e to
6ac1b04
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
from
June 11, 2026 22:06
6ac1b04 to
88b35dc
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
2 times, most recently
from
July 17, 2026 03:03
7ad7437 to
3c6c416
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
from
July 21, 2026 00:08
3c6c416 to
45a8c56
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
from
July 24, 2026 22:56
45a8c56 to
efb4b3a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR contains the following updates:
2.0.6→2.0.7dottie is vulnerable to Prototype Pollution bypass via non-first path segments in set() and transform()
CVE-2026-27837 / GHSA-r5mx-6wc6-7h9w
More information
Details
Summary
dottie versions 2.0.4 through 2.0.6 contain an incomplete fix for CVE-2023-26132. The prototype pollution guard introduced in commit
7d3aee1only validates the first segment of a dot-separated path, allowing an attacker to bypass the protection by placing__proto__at any position other than the first.Both
dottie.set()anddottie.transform()are affected.Details
The existing guard checks only
pieces[0] === '__proto__'. When a path like'a.__proto__.polluted'is used,pieces[0]evaluates to'a', not'__proto__', so the guard is bypassed.Inside the traversal loop,
current['__proto__'] = {}triggers the__proto__setter, replacing the intermediate object's prototype. The final value is then written onto this new prototype.Important distinction: This vulnerability does NOT pollute the global
Object.prototype. It injects properties into a specific object's prototype chain. However, injected properties are invisible tohasOwnProperty()andObject.keys(), which makes them difficult to detect and can lead to authorization bypass in common coding patterns.PoC
Tested on Node.js v20 and v22, dottie 2.0.6, Windows 11.
Impact
The primary risk is authorization bypass. In a typical server-side scenario where dottie is used to process user input (e.g., via Sequelize, which depends on dottie with ~1.3M weekly npm downloads), an attacker can inject properties like
isAdmin: trueinto objects used for access control decisions. Since the injected property is not an own property, standard checks usinghasOwnProperty()orObject.keys()will not reveal it, while property access likeif (session.isAdmin)will returntrue.Additionally, replacing an object's prototype via
current['__proto__'] = {}strips all inherited methods, potentially causing TypeError exceptions and denial of service.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
mickhansen/dottie.js (dottie)
v2.0.7Compare Source
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.