Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-55182 — تحليل قائم على CodeQL لثغرة تلوث النموذج الأولي CVE-2025-55182 في مكونات خادم React، مع POC للاستغلال واستعلامات كشف ثابتة لاجتياز الخصائص غير الآمن. | Kitploit
أدوات/GitHubGitHub/klassiker/cve-2025-55182
التحليل الثابتتحليل الثغرات الأمنيةتحليل الكودأمن الويبالأوراق والأبحاثالتعلم والتعليم
GitHubklassiker/cve-2025-55182

CVE-2025-55182

تحليل قائم على CodeQL لثغرة تلوث النموذج الأولي CVE-2025-55182 في مكونات خادم React، مع POC للاستغلال واستعلامات كشف ثابتة لاجتياز الخصائص غير الآمن.

عرض المستودع
11منذ 9 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2025-55182

التطبيق المعرّض للخطر

البناء والتشغيل:

docker compose build
docker compose run --rm --entrypoint 'npm install' node
docker compose run --rm --entrypoint 'npm run build' node
docker compose up

POC (من https://github.com/msanft/CVE-2025-55182):

node poc.js

التجريب مع unbundled:

yarn --immutable

node --conditions react-server app.js

CodeQL

استنسخ facebook/react وأنشئ نسخة unbundled:

yarn --immutable

yarn cross-env RELEASE_CHANNEL=experimental node ./scripts/rollup/build.js react-server-dom-webpack/ --type=NODE_DEV

cp ./build/node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js \
    codeql/${version}/

تجهيز CodeQL:

codeql database create db -l javascript -s codeql

cd queries && codeql pack install

codeql query run ./queries/PrototypeTraversal.ql -d db

المهام المتبقية

  • إضافة استعلام للعثور على Promise.resolve(userData)
    • يجب أن يجد جميع الدوال غير المتزامنة التي تستقر (resolve) على كائن معرّف من قبل المستخدم
    • هذا هو الموقع المباشر لمشاكل تنفيذ الكود
  • إضافة استعلام للعثور على await non-native-promise
    • يجب أن يجد جميع عمليات await للدوال التي لا تُرجع وعداً أصلياً (native promise)
    • قد يستخدم المتصل await بشكل خاطئ على دالة تعيد (أحياناً) بيانات خام

النتائج

التقط الاستعلام الاستخدامَ المُصحَّح في getOutlinedModel (حيث أُضيف hasOwnProperty.call) والاستخدام المُزال في createModelResolver (الذي أصبح الآن fulfillReference).

اسم الملفالمصدرالمصب
./19.2.0/react-server-dom-webpack-server.node.unbundled.development.jsparentObject[reference[key]]parentObject[reference[key]]عبور غير آمن للنموذج الأولي: المتغير 'parentObject' يُحدَّث بخاصية خاصة به داخل حلقة.
./19.2.0/react-server-dom-webpack-server.node.unbundled.development.jsparentObject[reference[key]]parentObject[reference[key]]عبور غير آمن للنموذج الأولي: المتغير 'parentObject' يُحدَّث بخاصية خاصة به داخل حلقة.
./19.2.0/react-server-dom-webpack-server.node.unbundled.development.jsvalue[path[i]]value[path[i]]عبور غير آمن للنموذج الأولي: المتغير 'value' يُحدَّث بخاصية خاصة به داخل حلقة.
./tests.jsvalue[path[i]]cعبور غير آمن للنموذج الأولي: المتغير 'value' يُحدَّث بخاصية خاصة به داخل حلقة.
./tests.jsvalue[path[i]]cعبور غير آمن للنموذج الأولي: المتغير 'value' يُحدَّث بخاصية خاصة به داخل حلقة.
./tests.jsvalue[path[i]]value[path[i]]عبور غير آمن للنموذج الأولي: المتغير 'value' يُحدَّث بخاصية خاصة به داخل حلقة.
./vuln.jsparentObject[reference[key]]parentObject[reference[key]]عبور غير آمن للنموذج الأولي: المتغير 'parentObject' يُحدَّث بخاصية خاصة به داخل حلقة.
./vuln.jsvalue[path[i]]value[path[i]]عبور غير آمن للنموذج الأولي: المتغير 'value' يُحدَّث بخاصية خاصة به داخل حلقة.

لا أعرف لماذا يشير الأول والثاني إلى نفس الموقع، بينما المستخرج في vuln.js لا يشير.

أمثلة

في codeql/tests.js توجد هذه الأشكال الثلاثة:

var value = {};
for (let i = 0; i < path.length; i++) {
  value = value[path[i]] // VarAccess
}

var value = {};
for (let i = 0; i < path.length; i++) {
  let c = value[path[i]] // VarDecl
  value = c
}

var value = {};
for (let i = 0; i < path.length; i++) {
  let c
  c = value[path[i]] // use VarRef
  value = c
}

المرجع: https://codeql.github.com/docs/codeql-language-guides/abstract-syntax-tree-classes-for-working-with-javascript-and-typescript-programs/

تنزيل الأداة