build(deps): update dependency dottie to v2.0.7 [security] - #628
Open
renovate[bot] wants to merge 1 commit into
Open
build(deps): update dependency dottie to v2.0.7 [security]#628renovate[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 #628 +/- ##
=======================================
Coverage 86.03% 86.03%
=======================================
Files 35 35
Lines 859 859
=======================================
Hits 739 739
Misses 120 120 ☔ 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 8, 2026 07:47
67dc2f2 to
20139aa
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
from
March 30, 2026 19:08
20139aa to
12a9e94
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
2 times, most recently
from
April 27, 2026 20:09
12a9e94 to
b2ba63e
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
2 times, most recently
from
May 18, 2026 13:14
1eaeaa1 to
75718a1
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
from
May 28, 2026 22:13
75718a1 to
5e454a1
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
from
June 11, 2026 08:49
5e454a1 to
86462e0
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
2 times, most recently
from
July 17, 2026 02:54
dc7416c to
64551a6
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
2 times, most recently
from
July 24, 2026 22:53
4ff6cd0 to
ee11e95
Compare
renovate
Bot
force-pushed
the
renovate/npm-dottie-vulnerability
branch
from
July 30, 2026 19:34
ee11e95 to
ef9e341
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.