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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
fastjson-check — ماسح ضوئي CLI دون أي اعتماديات ويعمل دون اتصال بالإنترنت، يكتشف fastjson داخل ملفات JAR وملفات Spring Boot fat-JAR، ويحدد مدى التعرض لـ CVE-2026-16723، ويكتشف الاعتماديات المظللة (shaded dependencies) لبوابات CI. | Kitploit
أدوات/GitHubGitHub/xiaoqimikko/fastjson-check
ماسحات الثغرات الأمنيةتحليل الثغرات الأمنيةDevSecOpsأمن سلسلة التوريد
GitHubxiaoqimikko/fastjson-check

fastjson-check

ماسح ضوئي CLI دون أي اعتماديات ويعمل دون اتصال بالإنترنت، يكتشف fastjson داخل ملفات JAR وملفات Spring Boot fat-JAR، ويحدد مدى التعرض لـ CVE-2026-16723، ويكتشف الاعتماديات المظللة (shaded dependencies) لبوابات CI.

عرض المستودع
منذ 7 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

fastjson-check

Release Downloads License Java

أمر واحد يكشف ما إذا كان تطبيق Java لديك يحتوي فعلاً على fastjson، وأين يختبئ، وما إذا كان متأثراً بـ CVE-2026-16723.

بدون أي تبعيات · يعمل دون اتصال بالكامل · ملف jar واحد بحجم 23KB · يدعم Java 8+

English | تنزيل


لماذا تحتاج إليه

في 21 يوليو 2026، أعلنت fastjson رسمياً عن CVE-2026-16723 (بدرجة CVSS 9.0، تنفيذ تعليمات برمجية عن بُعد):

  • يؤثر على fastjson 1.2.68 ~ 1.2.83
  • قابل للاستغلال بالإعدادات الافتراضية —— لا حاجة لتفعيل AutoType، ولا لحاجة إلى classpath gadget، ولا إلى مصادقة
  • ظهرت عمليات استغلال فعلية في البرية خلال أيام من الإعلان، تستهدف بشكل أساسي نشر Spring Boot fat-JAR

⚠️ التصحيح الرسمي 1.2.84 صدر بالفعل، لكن لا أحد تقريباً يعلم بذلك

لا تزال العديد من النشرات الأمنية (بما فيها عدة وسائل إعلام أمنية ناطقة بالإنجليزية) تذكر حتى اليوم أن «فرع 1.x قد وصل إلى EOL، ولن يصدر له تصحيح أبداً، وأن الحل الوحيد هو الانتقال إلى fastjson2». هذا الادعاء لم يعد صحيحاً منذ 2026-07-29. يمكنك التحقق بنفسك:

الدليلالرابط
مستودع Maven المركزي يحتوي على com.alibaba:fastjson:1.2.84، وقد رُفع ملف jar في 2026-07-29repo1
إصدار GitHub 1.2.84، نُشر في 2026-07-29T08:24:51Zrelease
الالتزام الرئيسي fix: strengthen autoType type name validation and whitelist verification2026-07-29T07:02:55Z

صدر 1.2.83 في مايو 2022، وبعد ذلك ظل فرع 1.x بلا أي التزام لمدة أربع سنوات —— وقد صدر 1.2.84 كاستثناء خاص لهذه الثغرة تحديداً.

عنوان الإصدار لا يشير إلى إصلاح أمني: عنوان 1.2.83 ذكر «(إصلاح أمني)»، بينما كتب 1.2.84 فقط «إصدار النسخة 1.2.84». لكن النص ذكر ذلك —— فهناك قسم كامل بعنوان Security Fixes يسرد أربعة تحسينات لتقوية AutoType بنداً بنداً، وكان الأمر كذلك منذ يوم الإصدار (2026-07-29) (يمكن التحقق عبر أرشيف Wayback بالمعرّف 20260729094935).

أما سبب عدم متابعة معظم النشرات الأمنية وأدوات الفحص حتى بعد صدور التصحيح، فلم أتمكن من التحقق منه، ولن أخمّن هنا.

📌 تصحيح بتاريخ 2026-08-14: كان مكتوباً هنا سابقاً «لم يُذكر الأمان في النص كاملاً، لذلك لم تتم المتابعة». ثبت بالفحص الفعلي لنص الإصدار وأرشيف Wayback لذلك اليوم أن الشطر الأول خاطئ (العنوان فقط هو ما لم يُشر إليه)، وبالتالي فقد الشطر الثاني أساسه أيضاً، وقد حُذف كليهما.

👉 الأثر الفعلي على مستخدمي 1.x: الترقية إلى 1.2.84 هي أقل الإجراءات تكلفة (إصدار فرعي من نفس الفرع، عادةً دون الحاجة لتعديل الكود)، ولن تُضطر إلى القيام فوراً بترحيل كبير إلى fastjson2. هذه الأداة تقدّم توصيتها على هذا الأساس.

⚠️ الشرط هو JDK 8 أو أحدث (تم التحقق فعلياً في 2026-10-14): جميع الفئات الـ 274 في 1.2.84 هي bytecode من Java 8 (major 52)، بينما 1.2.83 هي Java 5 (major 49). على JDK 7 (Zulu 7u352) يعطي javac تحذيراً فقط مع رمز خروج 0، لكنه يرمي عند التشغيل مباشرةً UnsupportedClassVersionError: com/alibaba/fastjson/JSON : Unsupported major.minor version 52.0. كذلك: الثابت JSON.VERSION في 1.2.84 لا يزال "1.2.83"، لذا فإن تحديد الإصدار بناءً عليه سيكون خاطئاً؛ أما هذه الأداة فتقرأ pom.properties، فلا تتأثر بذلك.

وأكثر ما يسبب المشقة هو:

fastjson عادةً ما يكون تبعية عابرة —— لا أحد يثبّته طوعاً، بل يأتي مصاحباً لمكتبة أخرى. كثير من الفرق لا يعرفون أصلاً أنهم يستخدمونه.

يمكن لـ mvn dependency:tree سرد التبعيات، لكنه عاجز عن حالتين:

  1. لديك فقط fat-JAR مُحزَّم جاهز، دون كود مصدري أو بيئة بناء (وهو السيناريو الأكثر شيوعاً في الاستجابة الطارئة على بيئة الإنتاج)
  2. fastjson مُدمج (shade) داخل jar الخاص بإحدى SDK، فلا يظهر إطلاقاً في شجرة التبعيات

كُتبت هذه الأداة لهاتين الحالتين.

البدء السريع

نزّل fastjson-check.jar من Releases، ثم:

# 扫一个 jar(Spring Boot fat-JAR 会自动逐层展开)
java -jar fastjson-check.jar ./myapp.jar

# 扫一整个目录(递归查找所有 jar/war)
java -jar fastjson-check.jar /opt/apps

# 输出 JSON,接入流水线
java -jar fastjson-check.jar /opt/apps --json

لا يتطلب التثبيت، ولا يتطلب حسابًا، ولا يتصل بالإنترنت، ولا يرفع أي بيانات.

التشغيل كإضافة Maven (بدءًا من 0.3.0)

القطعة البرمجية نفسها هي CLI وإضافة Maven في آنٍ واحد. هذا الاستخدام لا يتطلب تنزيل jar أولًا:

# 在你的项目目录下直接跑,扫的是 Maven 解析后的依赖
mvn io.github.xiaoqimikko:fastjson-check:0.3.1:check

أو اربطه بدورة حياة البناء (مرحلة verify):

<plugin>
  <groupId>io.github.xiaoqimikko</groupId>
  <artifactId>fastjson-check</artifactId>
  <version>0.3.1</version>
  <executions>
    <execution>
      <goals><goal>check</goal></goals>
    </execution>
  </executions>
</plugin>

لماذا وضع الإضافة أدق من جعل CLI يفحص pom.xml

