Skip to content

Commit 8976998

Browse files
authored
Fix prototype pollution issue (#529)
1 parent 95602ca commit 8976998

File tree

4 files changed

+18
-2
lines changed

4 files changed

+18
-2
lines changed

packages/core/lib/segments/attributes/subsegment.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,9 @@ Subsegment.prototype.addMetadata = function(key, value, namespace) {
172172
this.metadata[ns] = {};
173173
}
174174

175-
this.metadata[ns][key] = value !== null && value !== undefined ? value : '';
175+
if (ns !== '__proto__') {
176+
this.metadata[ns][key] = value !== null && value !== undefined ? value : '';
177+
}
176178
};
177179

178180
Subsegment.prototype.addSqlData = function addSqlData(sqlData) {

packages/core/lib/segments/segment.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,9 @@ Segment.prototype.addMetadata = function(key, value, namespace) {
143143
this.metadata[ns] = {};
144144
}
145145

146-
this.metadata[ns][key] = value !== null && value !== undefined ? value : '';
146+
if (ns !== '__proto__') {
147+
this.metadata[ns][key] = value !== null && value !== undefined ? value : '';
148+
}
147149
};
148150

149151
/**

packages/core/test/unit/segments/attributes/subsegment.test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ describe('Subsegment', function() {
4747
subsegment.addMetadata(key, value, 'hello');
4848
assert.propertyVal(subsegment.metadata[namespace], key, value);
4949
});
50+
51+
it('should not add key value pair to metadata[namespace] if a namespace is "__proto__"', function () {
52+
let namespace = '__proto__';
53+
subsegment.addMetadata(key, value, namespace);
54+
assert.notProperty(subsegment.metadata[namespace], key);
55+
});
5056
});
5157

5258
describe('#addSubsegment', function() {

packages/core/test/unit/segments/segment.test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,12 @@ describe('Segment', function() {
112112
segment.addMetadata(key, value, 'hello');
113113
assert.propertyVal(segment.metadata[namespace], key, value);
114114
});
115+
116+
it('should not add key value pair to metadata[namespace] if a namespace is "__proto__"', function () {
117+
let namespace = '__proto__';
118+
segment.addMetadata(key, value, namespace);
119+
assert.notProperty(segment.metadata[namespace], key);
120+
});
115121
});
116122

117123
describe('#addSDKData', function() {

0 commit comments

Comments
 (0)