الانتباه تلقائيًا حين يتراجع أمان موقع ما
روبوت صغير يفحص مواقعي كل 30 دقيقة، وينبّه إلى أي إعداد أمني اختفى بصمت.
الحاجة
إعداد أمني حُذف خطأً أثناء تحديث لا يُرى، إلى أن يلاحظه تدقيق أو عميل.
الفكرة
لا تعتمد على تذكّر الفحص. اجعل الفحص يعمل من تلقاء نفسه، بعيدًا عمّا يراقبه، حتى لا يُخفي عطلٌ عطلًا آخر أبدًا.
ما الذي بنيته
- أداة فحص للحمايات القياسية التي ينبغي أن يرسلها أي موقع: خمس ترويسات أمان، والتحويل إلى HTTPS، وإعدادات ملفات تعريف الارتباط، وانتهاء صلاحية الشهادة مع تنبيه قبل ثلاثة أسابيع.
- تعمل وفق جدول خاص بها، خارج المواقع، وتحفظ سجلها في قاعدة بيانات مستقلة.
- لوحة متابعة خاصة، خلف بوابة مصادقة.
النتيجة
- 30 دقيقةبين كل فحصين
- 5ترويسات أمان يُتحقق منها في كل فحص
- 3 أسابيعتنبيه مسبق قبل انتهاء صلاحية الشهادة
- 30 أغسطس 2026في الخدمة منذ
في فحصه الأول، وجد ترويسة تكشف إصدار إطار العمل المستخدم، وأُصلحت خلال ساعة. ثم كشف خطأه هو: كانت لوحته الأولى عامة ومدرجة في خريطة الموقع، أي خريطة جاهزة للمهاجمين عمليًا. أُغلقت في اليوم نفسه ثم أُعيد فتحها خلف مصادقة.
بالصور
ما الذي تعلّمته
على أداة الأمان أن تجتاز فحصها هي أولًا. فأداة المراقبة التي تعرض علنًا ما تراقبه تصبح أداة استطلاع لكل من يعثر عليها.
التفاصيل التقنية التقنيات والبنية والقرارات، للقرّاء التقنيين
التقنيات المستخدمة
- Node.js (دون اعتماديات npm)
- Express
- SQLite (node:sqlite)
- مؤقّت systemd
- Cloudflare Access
كيف يعمل
- الفحوص: وجود CSP وHSTS وX-Frame-Options وX-Content-Type-Options وReferrer-Policy؛ وعدم تسريب معلومات عبر Server أو X-Powered-By؛ وخاصيتا Secure وHttpOnly على كل ملف تعريف ارتباط؛ وإعادة التوجيه من HTTP إلى HTTPS؛ وشهادة TLS لا تنتهي صلاحيتها خلال ثلاثة أسابيع.
- صفر اعتماديات npm: وحدات Node المدمجة فقط.
- فصل مقصود في التصميم: أداة الفحص خدمة systemd تُشغَّل كل 30 دقيقة وتكتب في قاعدة SQLite خاصة بها؛ واللوحة تقرأ تلك القاعدة فقط ولا تُجري أي فحص بنفسها.
- بعد الانكشاف الذي تسببت فيه بنفسها: أُزيلت اللوحة من خريطة الموقع ومن robots.txt، ونُقلت معرّفات الخدمة خارج الشيفرة المصدرية، ثم أُعيد فتحها خلف Cloudflare Access فقط على نطاق فرعي مخصّص.
ما لا يزال ناقصًا
- اللوحة غير عامة، عن قصد