عندما يفحص CLI ملف pom.xml فإن ما يقرأه هو نص، بينما في المشاريع الحقيقية غالبًا لا يكون إصدار fastjson موجودًا في ذلك النص:

  • مكتوب كخاصية: <version>${fastjson.version}</version>
  • موروث من <parent>، وليس في pom الخاص بك هذا السطر
  • الأكثر شيوعًا: إنه تبعية انتقالية جلبها مكتبة أخرى، ولم يُذكر fastjson في pom الخاص بك إطلاقًا

ما تحصل عليه الإضافة هو مجموعة التبعيات بعد اكتمال تحليل Maven، وكل تبعية تحمل مسار jar الحقيقي في المستودع المحلي. وبذلك تسلك بالضبط المسار الذي يتقنه هذه الأداة: فحص com/alibaba/fastjson(2)/JSON.class داخل jar الحقيقي، بدلًا من الثقة بما هو مكتوب في pom.

⚠️ لكن حدود التعرف لم تتغير بذلك: مفتاح الحكم لا يزال مسار الـ class ذاته، لذا التبعيات التي أُعيد توطينها (relocate) أو أُعيد تجميعها باسم حزمة مغيّر لا تزال غير قابلة للتعرف (انظر «ما ليس عليه» أدناه). ما تحله الإضافة هو «أين كُتب الإصدار»، وليس «تم تغيير اسم الحزمة».

المعاملات

المعاملالافتراضيالوصف
-Dfastjson-check.failOnFoundfalseإفشال البناء عند العثور على CRITICAL / HIGH
-Dfastjson-check.pathغير مضبوطعدم فحص شجرة التبعيات، وفحص هذا المسار بدلاً من ذلك (مجلد / jar / war / fat-jar)
-Dfastjson-check.skipfalseتخطي التنفيذ

🔴 عدم إفشال البناء افتراضيًا أمر مقصود، ويختلف عن دلالة رمز الخروج في CLI: سطر الأوامر تكتبه أنت بنفسك، ورمز الخروج 1 هو ما تريده بالضبط؛ أما الإضافة فمعلّقة على خط الإنتاج، وأداة فحص ذاتي لا ينبغي أن تُحوّل البناء إلى أحمر دون أن تكون مستعدًا لذلك. لتكون بوابة CI، أضف صراحةً -Dfastjson-check.failOnFound=true.

💡 على Windows، إذا ظهر التقرير مشوّهًا، فأعد وحدة التحكم إلى GBK (chcp 936) — ترميز الإخراج في وضع الإضافة يحدده Maven، ومفتاحا CLI --utf8 / --gbk لا يصلان إلى هنا.

المخرجات تبدو هكذا

fastjson-check 0.1.0  —— fastjson 应急排查(离线,不外传任何数据)

扫描目标:myapp.jar
已展开归档:3 个

发现 2 处 fastjson:

[CRITICAL] fastjson 1.2.83
  位置  :myapp.jar!/BOOT-INF/lib/fastjson-1.2.83.jar
  版本来源:pom.properties
  场景  :Spring Boot fat-JAR  ← CVE-2026-16723 的主要在野利用场景
  结论  :命中 CVE-2026-16723(CVSS 9.0 远程代码执行),默认配置即可利用
  处置  :1.x 已停止维护,不会有修复版本。应急处置二选一:①(推荐)迁移至
            fastjson2 2.0.63 或更高版本;② 无法立即迁移时,先启用 SafeMode
            彻底关闭 AutoType 以缓解,但这不是长期方案。

[UNKNOWN] fastjson 版本未知
  位置  :myapp.jar!/BOOT-INF/lib/some-sdk-3.1.0.jar
  版本来源:未知
  场景  :Spring Boot fat-JAR  ← CVE-2026-16723 的主要在野利用场景
  注意  :疑似被 shade 进宿主 jar(有 class 但无 Maven 元数据),mvn dependency:tree 查不到它
  结论  :无法确定 fastjson 版本

汇总:CRITICAL 1 UNKNOWN 1

لاحظ النقطة الثانية — ملف some-sdk-3.1.0.jar قام بتضمين fastjson داخله، ولا يظهر إطلاقًا في شجرة التبعيات.

قواعد التحديد

تنزيل الأداة