الطبعة الأولى · RWID · Ecobook Edition
من إعداد RWID Press.
نشأ هذا الكتاب من حدث حقيقي واحد: هجوم آلي على
remoteworker.id في 2 أكتوبر 2026. وبدلًا من إخفائه، كشفناه
واتخذنا من ذلك الهجوم مادة للتعليم. يسير كل فصل على النمط نفسه:
النظرية → الطريقة الشائعة في الصناعة → كيف تفعل Ecosphere ذلك → شذرات من الحادثة الحقيقية.
هذا الكتاب ليس ملخصًا للأخبار. إنه يشرح لماذا بُني النظام على هذا النحو، لا مجرد ما الذي رُكِّب فيه.
هذا الكتاب ينمو. كل هجوم جديد يصل إلى RWID سيصبح فصلًا جديدًا في الطبعة التالية. وشراء هذا الكتاب يعني امتلاك سجلٍّ يتزايد باستمرار، لا قراءةً واحدة ثم نهاية. وكلما زاد عدد من يحاولون إسقاطنا، ازداد الكتاب سماكة.
© RWID. نُشر بوصفه Ecobook.
يعمل RWID (Remote Worker Indonesia) منذ عام 2017. وفي عام 2025 انتشر انتشارًا واسعًا، وصاحب هذا الانتشار اتهامات مسيئة من كثيرين لا يعرفونه: بأنه احتيال (scam). وقد رويتُ الجانب الإنساني من القصة في صفحة مرحبًا من هذا التطبيق، ولن أكرر كل ما فيها هنا. الذي ينبغي أن تعرفه نتيجة واحدة فقط: توقف RWID، ثم قرر العودة بعد عام.
وعندما قررتُ العودة، أعدتُ ترتيب الأولويات. ليست الميزات أولًا. وليس المظهر أولًا. الأمان أولًا. والسبب بسيط: تلك الاتهامات بالاحتيال، صحيحةً كانت أم خاطئة، جعلتني أدرك أن RWID لن يستطيع أبدًا إثبات أي شيء إذا انهار نظامه عند أول هجوم. في عام 2025 بنيتُ بسرعة، واستعنتُ بخدمات كثيرة من أطراف ثالثة، وتكيفتُ مع طرائق لا أراها أنا نفسي قابلة للاستمرار. وإحداها أضاعت كل الإجراءات المخزَّنة (stored procedures) في RWID. ومنذ ذلك الحين تمسكتُ بمبدأ واحد: Zero Trust — لا تثق بأي شيء قادم من الإنترنت حتى يثبت نفسه.
ولذلك حين عاد RWID في عام 2026، بنيتُه على أساس مختلف، وتحديتُ العالم علنًا:
كان ذلك المنشور، على Instagram وThreads، هو الشرارة. لقد تعمدتُ الانفتاح. فالهجوم الذي جاء لم يكن مفاجأة؛ بل كان ضيفًا دعوناه بأنفسنا. وللغاية واحدة: أن نثبت علنًا أن هذا النظام قوي، وإن تبيّن أنه ليس كذلك بعد، فنحن نريد أن نعرف الآن، لا حين يكون ملايين الناس يشاهدون.
وُلد هذا الكتاب من تلك الدعوة. فهو يشرح نظرية الأمان التي يقوم عليها، والبنية التي بنيناها، والهجمات الحقيقية التي صددناها فعلًا بعد ساعات من انتشار ذلك المنشور.
وثمة أمر ستراه مرارًا: قوتنا ليست في سور عظيم واحد، بل في الطريقة التي نركّب بها النظام بحيث يمكن لإصلاح صغير واحد أن ينتشر بسرعة إلى كل شيء. تلك هي Ecosphere.
— RWID Press
كُتب هذا الكتاب لـبُناة المنتجات، وخصوصًا من يتعلمون أثناء البناء (vibe coders، والبنّائين المنفردين، من المبتدئين إلى المتوسطين). ولا يفترض أنك تفهم الأمان مسبقًا. كل ما أفترضه: أنك تستطيع بناء تطبيق ويب، وتريد بناءه بمعايير الإنتاج.
يسير كل فصل على النمط نفسه، وهذا النمط هو ما يجعل هذا الكتاب مفيدًا:
يمكنك القراءة بالترتيب، أو القفز إلى الفصل الذي تحتاجه. تشير العلامة
→ إلى قراءة إضافية. وقد أبقيتُ المصطلحات التقنية الإنجليزية متى
كانت هي المصطلح المعتمد (payload وrate limit وquery)، لتتعرف عليها
في أي توثيق.
هذا الكتاب لا يغني عن الممارسة. وفي آخره قسم Tools: أزرار لتشغيل محاكاة هجوم في بوابة RWID، وقائمة تحقق لإعدادات الأمان، وقالب لتقرير يُرفع إلى مزوّد خدمة الإنترنت (ISP).
الجزء 1 · المسرح
الجزء 2 · لماذا هذا النظام قوي
الجزء 3 · أسس الأمان
الجزء 4 · فئات الهجوم & الدفاع
الجزء 5 · العمليات & التوسع
الجزء 6 · دراسة حالة & أدوات
هذا الكتاب ينمو. كل هجوم جديد يصل إلى RWID سيصبح فصلًا جديدًا في الطبعة التالية. وشراء هذا الكتاب يعني امتلاك سجلٍّ يتجدد باستمرار، لا قراءةً واحدة ثم نهاية.
قبل الحادثة، وقبل النظرية، ثمة أمر ينبغي أن تراه أولًا. هذا وجه RWID:
ذلك الـGlobe ليس زينة. لم يُصنع عشوائيًا. لقد صُمم بوصفه مراقبًا عالميًا للنظام في الزمن الحقيقي — شاشة واحدة تجيب عن سؤال «ما الذي يحدث الآن في كل أنحاء عالم RWID؟» دون الحاجة إلى فتح لوحة تقنية.
وهو في الوقت نفسه أمران: دليل اجتماعي (يرى الزائر أن المجتمع حقيقي ونشط) ومراقب تشغيلي (من أين تأتي حركة المرور، وأي العقد سليمة). شاشة واحدة، ووظيفتان.
هذه لقطة للـGlobe أثناء هجوم 2 أكتوبر 2026. ظهرت أسماء غريبة من نقطة واحدة بعينها — Cikarang — متتابعة وسريعة وغير طبيعية: سلسلة بلا انقطاع من المدينة نفسها، بنمط لا يمكن أن يقوم به إنسان عادي. وفجأة امتلأ العالم الهادئ قبل لحظات بمصدر واحد لا غير.
ولأن كل نبضة يصاحبها صوت، لم أكن بحاجة إلى التحديق في الشاشة لأعرف أن شيئًا ما خاطئ. تلتقط الأذن قبل أن تتمكن العين من القراءة. وما إن يأتي ذلك الصوت متتابعًا حتى يكون رد الفعل واحدًا: افتح الـGlobe، وهناك يتضح كل شيء.
تلك هي القيمة الحقيقية للمراقب: ليس مجرد عرض البيانات، بل جعل ما هو خاطئ مرئيًا ومسموعًا — يستحيل تفويته.
والـGlobe ليس الوحيد الذي يصرخ. في قناة Telegram، يرسل بوتنا التنبيه نفسه — تلقائيًا، من حارس (guard) يراقب الحافة:
وصلت إشارتان في الوقت نفسه تقريبًا: العين (الـGlobe) والآلة (Telegram). وليس ذلك مصادفة. فالنظام مصمَّم عمدًا لينبّه من أكثر من اتجاه — حتى إذا غابت حادثة عن النظر، التُقطت في موضع آخر. الكشف الجيد لا يعتمد على حاسة واحدة.
لأنه هنا بالذات يتبين الشذوذ. حين يُراقَب نظام بوصفه عالمًا حيًا واحدًا، يبرز كل ما هو غير طبيعي — اسم غريب، ونبضة في غير موضعها. ليس لأن أحدًا يقرأ السجلات (logs) في الثالثة فجرًا، بل لأن العالم نفسه يُظهر أن شيئًا ما خاطئ.
المراقب الجيد لا يعرض الأرقام فحسب؛ بل يجعل ما هو خاطئ يبدو خاطئًا. والـGlobe هو أوضح مثال على ذلك المبدأ، والحادثة التي نناقشها ابتداءً من الفصل 2 هي برهانه.
→ الفصل 2 · لمحة عن الحادثة.
قبل الدخول في النظرية، لنرَ أولًا ما حدث فعلًا. هذا مقتطف سبق أن نشرناه بوصفه مذكرة هندسية في توثيق Ecosphere، بعد تبسيطه لقارئ هذا الكتاب.
في 2 أكتوبر 2026، نحو الساعة 18:16–18:37 بتوقيت غرب إندونيسيا (WIB)، شغّل عنوان IP واحد
في Cikarang بجاوة الغربية ماسح ثغرات آليًا ضد
remoteworker.id. وخلال تلك الفترة، حظرت حافتنا (Cloudflare)
397 طلبًا. استهدف ذلك الماسح نقطتَي الدخول والتسجيل
(/signin و/signup و/api/auth/register)، وأرسل مجسّات حقن، وفحص
مسارات الثغرات في WordPress المعروفة منذ عقود.
المهم ليس الرقم. المهم هو ما لم يحدث:
الأثر الوحيد الذي أفلت: 43 حسابًا مزعجًا سُجِّلت من ذلك العنوان IP. حذفناها كلها؛ وبقي 30 مسجِّلًا حقيقيًا سالمين.
الدرس الأول: الهجوم الذي يجعلك أقوى ليس الهجوم الفاشل، بل الهجوم الذي كُشف واحتُوي وأُبلغ عنه بالأدلة.
لم تكن هذه الحادثة مفاجأة. بل هي جواب عن التحدي الذي نشرناه نحن بأنفسنا. وبقية الكتاب تشرح لماذا استطاع النظام أن يبقى هادئًا إلى هذا الحد، وما الذي يمكنك محاكاته في نظامك.
→ تابع إلى الفصل 3 · ما هي Ecosphere لفهم الأساس الذي جعل كل هذا ممكنًا.
شرح «LXS» دون شرح Ecosphere أشبه بشرح اللبنة دون شرح البناء. لذا نبدأ من البناء.
الطريقة المعتادة لبناء التطبيقات في عشرينيات هذا القرن تكدّس الطبقات: يُغلَّف التطبيق في حاوية (container)، وتُنسَّق الحاويات عبر Kubernetes، ثم تُضاف شبكة الخدمات (service mesh)، ووسيط الرسائل (message broker)، وسلسلة من الخدمات المُدارة. وهذا معقول للفرق الكبيرة. أما لشخص واحد يبني منتجًا، فهو عبء: كل طبقة تزيد من السطح الذي قد يخطئ، و— وهو الأهم لهذا الكتاب — السطح الذي يمكن مهاجمته.
تتخذ Ecosphere اتجاهًا آخر. فهي ترى التطبيق مجموعة من القدرات الصغيرة المتكاملة، لا كتلة واحدة عملاقة ولا حاويات لا تُحصى.
remoteworker.id هو estate.في جملة واحدة: قدرة واحدة في مكان واحد تعني مكانًا واحدًا للإصلاح. إذا وُجدت ثغرة في LXS المصادقة، فإنك تصلحها مرة واحدة، وتنشر إصدارًا جديدًا، ويمكن لكل estate يستخدمه أن يرتقي بإصداره. فلا تضطر إلى إصلاح شيفرة تسجيل الدخول المنسوخة في عشرة مشاريع.
هذا ما نسميه القوة المنتشرة: إصلاح سريع في نقطة واحدة ينتشر إلى النظام كله، بدل أن يبقى في تطبيق واحد.
Ecosphere ليست نظرية محبوسة في هذا الكتاب. المنصة مفتوحة للتجربة — من التثبيت والتوثيق إلى تركيب تطبيقك الأول:
كلما زاد عدد من يبنون عليها، زاد عدد من يسهمون في تقوية الأساس نفسه. وهذا جزء من القصد: أمان يُشارَك، لا يُصان كلٌّ على حدة.
في الفصل التالي نتعمق في جذريها النظريين — Domain-Driven Design ومفهوم LXS نفسه — قبل أن ننتقل إلى الفصل الأهم في قوتنا: Gateway وAuth.
قبل LXS كانت الفكرة أولًا: Domain-Driven Design (DDD). لن يعلّمك هذا الكتاب DDD كاملًا، لكن ثمة مفهومًا واحدًا منه ينبغي أن تفهمه، لأن أمننا يرتكز عليه.
تخيّل كلمة «user». في نطاق الهوية، يعني user حسابًا بكلمة مرور وجلسة. وفي نطاق المقالات، user هو مجرد كاتب. وفي نطاق المحفظة، user هو صاحب الرصيد. فإذا أجبرتَ تعريفًا واحدًا لـ«user» على الجميع، صارت شيفرتك تعتمد على بعضها تدريجيًا، وكل تغيير يمس كل شيء.
Bounded context هو الجواب: ضع حدودًا واضحة. لكل سياق نموذجه الخاص، وبياناته الخاصة، وعقده الخاص. ولا يستعير بعضها أنواع بيانات بعض.
النظام المبني على حدود صارمة له خصائص ثمينة للأمان:
خلاصة القول: الحدود الواضحة ضابط أمني. فحين لا يمكن الوصول إلى مكوّن إلا عبر باب واحد معلَن، يصبح التفكير في أمنه أسهل بكثير من شيفرة متصلة ببعضها في كل اتجاه.
يشرح DDD كيف تفكر في الحدود. لكنه لا يشرح كيف تعبّئ تلك الحدود في شيء يمكن تشغيله وتركيبه بأمان. لذلك نحتاج إلى LXS — موضوع الفصل التالي.
→ الفصل 5 · LXS: خدمات Linux بوصفها لبنات البناء.
LXS هي الطريقة التي يُعبَّأ بها النطاق في ملف تنفيذي واحد جاهز للتشغيل، مع عقد يقرأه الإنسان والآلة معًا. ويعمل أصليًا (native) داخل LXC — بلا طبقة محاكاة افتراضية ثقيلة، وبلا صور حاويات متراكمة.
تعلن كل LXS عن نفسها علنًا:
public وauth و
role:...).هذا العقد ليس توثيقًا سلبيًا. فعند النشر (deploy)، تتحقق المنصة مما إذا كان estate يمنح فعلًا ما طُلب — وترفض التركيب غير المطابق. ولا تستطيع LXS أن تصل خِفية إلى شيء لم تعلن عنه.
تُنشر LXS في إصدارات غير قابلة للتغيير (immutable): [email protected] تعني ذلك
الملف التنفيذي بعينه. فلا تعدّل إصدارًا نُشر؛ بل تصلح بنشر
إصدار جديد. والنتيجة أن إصلاح الثغرة يصبح فعلًا حاسمًا وقابلًا للتتبع: إصدار جديد واحد،
وسجل تغييرات واحد، وقرار واحد بالترقية في الـestate المتأثر.
قاعدة «LXS واحدة = نطاق واحد» تُبقي الملف التنفيذي صغيرًا ومركّزًا. وسطح الهجوم فيه صغير بدوره: هذه العملية لا تحمل قدرات لا تحتاجها. لا مفسّر ضخم، ولا إطار عمل شامل؛ فقط ما هو لازم.
هذا لبّ الكتاب كله: تسجيل الدخول والإشعارات والتخزين والمقالات — كلها قدرات هي نفسها في كل تطبيق تقريبًا. لا ننسخها إلى كل مشروع؛ بل ننشرها مرة واحدة بوصفها LXS ثم نستخدمها مرارًا. وحين تظهر مشكلة أمنية في إحداها، لا يلزم تكرار الإصلاح في عشرة أماكن.
وثمة LXS اثنتان هما الأكثر حسمًا في قوتنا. ونناقشهما في الفصل التالي.
→ الفصل 6 · Gateway & Auth: مصدر القوة.
لو كان في هذا الكتاب فصل واحد أريدك أن تتذكره، فهو هذا الفصل.
في كثير من الأنظمة يتوزع الأمان: كل خدمة تحمي نفسها، وتنسخ منطق تسجيل الدخول، ولها تفسيرها الخاص لمن يحق له الدخول. والنتيجة متوقعة: عدم اتساق، وصعوبة في التدقيق، وإصلاح ثغرة واحدة يعني لمس أماكن كثيرة.
نحن نفعل العكس. فثمة LXS اثنتان تتخذان تقريبًا كل القرارات الأمنية، وكلتاهما مركّبتان أمام كل estate.
الـGateway هو المدخل الوحيد من الإنترنت إلى خدمات الـestate. وهو يعمل
بمبدأ deny-by-default: لا يمكن عبور مسار إلا إذا كتبه
الـestate صراحةً، مع مستوى الوصول (public وauth و
role:superadmin). لا «أعِد توجيه كل شيء». ولا طرق مختصرة.
والنتائج:
Auth هي LXS التي تمسك الهوية: كلمة المرور، والجلسة، والرمز (token)، والدور. ويمكنها أيضًا أن تعمل بوصفها مزوّد هوية (OIDC) بحيث تتشارك عدة تطبيقات حسابًا واحدًا. ولأن كل الـestates تستخدم Auth نفسها، فنموذج الجلسة موحّد كذلك — وهذا مهم، لأن معظم هجمات الويب تستهدف الجلسة.
ومن أكثر القرارات أثرًا نقل الجلسة من
localStorage إلى cookie من نوع HttpOnly. لا يستطيع أي سكربت في الصفحة
قراءة cookie HttpOnly، ولذلك فثغرة XSS واحدة لا تعني تلقائيًا سرقة
الجلسة. وقد أُنجز هذا التغيير أيضًا مرة واحدة في Auth، ثم سرى على كل estate
يستخدمها. (القصة الكاملة في الفصل 12.)
تخيّل ثلاثة عوالم:
لهذا أسمّي الـgateway وauth مصدر قوتنا. ليس لأنهما كاملتان، بل لأنهما تمكّناننا من التحرك بسرعة حين يُكتشف النقص — وهذا أهم بكثير من ادعاء «آمن» لا يمكن إثباته.
حين أطلق ماسح 2 أكتوبر هجماته على مسارات الدخول، لم تكن كل خدمة هي التي صدّت. بل الـgateway هو الذي رفض الغالبية، وAuth هي التي ضمنت بقاء جدار التسجيل الناري (التحقق من البريد) سليمًا. لم نضطر إلى لمس عشرين مكوّنًا؛ يكفي باب واحد وسلطة واحدة.
→ هنا ينتهي الأساس المفاهيمي. الجزء 3 يبدأ من مبادئ الأمان التي تسري على أي نظام، سواء أكان LXS أم لا.