
Node.js JSON मर्ज पैच REST API में CVE-2026-3030 प्रोटोटाइप प्रदूषण का प्रदर्शन करता है, जिसमें विशेषाधिकार वृद्धि के लिए एक संवेदनशील सर्वर और एक्सप्लॉइट स्क्रिप्ट शामिल है।
// server.js - Vulnerable REST API with deep merge
const express = require('express');
const app = express();
app.use(express.json());
let config = {
role: 'user',
settings: {}
};
// Insecure deep merge function (pollutable via __proto__)
function deepMerge(target, source) {
for (const key in source) {
if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {
if (!target[key]) target[key] = {};
deepMerge(target[key], source[key]);
} else {
target[key] = source[key];
}
}
return target;
}
app.patch('/config', (req, res) => {
deepMerge(config, req.body);
res.json(config);
});
app.get('/admin', (req, res) => {
// Check admin via a property that could be polluted
if (config.role === 'admin' || config.isAdmin) {
res.send('Welcome Admin!');
} else {
res.status(403).send('Forbidden');
}
});
app.listen(3000, () => console.log('Server on :3000'));
एक Node.js API JSON पैच लागू करने के लिए एक कमजोर डीप मर्ज फ़ंक्शन का उपयोग करता है। __proto__ को एक कुंजी के रूप में भेजकर, एक हमलावर वैश्विक ऑब्जेक्ट प्रोटोटाइप को प्रदूषित कर सकता है, जिससे isAdmin जैसे गुण जुड़ते या अधिलेखित होते हैं, और विशेषाधिकार वृद्धि होती है।
deepMerge फ़ंक्शन __proto__ या constructor की जाँच किए बिना कुंजियों की प्रतिलिपि बनाता है, जिससे Object.prototype में इंजेक्शन की अनुमति मिलती है।npm install express
node server.js
python exploit_prototype_pollution.py