
إضافة متصفح شاملة لفحص البرمجيات الخبيثة لنوع الملفات (.xpi)، والتي تتحقق من العديد من الحيل الضارة الشائعة مثل: أساليب إخفاء سرقة بيانات الاعتماد، الإخفاء التقني (steganography)، حمولات base64، حيل الملفات المضغوطة (zip-tricks)، تنفيذ الأكواد عن بُعد، الحيل متعددة الأشكال (polyglot tricks)، وحيل البيانات الوصفية (meta data tricks)، في محاولة لتزويد المحلل بمعلومات حول المكان الذي يحتاج إلى تحليل أعمق.
أداة سطر أوامر تحلل ملفات إضافات Firefox (.xpi) بحثًا عن علامات البرامج الضارة، التعتيم، الحمولات المخفية، إخفاء المعلومات، وغيرها من التقنيات المستخدمة لتسلل الأكواد الضارة عبر فرق مراجعة الإضافات.
يقوم extension-scanner.py بفتح إضافة Firefox وتنفيذ سلسلة من فحوصات الأمان عبر كل ملف بداخلها. ثم ينتج تقريرًا ملونًا مع النتائج مرتبة حسب الخطورة.
| الفئة | ما تبحث عنه |
|---|---|
| الأذونات | أذونات خطيرة أو واسعة النطاق (nativeMessaging, <all_urls>, debugger, desktopCapture, إلخ) |
| سياسة أمان المحتوى | unsafe-inline, unsafe-eval, مصادر سكريبتات عن بُعد في CSP |
| تعتيم الجافاسكريبت | استخدام eval(), atob(), Function() منشئ الدوال، متتاليات هروب سداسية عشرية، إعادة تجميع split/join/reverse، حروف سلسلة مشفرة، setTimeout مع وسائط سلسلة نصية |
| عناوين URL مشبوهة | نطاقات خارجية مشفرة تصنف كـ معروفة-سيئة (إصابة بقائمة الحظر ← HIGH)، غير معروفة (ليست في القائمة البيضاء ← MEDIUM)، أو معروفة-جيدة (في القائمة البيضاء ← مكبوتة). قم بتشغيل --update-blocklist لتحديث قائمة حظر النطاقات من URLhaus وقائمة Peter Lowe. |
| بيانات الاعتماد والأسرار | مفاتيح API مشفرة، رموز (AWS، GitHub، Slack، Google)، كلمات مرور، مفاتيح خاصة، وعناوين IP |
| حمولات Base64 | فك تشفير قواعد base64 المضمنة وفحصها بحثًا عن ملفات تنفيذية، نصوص برمجية، وأكواد شبكة |
| إخفاء المعلومات في PNG | اكتشاف البيانات المضافة بعد IEND في PNG وفك تشفير الذيل تلقائيًا (base64, zlib, gzip ومزيجها)؛ يتم فحص الحمولات المفكوكة بشكل متكرر بحثًا عن تعتيم JS، بيانات اعتماد، وعناوين URL مشبوهة. يكشف أيضًا عن أنواع أجزاء غير معروفة، شذوذات قناة LSB، وانتروبيا بيكسل عالية بشكل غير طبيعي |
| بيانات الملفات الوصفية | اكتشاف بايتات سحرية للملفات التنفيذية (.exe, .elf, .dylib)، امتدادات مزدوجة (مثل photo.png.js)، أسماء ملفات مشبوهة (keylog, miner, wallet) |
| ملفات متعددة الصيغ | ملفات صالحة في صيغتين في نفس الوقت (مثل HTML + ZIP) |
| حيل ZIP | إدخالات تجتاز المسار، بايتات خالية في أسماء الملفات، إدخالات مكررة قد تخدع المحللات، تعليقات ZIP تحمل حمولات |
| كود عن بعد | صفحات الخلفية أو العاملات الخدمية المحملة من عناوين URL عن بعد |
| انتروبيا عالية | ملفات أو حروف سلسلة عالية الانتروبيا بشكل مريب (على الأرجح حمولات مشفرة أو مضغوطة) |
| إساءة استخدام واجهة برمجة التطبيقات | استدعاءات API لإضافات المتصفح تشير إلى سرقة البيانات أو تسريبها: cookies.getAll({}), tabs.query({}), history.search, مستقبلات لوحة المفاتيح، قراءات الحافظة، scripting.executeScript مع دالة ديناميكية. ترتفع إلى CRITICAL عندما يقترن استدعاء جمع البيانات بإرسال شبكة خارجية في نفس الملف. |
| عناصر مخفية | iframes غير مرئية (مثل display:none، أبعاد صفرية) تُنشأ ديناميكيًا وتُحقن في DOM — إشارات تابعة صامتة أو قنوات تحكم. بيكسلات تتبع عبر new Image().src تشير إلى عناوين URL خارجية. |
| قنبلة زمنية | setTimeout/setInterval مع تأخير ≥ 5 دقائق؛ بوابات حسابية Date.now()؛ فحوصات تاريخ التثبيت في localStorage تنشط السلوك بعد أيام من التشغيل الأول؛ بوابات عتبة Math.random() تُشغل على جزء فقط من تحميلات الصفحات. |
| مكافحة التحليل | فحوصات navigator.webdriver؛ مقارنات نافذة بعرض/ارتفاع صفري؛ تعليمات debugger عارية؛ حساب performance.now() المستخدم لاكتشاف الصندوق الرملي بالاعتماد على التوقيت. |
CRITICAL — شبه مؤكد أنه ضار؛ يتطلب تحقيقًا فوريًاHIGH — مشبوه بقوة؛ يستدعي مراجعة دقيقةMEDIUM — يحتمل أن يكون خطيرًا؛ راجع في السياقLOW — شأن ثانوي؛ للمعلوماتINFO — بيانات وصفية (الرمز التجزئي، حجم الملف، إلخ)python3.11, python3.12 أو python3.13**python3-venv** - مطلوب إذا كنت تستخدم بيئات افتراضيةباستخدام البيئات الافتراضية:
sudo apt install python3 python3-venv
git clone https://github.com/ernos/extension-scanner.git
cd extension-scanner
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
**python3-numpy** - موصى به لإخفاء المعلومات، تثبيت على مستوى النظام (وإلا pip install -r requirements.txt)git clone https://github.com/ernos/extension-scanner.git
cd extension-scanner
chmod +x extension-scanner.py
mkdir -p ~/.local/share/bin
ln -s $PWD/extension-scanner.py ~/.local/share/bin/extension-scanner
# Required for LSB steganography analysis (optional but recommended)
pip install pillow numpy
# OPTION 1. Only for current user:
# Enable bash completions for simpler use (TAB for autocompleting commands)
mkdir -p ~/.local/share/bash-completion/completions
cp extension-scanner-completions ~/.local/share/bash-completion/completions
echo "source ~/.local/share/bash-completion/completions/extension-scanner-completions" >> ~/.bashrc
# OPTION 2. Enable completions globally for all users (Should be auto-sourced from your .bashrc)
cp extension-scanner-completions /usr/share/bash-completion/completions
إذا لم يتم تثبيت Pillow/NumPy تظل الأداة تعمل — يتم تخطي فحوصات LSB وانتروبيا البيكسل فقط، وتُطبع رسالة تحذير.
usage: xpiscanner [-h] [--update-blocklist] [--min-severity {CRITICAL,HIGH,MEDIUM,LOW,INFO}] [--json] [--compact] [-v] [-m] [--scans CHECK [CHECK ...]]
[targets ...]
Firefox Extension Scanner - Scans XPI files for security risks and malware indicators
positional arguments:
targets One or more XPI files or directories containing XPIs to analyze
options:
-h, --help show this help message and exit
--update-blocklist, --update, -u
Fetch fresh domain blocklists from URLhaus and Peter Lowe's list, merge with the bundled snapshot, and saves to
/home/peb/projects/Firefox-Extensions/extension-scanner/blocklist.json. Exits after updating.
--min-severity {CRITICAL,HIGH,MEDIUM,LOW,INFO}
Minimum severity to display (CRITICAL, HIGH, MEDIUM, LOW, INFO; default: INFO)
--json Output results as JSON instead of formatted text
--compact, -c Print each finding on 1-2 lines instead of the default 3-line format
-v, --verbose Enable verbose output: show additional context for findings
-m, --manifest Show full extension manifest for each target
--scans, -s CHECK [CHECK ...]
Limit analysis to specific check types. Choices: anti-analysis, api-abuse, credentials, cross-file,
file-meta, hidden-elements, obfuscation, payloads, permissions, polyglot, remote-code,
signatures, steganography, time-bomb, zip-tricks. Omit to run all checks (default).
extension-scanner.py — Analyze Firefox (and other browsers) extension XPI files for security risks and malware indicators.