
محرك تحليل دلالي للكشف عن إصلاحات الثغرات في تصحيحات برامج تشغيل نواة ويندوز — 58 قاعدة بصيغة YAML، فك ترجمة Ghidra، تتبع الوصول، وتقييم
إطار عمل ذكي للبحث عن التصحيحات وتحليلها
محرك تحليل دلالي لاكتشاف إصلاحات الثغرات في تصحيحات برامج تشغيل Windows kernel. يستخدم AutoPiff قواعد YAML تحفظية لتحديد تغييرات الكود ذات الصلة بالأمان بدقة عالية وقابلية للتفسير.
يحلل AutoPiff الاختلافات بين إصدارات برامج التشغيل الثغرة والمصححة لاكتشاف تلقائي:
ExFreePool)memcpy)ProbeForRead/ProbeForWrite)ينشر المورد 500 تحديث لبرنامج التشغيل في السنة
├── 490 هي تغييرات ميزات/أداء/تجميلية
├── 8 هي إصلاحات أخطاء بسيطة
└── 2 هي إصلاحات أمان صامتة (بدون CVE مخصصة)
بدون أتمتة: مراجعة 500 يدوياً للعثور على 2
مع AutoPiff: مراجعة 10 نتائج عالية التقييم للعثور على 2
غالباً ما يتم إصدار تصحيحات الأمان دون مخصصات CVE. إجراء هندسة عكسية يدوية لكل تحديث لبرنامج التشغيل للعثور على الإصلاحات ذات الصلة بالأمان ليس ممكناً. يحل AutoPiff هذه المشكلة من خلال عرض التغييرات المهمة تلقائياً.
| المرحلة | الجهد اليدوي | مع AutoPiff | الوقت الموفر |
|---|---|---|---|
| إقران الإصدارات | 5-15 دقيقة/برنامج تشغيل | تلقائي | ~100% |
| فك التجميع | 2-10 دقائق/ملف ثنائي | مجمّع، متوازي | ~95% |
| مطابقة الدوال | 30-60 دقيقة/زوج | فوري | ~100% |
| تحديد التغييرات الأمنية | 2-8 ساعات/زوج | ثوانٍ | ~99% |
| الفرز والترتيب الأولي | 1-2 ساعة | فوري | ~100% |
| إنشاء التقرير | 30-60 دقيقة | فوري | ~100% |
الإجمالي: من 4-12 ساعة لكل زوج من برامج التشغيل إلى 2-5 دقائق
┌─────────────────────────────────────────────────────────────────┐
│ تمت أتمتته بواسطة AutoPiff │
│ ├── ابحث عن الإبرة: "هذه الدالة تغيرت بالقرب من ExFreePool" │
│ ├── صنّف: "يبدو كإصلاح استخدام بعد التحرير" │
│ └── رتّب: "الدرجة 5.5 - يستحق التحقيق" │
├─────────────────────────────────────────────────────────────────┤
│ لا يزال يدوياً (خبرتك) │
│ ├── تأكيد قابلية الاستغلال: "هل يمكنني بالفعل تشغيل هذا؟" │
│ ├── تحليل السبب الجذري: "لماذا كانت هذه ثغرة؟" │
│ ├── تطوير الاستغلال: "كيف أصل إلى هذا الـ sink؟" │
│ └── تقييم التأثير: "ما هو الخطر في العالم الحقيقي؟" │
└─────────────────────────────────────────────────────────────────┘
لا يحل AutoPiff محل أبحاث الاستغلال. بل يجعلها ممكنة على نطاق واسع من خلال أتمتة مرحلة الاستطلاع.
1. كشف التصحيحات الصامتة
2. بحث الثغرات من اليوم الأول
3. تدقيق أمان المورد
4. بناء مجموعة بيانات CVE تاريخية
يعمل AutoPiff كخط أنابيب Karton مع 8 مراحل متسلسلة بالإضافة إلى فرع فرز DriverAtlas المتوازي. كل مرحلة هي خدمة مصغرة مستقلة تتواصل عبر Redis/RabbitMQ.
graph LR
sources["WinBIndex<br/>VirusTotal"]:::src --> s0["Stage 0<br/>Monitor"]
s0 --> s14["Stages 1-4<br/>Patch Differ"]
s0 --> triage["DriverAtlas<br/>Triage"]:::triage
s14 --> s5["Stage 5<br/>Reachability"]
s5 --> s6["Stage 6<br/>Ranking"]
s6 --> s7["Stage 7<br/>Report"]
s6 --> s8["Stage 8<br/>Alerter"]
triage --> alerts["MWDB Tags<br/>+ Alerts"]:::triage
classDef src fill:#1a1a2e,stroke:#e94560,color:#eee
classDef triage fill:#1a1a2e,stroke:#e9a345,color:#eee
classDef default fill:#16213e,stroke:#0f3460,color:#eee
| المرحلة | الخدمة | ما تفعله |
|---|---|---|
| 0 | driver-monitor | يسحب WinBIndex و VirusTotal بحثاً عن إصدارات جديدة من برامج التشغيل، ويرفعها إلى MWDB |
| 1-4 | karton-patch-differ | إقران الإصدارات، فك التجميع بواسطة Ghidra، مطابقة الدوال، تقييم القواعد الدلالية |
| 5 | karton-reachability | BFS لرسم بياني لاستدعاءات Ghidra من نقاط دخول IOCTL/IRP إلى الدوال المتغيرة، تصدير فك التجميع الكامل |
| 6 | karton-ranking | يسجل النتائج باستخدام قابلية الوصول، وشدة الدلالة، وسطح الهجوم |
| 7 | karton-report | يُنشئ تقارير منظمة بصيغة Markdown، ويرفعها إلى MWDB |
| 8 | autopiff-alerter | يُرسل تنبيهات Telegram للنتائج ذات الدرجة >= 8.0 |
| — | autopiff-driver-triage | تسجيل درجات سطح هجوم DriverAtlas (بالتوازي مع 1-4)، ويوسم عينات MWDB، ويرسل تنبيهات Telegram |
يتضمن AutoPiff 58 قاعدة عبر 22 فئة. راجع Docs/semantic_rules.md للمواصفات الكاملة و Docs/SEMANTIC_RULES_REFERENCE.md للمرجع الفني.
| الفئة | مثال الكشف |
|---|---|
bounds_check | إضافة فحص الطول قبل memcpy |
lifetime_fix | تعيين null بعد ExFreePool |
user_boundary_check | إضافة ProbeForRead/ProbeForWrite |
int_overflow | استخدام دوال رياضية آمنة |
state_hardening | عمليات العد المرجعي المتشابك |
ioctl_input_validation | فحوصات حجم/نوع جديدة في معالجات التوزيع |
pool_type_hardening | الترحيل إلى NonPagedPoolNx |
privilege_check | إضافة SeSinglePrivilegeCheck |
يتتبع محرك القواعد أكثر من 50 رمز واجهة برمجة تطبيقات خطير عبر 8 مجموعات sinks:
memory_copy: RtlCopyMemory, memcpy, memmovepool_alloc: ExAllocatePool, ExAllocatePoolWithTagpool_free: ExFreePool, ExFreePoolWithTaguser_probe: ProbeForRead, ProbeForWriteio_sanitization: RtlULongAdd, RtlSizeTMultexceptions: __try, __exceptstring_copy: strcpy, wcsncpyrefcounting: InterlockedIncrement/Decrementيتم تسجيل النتائج باستخدام نموذج قابل للتكوين (rules/scoring.yaml):
final_score = semantic_score + reachability_bonus + sink_bonus - penalties
مكونات الدرجة:
حواجز: