# سياسة الأمان — ذُخر (Security Policy) > **العربية أولًا، ويليها ملخّص بالإنجليزية.** — [English summary](#english-summary) يعالج تطبيق **ذُخر** بيانات عائلية شخصية: أسماء ونَسَب وأرقام جوّال وصور ومناسبات. تسريب واحد لا يمسّ مستخدمًا واحدًا، بل عائلة كاملة. لذلك نأخذ البلاغات الأمنية على محمل الجدّ، ونلتزم بالإفصاح المنسَّق (Coordinated Vulnerability Disclosure). --- ## 1. كيف تُبلِّغ عن ثغرة **لا تفتح Issue عامًّا، ولا تنشر التفاصيل على أي منصة قبل الإصلاح.** بالترتيب المفضَّل: | القناة | الرابط | |---|---| | **GitHub Private Vulnerability Reporting** (مفضَّل) | تبويب **Security → Report a vulnerability** في المستودع | | **البريد** | `security@dhokhor.com` | نقبل البلاغات بالعربية أو الإنجليزية. هذه السياسة منشورة على **** (واختصارها `dhokhor.com/security`)، ويشير إليها ملف **** وفق RFC 9116 — ويُقدَّم الملف نفسه من `app.dhokhor.com` ومن نطاقات العوائل الفرعية. ### ما نحتاجه في البلاغ 1. **الوصف**: نوع الثغرة وأثرها العملي (ماذا يستطيع المهاجم فعله؟). 2. **البيئة**: `dev.dhokhor.com` أو `stage.dhokhor.com` أو الإنتاج، ونسخة التطبيق (تظهر في شاشة الدخول)، والمنصّة (ويب / iOS / Android). 3. **خطوات إعادة الإنتاج**: مرقَّمة، مع الطلبات الكاملة (المسار، الترويسات، الجسم) — ترويسة `x-family` مهمّة تحديدًا في أي بلاغ يخصّ العزل بين العوائل. 4. **إثبات مفهوم** (PoC): سكربت أو `curl` أو تسجيل شاشة قصير. 5. **الأثر المقدَّر**: كم مستخدمًا/عائلة يطال؟ هل يحتاج المهاجم إلى حساب؟ هل يحتاج صلاحية إدارية؟ 6. **معرّفاتك الاختبارية**: رقم الجوال أو معرّف الحساب الذي استخدمته، ليسهل علينا تتبّع أثرك في السجلّات وتنظيفه. 7. كيف تحبّ أن يُنسب لك الفضل (أو رغبتك في البقاء مجهولًا). --- ## 2. التزامنا الزمني | المرحلة | المدّة المستهدفة | |---|---| | إشعار باستلام البلاغ | **٣ أيام عمل** | | تقييم أولي وتصنيف الخطورة | **٧ أيام** | | إصلاح ثغرة حرجة (Critical) | **٧ أيام**، مع تخفيف مؤقّت خلال ٤٨ ساعة إن أمكن | | إصلاح ثغرة عالية (High) | **٣٠ يومًا** | | إصلاح متوسطة/منخفضة | مع الإصدار المخطَّط التالي | | الإفصاح العلني المنسَّق | بعد نشر الإصلاح، أو **٩٠ يومًا** من البلاغ — أيّهما أسبق | سنُبقيك على اطّلاع بالتقدّم كل أسبوعين على الأقل ما دام البلاغ مفتوحًا. إن تجاوزنا هذه المدد دون مبرّر فلك أن تُذكِّرنا، ولك أن تفصح بعد الـ ٩٠ يومًا. --- ## 3. النطاق (Scope) ### داخل النطاق ✅ - `dhokhor.com` و `www.dhokhor.com` (بما فيها صفحة الانضمام `/join` وصفحة الدعوات `/rsvp`) - `app.dhokhor.com` — واجهة الـ API الخلفية - `invite.dhokhor.com` - `dev.dhokhor.com` و `stage.dhokhor.com` — **وهي البيئات المفضَّلة للاختبار** - مواقع العوائل العامة على النطاقات الفرعية `*.dhokhor.com` والنطاقات المخصَّصة المرتبطة بها - تطبيقا iOS و Android (Capacitor) - شيفرة هذا المستودع: `nestjs/` و `angular/` و `nestjs/models/` وملفات النشر ### أنواع الثغرات التي تهمّنا أكثر - **اختراق العزل بين العوائل (multi-tenancy)** — أي وصول إلى بيانات عائلة لست عضوًا فيها. هذه أخطر فئة عندنا. - تجاوز المصادقة أو التفويض: تزوير JWT، تجاوز `JwtAuthGuard`، ترقية دور إلى admin/superadmin. - خلل في تدفّق OTP أو الرمز السريع (quick-code): إعادة تعيين رمز بلا إثبات هوية، أو إعادة استخدام OTP، أو تخمينه. - كشف بيانات شخصية (جوّالات، صور، مناسبات) لغير المُصادَقين أو لمن لا يملك الصلاحية. - الوصول غير المصرَّح به إلى تخزين الوسائط (S3) أو إلى روابط الدعوات ورموزها. - حقن (NoSQL / SSTI في قوالب مواقع العوائل / XSS مخزَّن) أو تجاوز حاجز CSP في قوالب المواقع. - تسريب أسرار في الحِزَم المبنية (bundle) أو في صور Docker. - SSRF، أو رفع ملفات يؤدي إلى تنفيذ. ### خارج النطاق ❌ - خدمات الأطراف الثالثة بحدّ ذاتها: Twilio، Firebase، Linode Object Storage، MongoDB Atlas، Sentry، Google Analytics، Mobiscroll. أبلغ مالكيها مباشرةً — إلا إن كان الخلل في *طريقة استخدامنا* لها. - هجمات الحرمان من الخدمة (DoS/DDoS) والاختبارات الحِمليّة، **وإغراق رسائل OTP/SMS** (يكلّفنا مالًا حقيقيًا ويزعج مستخدمين حقيقيين). - الهندسة الاجتماعية على المالك أو المستخدمين أو مزوّدي الخدمة، والتصيّد، والوصول المادي. - ترويسات أمان ناقصة، أو إعدادات TLS/SPF/DMARC، أو أعلام كوكيز — **بلا أثر عملي مُثبَت**. - Self-XSS، وClickjacking على صفحات لا تحمل إجراءً حسّاسًا، وتعداد المستخدمين عبر فروق التوقيت. - مكتبة قديمة في `package-lock.json` بلا إثبات استغلال في سياق هذا التطبيق. - تقارير آليّة من ماسحات نقاط الضعف بلا تحقّق يدوي. - ثغرات لا تعمل إلا على جهاز مكسور الحماية (jailbroken/rooted) أو بامتياز جذري على جهاز الضحية. --- ## 4. قواعد الاشتباك (Rules of Engagement) اختبر **على `dev.dhokhor.com` أو `stage.dhokhor.com` كلما أمكن**. وإن اضطررت للإنتاج: 1. **استخدم حساباتك أنت فقط**، وعائلة العرض «آل ذخر» (`demo`) للاختبار. 2. **لا تلمس بيانات عائلة حقيقية.** إن أثبتّ اختراق العزل بين العوائل: **توقّف فورًا** عند أول سجلّ يثبت الثغرة، ولا تستمرّ في السحب، وأبلغنا. 3. **لا تسحب بيانات شخصية ولا تحتفظ بها ولا تنشرها.** لقطة شاشة تُبرز الأثر مع إخفاء المعلومات كافية. 4. **لا تحذف ولا تعدّل ولا تُتلف بيانات غيرك.** (الحذف عندنا ناعم `status = 'DELETED'` — لكن لا تختبره على أحد.) 5. **لا تُشغِّل هجمات آلية عالية المعدّل** على الإنتاج، ولا تستهدف نقاط OTP بمعدّلات مرتفعة. 6. **لا تُعطِّل الخدمة** ولا تُخفِ آثارك ولا تزرع أبوابًا خلفية. 7. أبلغ فورًا عن أي انكشاف عارض لبيانات حقيقية، واحذف ما وصلك منها بعد إرسال البلاغ. --- ## 5. الملاذ الآمن (Safe Harbor) إذا التزمتَ بهذه السياسة بحسن نيّة: - نعتبر بحثك **مُصرَّحًا به**، ولن نتّخذ إجراءً قانونيًا ضدّك ولا نطلب من غيرنا اتّخاذه. - إن رفع طرفٌ ثالث دعوى بسبب نشاط التزم بهذه السياسة، سنوضّح أن النشاط كان مصرَّحًا به. - إن تجاوزتَ خطًّا عن غير قصد ثم أبلغتنا فورًا وتوقّفت، سنأخذ حسن النيّة بعين الاعتبار. هذا الملاذ لا يشمل: انتهاك خصوصية مستخدمين حقيقيين، أو إتلاف بيانات، أو الابتزاز، أو نشر البيانات، أو النشر قبل الإفصاح المنسَّق. --- ## 6. المكافآت والتقدير **لا يوجد برنامج مكافآت مالية** — ذُخر مشروع عائلي صغير الموارد. لكن: - نُدرج اسمك (أو اسمًا مستعارًا تختاره) في ملاحظات الإصدار وفي قائمة الشكر أدناه، ما لم تطلب البقاء مجهولًا. - نُرسل لك تأكيدًا مكتوبًا بالثغرة وتاريخ إصلاحها إن احتجته لسجلّك المهني. ### شكرًا لمن أبلغ _لا مساهمات مسجَّلة بعد._ --- ## 7. الإصدارات المدعومة ذُخر خدمة مُستضافة (SaaS) وتطبيق جوّال؛ الإصلاحات تُنشر إلى الأمام فقط، ولا نُصدر تصحيحات لإصدارات قديمة. | ما يُدعم | الحالة | |---|---| | الإنتاج على `dhokhor.com` (أحدث نشر) | ✅ مدعوم | | أحدث إصدار على App Store / Google Play | ✅ مدعوم | | إصدارات جوّال أقدم | ⚠️ حدِّث التطبيق — لا تصحيحات رجعية | | فروع أو نُسَخ (forks) ذاتية الاستضافة | ❌ غير مدعومة | سِجلّ الإصدارات ومصدر رقم النسخة الوحيد: [angular/src/app/releases.ts](angular/src/app/releases.ts). --- ## 8. ضوابط الأمان القائمة (لسياق الباحث) - **المصادقة**: OTP عبر SMS للتسجيل، ثم رمز سريع أو بصمة. الرمز `JWT/HS256` بصلاحية **١٨٠ يومًا**. - **تعدّد المستأجرين**: كل استعلام على مجموعة مرتبطة بعائلة يُقيَّد بـ `family`، مصدره ترويسة `x-family` المقروءة من `@CurrentFamily()` على الخادم — لا من جسم الطلب. - **التفويض**: `@UseGuards(JwtAuthGuard)` على كل نقطة مُصادَقة، وحُرّاس مسارات في الواجهة (`CanActivateFamily` / `CanActivateUser` / `CanActivateAdmin`). أي قاعدة تفويض تعمل في المتصفح فقط تُعدّ ثغرة. - **المدخلات**: DTOs مع `class-validator` على كل نقطة كتابة. - **الحذف ناعم** (`status = 'DELETED'`) لكل الكيانات التي يراها المستخدم. - **قوالب مواقع العوائل** تُصيَّر داخل حاجز CSP معزول. - **الأسرار** في `nestjs/src/config.json` (غير مُلتزَم في git) أو في متغيّرات بيئة الخادم. - **التتبّع**: Sentry للأخطاء، وسجلّات nginx على الخادم. > نتتبّع بنودنا الأمنية المفتوحة داخليًا. البلاغ الذي يطابق بندًا نعرفه **يُصنَّف > ويُعالَج بهذه السياسة نفسها**، ولا يُردّ بحجّة أنه «معروف» دون إصلاح أو تاريخ إصلاح > نلتزم به. --- ## 9. إذا مسّت الحادثة بيانات مستخدمين عند تأكّد وصول غير مصرَّح به إلى بيانات شخصية: 1. نحتوي الثغرة ونُدوّر الأسرار المتأثّرة (تدوير سرّ JWT يُبطل كل الجلسات النشطة). 2. نحدّد العوائل والحسابات المتأثّرة من السجلّات. 3. نُخطر المتأثّرين داخل التطبيق وعبر SMS، بوصف ما انكشف وما فعلناه، خلال **٧٢ ساعة** من التأكّد. 4. ننشر ملخّصًا في [angular/src/app/releases.ts](angular/src/app/releases.ts) بلغة مفهومة لأفراد العائلة. --- ## English summary **Dhokhor** is a family-tree app handling personal data of whole families (names, lineage, phone numbers, photos, events). We follow coordinated vulnerability disclosure. This policy lives at , pointed to by (RFC 9116). **Report privately** — never in a public issue: - GitHub **Security → Report a vulnerability** (preferred), or - `security@dhokhor.com` Include: impact, environment (`dev`/`stage`/prod, app version, platform), numbered reproduction steps with full requests (the **`x-family` header matters** for any tenant-isolation report), a PoC, and the test accounts you used. **Our timeline:** acknowledgement in 3 business days · triage in 7 days · critical fix in 7 days · high in 30 days · coordinated public disclosure at fix release or **90 days**, whichever comes first. **In scope:** `dhokhor.com`, `www`, `app`, `invite`, `dev`, `stage`, family public sites on `*.dhokhor.com` and their custom domains, the iOS/Android apps, and this repository's code. We care most about **cross-family (multi-tenant) data access**, auth/authorization bypass, OTP and quick-code flaws, PII exposure to unauthenticated callers, media-storage or invite-token access, injection and CSP escapes in family site templates, and leaked secrets in builds. **Out of scope:** third-party services themselves (Twilio, Firebase, Linode, MongoDB Atlas, Sentry, Google Analytics, Mobiscroll), DoS/load testing and **OTP/SMS flooding**, social engineering, physical access, missing headers or TLS/cookie settings without demonstrated impact, self-XSS, clickjacking on non-sensitive pages, dependency-version reports without a working PoC, and unverified scanner output. **Rules of engagement:** test on `dev`/`stage` where possible; use only your own accounts and the `demo` family; on proving a cross-family leak, **stop at the first record** that demonstrates it and report; never exfiltrate, retain, publish, modify, or delete anyone's data; no high-rate automation against production. **Safe harbor:** good-faith research within this policy is authorized; we will not pursue legal action and will state that the activity was authorized. It does not cover privacy violations, data destruction, extortion, or disclosure before coordination. **No monetary bounty** — we credit reporters in the release notes unless they prefer to stay anonymous. **Supported:** the current production deployment and the latest mobile release only; no backports, and self-hosted forks are unsupported. --- _آخر تحديث: 2026-08-30._