
مساحة عمل ذكاء اصطناعي مستضافة ذاتيًا مع وكلاء ومهارات وأدوات (Gmail، Calendar) تعمل بالكامل على مفاتيح API الخاصة بمزودك (BYOK). أحضر مفاتيحك الخاصة — Groq، OpenRouter، NVIDIA، Hugging Face، Google AI.
أداة فحص دون اتصال للتحذيرات الأمنية الـ 26 على مستوى المستودع الخاصة بـ
org.asynchttpclient:async-http-client (AsyncHttpClient، "AHC").
تخبرك أيّها يتعرّض لها ملف jar الخاص بك فعليًا، وتُبرز تلك التي لا تستطيع Dependabot وOSV
رؤيتها، وتقدّم إجابة واحدة لكل سطر:
3.0.142.16.1
لا يزال متأثرًا بـ 5 تحذيرات لن تُصلَح. الإصلاح الوحيد هو الانتقال إلى 3.0.14.ملف jar واحد، بلا اعتماديات وقت التشغيل، دون اتصال بالكامل، Java 17+.
تصحيح (2026-10-12، v0.2.0). ذكر الإصدار v0.1.0 من هذه الأداة ومن هذا الملف: "قاعدة البيانات العالمية تسرد 4 فقط من أصل 17"، "Dependabot تخبرك بتثبيت 3.0.12"، "الإجابة الحقيقية هي
3.0.13/2.16.1". كانت الثلاثة صحيحة في 2026-09-19 ولم يعد أيٌّ منها صحيحًا: فقد نشر المشروع الأصلي 5 تحذيرات إضافية في 2026-09-24 (مُصلَحة في3.0.14، وغير مُصلَحة على 2.x)، وفي 2026-10-08 التقطت قاعدة بيانات GitHub العالمية 9 مدخلات إضافية. يُبلّغ الإصدار v0.1.0 عن3.0.13و2.16.1على أنهما نظيفان — وهما ليسا كذلك. استخدم v0.2.0.
في 2026-09-24 نشر القائمون على الصيانة خمسة تحذيرات. ينتهي كلٌّ منها قسم Patches الخاص به بالجملة نفسها:
سلسلة 2.x وصلت إلى نهاية عمرها الافتراضي ولن تتلقى إصلاحًا. قم بالترقية إلى 3.0.14.
تُدرج الخمسة جميعًا نطاق 2.x ينتهي عند 2.16.1 — أحدث إصدار 2.x على Maven Central — مع
إصدار مُصلَح فارغ:
| التحذير | الخطورة | نطاق 2.x | ماذا | يحتاج إلى |
|---|---|---|---|---|
CVE-2026-107230 | عالية | >= 2.0.0, <= 2.16.1 | لا تزال الاتصالات المُجمَّعة (pooled) مشتركة عبر عمليات تسجيل الدخول NTLM / Negotiate / proxy (إصلاح غير مكتمل لـ GHSA-vvp4-63h8-v5pm) | NTLM أو Kerberos أو SPNEGO إلى أصل (origin) أو proxy، أو أي تسجيل دخول على proxy من نوع SOCKS / CONNECT، و طلبات بهويات مختلفة عبر عميل واحد. لا يتأثر Basic وDigest إلى أصل (origin) |
CVE-2026-107227 | عالية | >= 2.2.0, <= 2.16.1 | تُفكّ ضغط رسائل WebSocket permessage-deflate دون أي حد للحجم | setEnablewebSocketCompression(true) — معطّلة افتراضيًا — وخادم WebSocket غير موثوق أو بنص صريح |
CVE-2026-107228 | متوسطة | >= 2.1.0, <= 2.16.1 | يُستبدل ترويسة Cookie المضبوطة عبر setHeader / addHeader بملفات تعريف الارتباط الخاصة بمخزن ملفات تعريف الارتباط (تجاوز لإصلاح CVE-2024-53990) | مخزن ملفات تعريف الارتباط، مفعّل افتراضيًا، يحمل أي ملف تعريف ارتباط لذلك الأصل (origin) |
CVE-2026-107226 | متوسطة | >= 2.1.0, <= 2.16.1 | يمكن لملف تعريف ارتباط يُستقبل عبر HTTP بنص صريح أن يزرع أو يستبدل أو يحذف ملف تعريف ارتباط Secure مضبوطًا عبر HTTPS | مخزن ملفات تعريف ارتباط واحد مشترك بين أصول (origins) بنص صريح وأخرى بـ HTTPS لنفس الموقع |
CVE-2026-107229 | متوسطة | >= 2.16.0, <= 2.16.1 | فحوصات أصل (origin) غير مكتملة في مخزن ملفات تعريف الارتباط الافتراضي (القسم الخاص في اللاحقة العامة public-suffix، مضيفو IP، …) | عميل واحد يصل إلى عدة أصول (origins)، أحدها متأثر بالمهاجم |
كن دقيقًا بشأن التحذيرين ذوي الخطورة العالية: لا ينطبق أيٌّ منهما على عميل يقوم بطلبات عادية
بالإعدادات الافتراضية. يحتاج CVE-2026-107227 إلى تفعيل ضغط WebSocket؛ ويحتاج CVE-2026-107230
إلى NTLM / Kerberos / SPNEGO أو proxy يطلب مصادقة. أما الثلاثة المتوسطة فهي التي
تلامس مخزن ملفات تعريف الارتباط الافتراضي. لا تعرف هذه الأداة كيف تستخدم العميل؛ إنها تُبلّغ عمّا
يقوله نطاق الإصدار وتترك القرار لك.
ما الذي يتغيّر فعلًا: لم يعد "الترقية إلى 2.16.1" إجابة. يمكن ترقية إصدار 2.x أقدم مثل
2.12.3 إلى 2.16.1 لإزالة التحذيرات التي لديها إصلاح في 2.x — وبعد
ذلك يظل داخل النطاقات الخمسة أعلاه (بل إن الترقية من إصدار أدنى من 2.16.0 تضيف
CVE-2026-107229، الذي يبدأ نطاقه عند 2.16.0). تطبع الأداة ذلك بالضبط، وتخرج بالرمز 1
من أجل 2.16.1.
لا تقرأ Dependabot وOSV صفحة Security → Advisories الخاصة بالمشروع. بل تقرآن
قاعدة بيانات التحذيرات العالمية في GitHub. اعتبارًا من 2026-10-12، يُرجع GET /advisories/<GHSA> الرمز 404 لـ
9 من أصل 26 تحذيرًا على مستوى المستودع:
CVE-2026-107281، CVE-2026-107279، CVE-2026-107232،
CVE-2026-107284، CVE-2026-102740، CVE-2026-102737، CVE-2026-85718، CVE-2026-85719) —
اثنتان منها صُنّفت عالية الخطورة من قبل المشرفين (CVE-2026-107232، CVE-2026-85719)، وكلتاهما تتعلقان
ببيانات اعتماد الوكيل (proxy credentials)؛CVE-2026-107229).قاعدة البيانات كانت تلحق بالركب — وصلت 4 من دفعة أغسطس في 2026-09-17، و5 أخرى في
2026-10-08 — لذا سيبقى هذا الرقم في تغيّر. تُطبع كل نتيجة مع
Dependabot/全局库:已收录 / 未收录 ("مُدرج / غير مُدرج في قاعدة البيانات العالمية")، وتطبع الأداة
تاريخ إنشاء جدولها. يخبرك tools/recheck_before_publish.py ما إذا كانت الفجوة لا تزال
قائمة اليوم.
بالنسبة إلى 3.x، العاقبة العملية صغيرة الآن: عند الحساب من قاعدة البيانات العالمية وحدها،
فإن الهدف هو أيضًا 3.0.14. أما بالنسبة إلى الإصدارات <= 3.0.11 فإن التحذيرين العاليين المفقودين
ببساطة لا يُعرضان لك.
ثمة فرق آخر جدير بالمعرفة: CVE-2026-107282 مُصنّف عالي من قبل المشرفين
وحرج في قاعدة البيانات العالمية. يحتفظ جدول القواعد بتصنيف المشرفين.
CVE-2026-85721 (عالي) هو الذي ينطبق على الإعدادات الافتراضية: فك ضغط الاستجابات التلقائي
مُفعّل افتراضيًا، ومسار HTTP/1.1 يفك ضغط الجسم دون أي حد للحجم الإجمالي.
يمكن لخادم خبيث أو مخترق — أو أي شخص قادر على تعديل الاستجابة أثناء النقل — أن يرسل
جسم gzip/deflate صغيرًا يستنزف الذاكرة (heap). المتأثر: <= 3.0.11 و <= 2.16.0.
هذه الثغرة مُدرجة في قاعدة البيانات العالمية، لذا يُنبّه عليها Dependabot.
تخلط النطاقات بين >= و<= و< و= 3.0.12 صريح و3.0.0 مجرّد. الإصدار 3.0.11 نفسه
آمن بالنسبة إلى CVE-2026-55688 (< 3.0.11) ومتأثر بالنسبة إلى CVE-2026-107232
(<= 3.0.11). يحتفظ جدول القواعد بكل معامل (operator) تمامًا كما كُتب؛ ويفشل تأكيد (assertion) في
tools/gen_rules.py واختبار وحدة إذا توقف الحد عن التصرف بهذه الطريقة. أي جزء من نطاق
لا يتعرف عليه المحلل (parser) يُعد خطأً — وليس أبدًا "غير متأثر". يُقبل إصدار إصلاح فارغ
فقط عندما ينص نص التحذير نفسه على أن السطر قد انتهى عمره؛ ويُخزَّن على أنه "لا إصلاح على هذا السطر"،
وليس أبدًا على أنه "غير متأثر".
حيث يحمل كل من المستودع وقاعدة البيانات العالمية تحذيرًا لكنهما يختلفان في النطاق،
يأخذ جدول القواعد الاتحاد. اليوم: CVE-2024-53990 (يسرد المستودع إصدار 3.x فقط
3.0.0، بينما تسرد قاعدة البيانات العالمية أيضًا 2.x >= 2.1.0, < 2.12.4) وCVE-2026-107230 (النطاق نفسه،
مكتوب <= 3.0.13 على أحد الجانبين و< 3.0.14 على الجانب الآخر).
pom.xml — عن قصدعادةً ما تكون AHC تبعية متعدية (transitive)، تُجلب بواسطة SDK أو مكتبة عميل. قد لا يظهر
artifactId أبدًا في ملف pom.xml الخاص بك. تقرأ هذه الأداة
META-INF/maven/org.asynchttpclient/async-http-client/pom.properties داخل ملفات jar التي تُشحن فعليًا — بما في ذلك
ملفات jar المتداخلة في Spring Boot fat-jar (BOOT-INF/lib) أو WAR (WEB-INF/lib).
الإحداثي القديم 1.x com.ning:async-http-client له الـ artifactId نفسه؛ وهو مُدرج لكنه غير
مُقيَّم.
java -jar async-http-client-check.jar target/ # scan build output
java -jar async-http-client-check.jar myapp.jar # fat-jar / war, nested jars included
java -jar async-http-client-check.jar --version-of 2.16.1 # judge a version directly
كل نتيجة تطبع المعرّف، والخطورة، والعنوان، والنطاق، والإصدار المُصلح (أو 无(2.x 线已停止维护) — "لا يوجد،
فرع 2.x وصل إلى نهاية العمر الافتراضي")، وما إذا كانت قاعدة البيانات العامة تحتويه. المخرجات باللغة الصينية.