un

guest
1 / ?
back to lessons

الرؤوس كأكياس

تُعَدّل إطاريات تسجيل HTTP الطلبات كأكياس من قِبل الأزواج من المفتاح والمُحتوى. يُكشف API التسجيل عن الكل. يُمكِن المشغلين تعيين تسجيل الرؤوس للبحث عن مشاكل: عندما يَخْتَبَأُ طلب يَخْتَبَأُ، يُحَدِّث الرؤوس القصة. لا قائمة منع الصور. لا تصفية الشهادات في الوثائق. رؤوس كاملة إلى disk.

رؤوس الشهادة في طلب عادي:

- Authorization: Bearer eyJhbGciOiJIUzI1NiJ9... (JWT أو تُoken OAuth)

- Cookie: session=abc123; auth=xyz789

- X-API-Key: sk-live-abc123...

- X-Auth-Token: ghp_abc123... (نمط تُoken الوصول الشخصي لجيثب)

هذه القيم تُؤَثِّر في الطلب. مُسجلة على ملف تسجيل، تُؤَثِّر في أي طلب.

مسار الشهادة

شهادة مُسجلة لا تبقى في مكان واحد. تَذهَب:

1. الكائن الويب يكتب إلى /var/log/nginx/access.log

2. وكيل دوران الملفات (logrotate) يُنسخ إلى /var/log/nginx/access.log.1

3. وكيل النقل (Fluentd، Filebeat، Logstash) يقرأ ويُنقل إلى المحول

4. المحول (Elasticsearch، Splunk، Datadog) يُفهرس ويُحفظ

5. محفوظة لمدة 30-90 يوماً حسب السياسة الافتراضية

تَوجد الشهادة في جميع الخمسة المكانات في نفس الوقت. إعادة التصدير للتواصل لا تُزيل الشهادة من المحول. تبقى قابلَة للبحث، التصدير، ووصول أي شخص لديه حق الوصول إلى ملفات التسجيل لمدة الحفظ الكاملة.

فجوة الكشف

فجوة الكشف عن شهادة في الذاكرة: max(مدة التطبيق، مدة العملية). التطبيق: ساعات إلى أسابيع. العملية: ساعات إلى أسابيع.

فجوة الكشف عن شهادة في ملف تسجيل: max(مدة التطبيق، مدة الحفظ). التطبيق: ساعات إلى أسابيع. الحفظ: 30-90 يوماً.

شهادة سرية مُستولى عليها من الذاكرة تتطلب وجود المهاجم خلال نافذة مدة التطبيق. شهادة سرية مُستولى عليها من ملف تسجيل تتطلب فقط الوصول إلى المحول، متاح بشكل رترواكتيف، لمدة الحفظ الكاملة.

MOAD-0003 مقابل MOAD-0004

MOAD-0003 (Leaked Context): شهادة سرية في الذاكرة تَنسكب إلى معالج طلب خاطئ. متاح فقط خلال نافذة العملية، من خلال منصب الموجات. مؤقت.

MOAD-0004 (Logged Secret): كود سرية مسجلة على القرص تستمر من خلال تدوير السجلات والشحن والجمع. متاحة بشكل متأخر، للجميع الذين لديهم حق الوصول إلى السجلات، لمدة 30-90 يومًا. دائمة.

الفرق الهيكلية: مؤقت مقابل دائم. الحل يعمل على طبقة مختلفة.

مؤقت مقابل دائم

الفرق المؤقت/الدائم تحدد سطح المخاطر وطبقة الحل والمتطلبات الاستجابة للincident.

لماذا يحتوي كود MOAD-0004 على مخاطر أكبر من كود MOAD-0003؟ قم بتحليل مكان وجود كل كود وكيفية بقائه.

قائمة رفض الكود سرية في طبقة التدوير

الحل: قائمة رفض الكود سرية في طبقة التدوير. قبل أن تصل قيمة الرأس إلى خروج السجل، قم بتحقق اسم الرأس في قائمة الرفض. استبدل القيمة بـ [REDACTED].

CREDENTIAL_HEADERS = {
    'authorization',
    'cookie',
    'x-api-key',
    'x-auth-token',
    'x-csrf-token',
    'proxy-authorization',
}

def sanitize_headers(headers: dict) -> dict:
    return {
        k: '[REDACTED]' if k.lower() in CREDENTIAL_HEADERS else v
        for k, v in headers.items()
    }

تتبع القائمة المنعيه ينتمي إلى طبقة التجميعة، وليس طبقة استعلام الجداول. إخفاء استعلام الجداول: تطبق بعد الوصول إلى القرص; القيمة الخام ما زالت موجودة، لكن مع إخفاء العرض. طبقة التجميعة معالجة القائمة المنعيه: لم يصل الوسيط إلى القرص. القيمة الخام لم تصل إلى ملف الجدول، أو الوكيل المرسل للجداول، أو المتحصل عليها.

اختبار القائمة المنعيه

ثلاثة نماذج اختبارية:

- إيجابي: طلب يحتوي Authorization: Bearer token123 ينتج عن هذا تسجيل مع Authorization: [REDACTED]

- سلبي: طلب يحتوي Content-Type: application/json ينتج عن هذا قيمة الجدول مع القيمة الصحيحة

- عدم الحساسية للقيم: AUTHORIZATION: Bearer token123 أيضاً ينتج عن هذا [REDACTत] (اسمات رؤوس الطلبات غير حساسة للقيم

تتطلب القائمة المنعيه الصيانة: يجب إضافة الأنماط الجديدة للوسائط الاعتماديه (مثل رؤوس الوسائط custom X-Service-Auth) بشكل صريح. الحل هو بنائي ولكن ليس ذاتي الصيانة.

تطبيق القائمة المنعيه

فريق ي configures إعدادات نجنكس لتشمل جميع رؤوس الطلبات لجداول الوصول للبحث عن مشكلة إنتاج. الإعدادات:

log_format debug_format '$remote_addr - $request - $http_authorization - $http_cookie';
access_log /var/log/nginx/debug.log debug_format;

يحلون المشكلة ويهدفون إلى إزالة تكوين التنقيح، لكن التغيير لا يصل إلى إنتاج قبل الدورة التالية للتنفيذ (7 أيام لاحقا).

حدد العيب. ما رؤوس الوسائط التي يمكن كشفها؟ وصف نهج القائمة المنعيه: حيث يطبق، ما ي провер، وما ينتج؟