False positive for Prototype-polluting function
- Ngôn ngữ chính
- CodeQL
- Star
- 10.1k
- Fork
- 2.1k
- Merge trung bình
- 2 ngày 15 giờ
- Pull request đã merge (30 ngày)
- 141
Mô tả
I check for prototype polluting property keys in a set of reserved keys which include `__proto__` and `constructor`.
This shouldn't even be necessary since the key, value come from Object.entries which according to MDN will only iterate own enumerable string-keyd property. ie. never `__proto__` or `constructor`.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

Still the lookup in the set does not work.
```js
// Iterate through the source own enumerable string-keyed property key-value pairs.
for (const [key, value] of Object.entries(source)) {
// This for codeql only. key, value of Object.entries should ensure that only own properties are parsed
if (!source.hasOwnProperty(key)) continue;
// The ignoreKeys contain checks against prototype pollution.
if (new Set(['__proto__', 'constructor', 'mapview']).has(key)) {
continue;
}
```
CodeQL looks at the right place but ignores the check for the set.
https://github.com/GEOLYTIX/xyz/security/code-scanning/217

The only way I can make the issue go away is by doing a === check on the string value like so.
```js
// Prevent prototype polluting assignment.
if (key === '__proto__' || key === 'constructor') return true;
```
Even though I know that this issue can not happen I need to add this extra line to make the CodeQL warning go away.
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với cảnh báo quét mã CodeQL được liên kết và đoạn mã JavaScript được báo cáo; không có tệp nào trong repository hoặc bài kiểm thử nào được nêu tên. Theo dõi cách truy vấn liên quan xử lý Object.entries và việc thành viên trong Set, sau đó thêm hoặc cập nhật phạm vi kiểm thử hồi quy để false positive này không còn được báo cáo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- javascript
- Lĩnh vực
- security
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 25/100