
إثبات المفهوم: الإسناد الجماعي عبر الدمج الأعمى في إعدادات changedetection.io (CVE-2026-71204، متوسطة 6.3)
المنتج: dgtlmoon/changedetection.io — v0.55.7
الملفات: changedetectionio/blueprint/settings/__init__.py, changedetectionio/forms.py
CWE: CWE-284 — التحكم غير السليم في الوصول
CVSS 3.1: AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:L — 6.3 (متوسط)
CNA: Turan Security · سجل CVE
ينشئ معالج الحفظ في /settings الخاص بـ changedetection.io قاموس تحديث من form.data['application'] ويدمجه دمجًا أعمى في إعدادات التطبيق المخزنة عبر .update(). ونظرًا لأن خانات اختيار HTML تظهر في بيانات النموذج المرسلة فقط عند تحديدها، فإن طلب POST مصنوعًا بعناية يحذف ببساطة خانة اختيار ذات صلة بالأمان (مثل تلك التي تفرض اشتراط مفتاح API) لا يمكن تمييزه، على مستوى المعالج، عن قيام المستخدم بإلغاء تحديدها في الواجهة — فالدمج الأعمى .update() يقلب هذا الإعداد إلى إيقاف التشغيل بصمت.
الطلب الذي لا يضبط api_access_token_enabled (أو ما يعادله) صراحةً على false — بل يكتفي بترك الحقل خارج جسم POST — يؤدي إلى دمج إعدادات التطبيق مع تعطيل تلك الحماية فعليًا، دون أي خطوة تأكيد صريحة أو إشارة تدقيق تميّز بين «ألغى المستخدم هذا» و«لم يُرسَل الحقل».
/settings بشكل طبيعي./settings مع حذف حقل api_access_token_enabled (أو أي إعداد منطقي محمي يتم اختباره) تمامًا من جسم الطلب، مع تضمين حقول غير ذات صلة فقط:
POST /settings HTTP/1.1
Content-Type: application/x-www-form-urlencoded
application-some_other_field=value
form.data['application'] → .update() في معالج حفظ الإعدادات الحقل المفقود كما لو كان إيقافًا صريحًا، مما يعطّل الحماية بصمت دون أن يرى المستخدم (أو المدقق الذي يراجع الطلب) أي إشارة إيقاف صريحة.يخلط استخدام .update() الأعمى على قاموس من بيانات النموذج الخام بين «الحقل الغائب من POST» و«الحقل المضبوط صراحةً على false» في الإعدادات المعتمدة على خانات الاختيار — فنماذج HTML لا ترسل أبدًا خانات اختيار غير محددة، وبالتالي هذا النمط غير آمن لأي حقل إعدادات له آثار أمنية.
قم بتعداد حقول الإعدادات المنطقية المتوقعة بشكل صريح، واضبط الحقول الغائبة على قيمتها المخزنة الحالية (وليس False)، أو استخدم مكتبة نماذج تميّز بين «لم يُرسَل» و«أُرسِل كغير محدد» وتتحقق من المفاتيح ذات الصلة بالأمان بشكل صريح بدلًا من الدمج الأعمى للقاموس.