نحن نأخذ أمن هذا المشروع بجدية تامة. إذا اكتشفت ثغرة أمنية، يُرجى الإبلاغ عنها بمسؤولية دون نشرها علنياً.
- البريد الإلكتروني: أرسل التقرير إلى Abdulmalek.husseini@gmail.com مع الموضوع
ثغرة أمنية — OmniFile AI Processor - لا تنشر الثغرة علنياً قبل إصلاحها والاتفاق على جدول زمني للنشر
- مدة الاستجابة: سنرد خلال 72 ساعة كحد أقصى وسنُبلغك بخطة الإصلاح
- الإصلاح: سنصدر تحديثاً أمنياً خلال 14 يوماً من تأكيد الثغرة (حسب شدتها)
- الاعتراف: سنشكرك في سجل التغييرات
CHANGELOG.mdما لم تُفضل البقاء مجهولاً
- وصف الثغرة والخطوات لإعادة إنتاجها (Proof of Concept)
- نسخة المشروع وبيئة التشغيل (OS, Python, etc.)
- تقدير مستوى الخطورة (Critical / High / Medium / Low)
- اقتراحات للإصلاح إن وجدت
| النسخة | الحالة | ملاحظات |
|---|---|---|
| v5.x (current) | مدعومة بالكامل | تلقي تحديثات أمنية |
| v4.x | صيانة أمنية فقط | إصلاحات حرجة فقط |
| v3.x وأقدم | غير مدعومة | يجب الترقية |
يستخدم المشروع فئة BaseDB في modules/core/base_db.py كأساس لكل قواعد البيانات:
- Parameterized Queries: كل استعلامات SQL تستخدم معاملات مُعَلَّمة (
?) بدلاً من سَلسَلة النصوص مباشرة:conn.execute("INSERT INTO words VALUES(?, ?)", (word, count))
- Validation of Table/Column Names: التحقق من أسماء الجداول والأعمدة بـ Regex:
if not re.match(r'^[a-zA-Z_][a-zA-Z0-9_]*$', table): raise ValueError(f"Invalid table name: {table}")
- WAL Mode: استخدام
PRAGMA journal_mode=WALلتحسين الأداء والأمان المتزامن - Foreign Keys: تفعيل
PRAGMA foreign_keys=ONلحماية سلامة البيانات - Context Manager:
connection()يُنفِّذcommitعند النجاح وrollbackعند الفشل تلقائياً
يوفّر المشروع فاحص بيانات حساسة متقدم في modules/security/sensitive_data_scanner.py:
- مكتبة Microsoft Presidio: كشف دقيق باستخدام
presidio-analyzerوpresidio-anonymizer - طبقة Regex احتياطية: تعمل دائماً حتى بدون presidio
- الأنماط المدعومة:
- أرقام بطاقات الائتمان (CREDIT_CARD)
- عناوين البريد الإلكتروني (EMAIL_ADDRESS)
- أرقام الهواتف (PHONE_NUMBER)
- عناوين IP (IP_ADDRESS)
- أرقام الضمان الاجتماعي (SSN)
- مفاتيح API و JWT (API_KEY, JWT_TOKEN)
- مفاتيح AWS (AWS_KEY)
- المفاتيح الخاصة (PRIVATE_KEY)
- أرقام IBAN البنكية (IBAN)
- إخفاء الهوية: دالة
anonymize_text()لاستبدال البيانات الحساسة بـ[REDACTED] - أنماط مخصصة: إمكانية إضافة أنماط كشف إضافية عبر
add_custom_pattern()
- Snyk: مدمج في مسار CI/CD لفحص الثغرات في المكتبات الخارجية تلقائياً
- التحديث الدوري: مراجعة الاعتماديات بانتظام وتحديثها عند اكتشاف ثغرات
يتوفّر CodeProtector في modules/security/code_protector.py:
- كشف ملفات الأكواد: دعم 60+ امتداد (
.py,.js,.java,.cpp,.sql, ...) - استخراج أجزاء الأكواد: من نصوص Markdown (
```) و HTML (<code>,<pre>) - حماية النصوص: لف أجزاء الأكواد بعلامات حماية لمنع تعديلها أثناء المعالجة النصية
- كشف اللغة: دعم 7 لغات برمجية (Python, JavaScript, Java, C++, Go, Rust, SQL)
- منع التدقيق الإملائي: منع فحص الإملاء داخل أجزاء الأكواد البرمجية
يتوفّر FileEncryptor في modules/security/encryption.py:
- تشفير Fernet (AES-128-CBC): تشفير وفك تشفير الملفات باستخدام مكتبة
cryptography - توليد مفاتيح عشوائية: أو استخدام مفتاح/كلمة مرور مخصصة
- تشفير المجلدات: تشفير كامل المجلدات بنمط
glob - حفظ المفاتيح: حفظ المفاتيح في ملفات بصلاحيات
0o600
- Allowed Extensions: القائمة البيضاء لامتدادات الملفات المقبولة (في
OmniFileConfig.allowed_extensions) - Blocked Patterns: حظر أنماط خطيرة مثل
password,secret,api_key - File Fingerprint: بصمة الملفات (
modules/core/file_fingerprint.py) لمنع التكرار والملفات الضارة - Secure File Handler: معالجة آمنة للملفات (
modules/security/secure_file_handler.py) - Audit Logging: تسجيل المراجعة لكل العمليات (
modules/security/audit_logger.py)
- لا ترتكب الأسرار في الكود (Never Commit Secrets): لا تضع مفاتيح API أو كلمات المرور في الكود المصدري
- استخدم متغيرات البيئة: كل البيانات الحساسة تُمرَّر عبر Environment Variables
- ملف
.env: استخدم ملف.envمحلي (مُضاف لـ.gitignore) للتطوير - تدوير المفاتيح: غيِّر مفاتيح API وTokens بشكل دوري
| المتغير | الاستخدام | الحساسية |
|---|---|---|
GEMINI_API_KEY |
مفتاح Google Gemini API | عالية |
OPENAI_API_KEY |
مفتاح OpenAI API | عالية |
HF_TOKEN |
رمز HuggingFace Authentication | عالية |
GITHUB_TOKEN |
رمز GitHub Personal Access | عالية |
GATEWAY_AUTH_TOKEN |
رمز مصادقة AI Gateway | عالية |
CELERY_BROKER_URL |
عنوان Redis/Celery | متوسطة |
DATABASE_URL |
سلسلة اتصال قاعدة البيانات | متوسطة |
# عبر ملف .env (للتطوير فقط)
echo "GEMINI_API_KEY=your-key-here" >> .env
# أو عبر export (لينكس/ماك)
export GEMINI_API_KEY="your-key-here"
# أو عبر OmniFileConfig
cfg.gemini_api_key = os.environ.get("GEMINI_API_KEY", "")- قاعدة بيانات SQLite محلية: SQLite لا يدعم التحكم بالوصول على مستوى المستخدمين. تأكد من حماية مجلد المشروع بأذونات نظام التشغيل المناسبة
- نماذج ML المحمّلة: النماذج المُحمَّلة من HuggingFace قد تحتوي على كود ضار. استخدم
HF_TOKENمع مصادر موثوقة فقط - معالجة الملفات المُحمَّلة: تأكد من فحص الملفات المُحمَّلة قبل المعالجة باستخدام
SensitiveDataScannerوSecureFileHandler - AI Gateway: واجهة AI Gateway (المنفذ 8082) يجب أن تكون خلف جدار حماية ولا تُعرض مباشرة على الإنترنت بدون مصادقة
- Docker: عند استخدام Docker، لا تُمرر الأسرار عبر docker-compose.yml. استخدم Docker Secrets أو ملف
.env - التخزين المؤقت: مجلد
models_cacheيحتوي على نماذج كبيرة. تأكد من عدم مشاركته علنياً
آخر تحديث لهذه الوثيقة: يوليو 2025
OmniFile AI Processor v5.0 — Dr. Abdulmalek Tamer Al-husseini