ماذا يحدث فعلًا حين تتسرّب كلمة مرورك

نُشر في بقلم David Carrero

حين تتسرّب كلمة مرور أحدهم، يتخيّل الأمر حادثًا عابرًا: خدمة مرّ عليها يوم سيئ، وخرج الخبر في الصحافة، فغيّرتها وانتهى الأمر. لم ينتهِ. يوم التسريب ليس نهاية شيء: إنه اليوم الأول في خط إنتاج سيعمل لسنوات، ولن تظهر أنت فيه باسمك أبدًا. يستحق أن تُروى القصة كاملة، لأن أحدًا تقريبًا لا يراها.

الخطوة الأولى: أحدهم يسحب قاعدة البيانات

البداية لا شيء فيها من المشهدية. أحدهم يعثر على حقن SQL، أو نسخة احتياطية مكشوفة، أو لوحة إدارة ببيانات الاعتماد الافتراضية. ويخرج بجدول.

ذلك الجدول، في أحسن الأحوال، يحوي بريدك وhash لكلمة مرورك. وفي أسوئها، يحوي بريدك وكلمة مرورك. نصًّا صريحًا. كما كتبتها تمامًا.

2009 اثنان وثلاثون مليون كلمة مرور نصًّا صريحًا

في ديسمبر 2009، تعرّضت شركة widgets لشبكات التواصل اسمها RockYou لحقن SQL. خرجوا بنحو 32 مليون كلمة مرور، ولم يكن ثمة hash يُكسر: كانت تحفظها نصًّا صريحًا.

كانت كارثة لـRockYou وهديّة لكل من عداها. لأول مرة صار موجودًا متن ضخم من كلمات مرور حقيقية، كتبها أناس لا يعلمون أن أحدًا سيقرؤها. لا دراسة عنها: الشيء نفسه.

صار الملف هو rockyou.txt، ولا يزال القاموس المرجعي الذي تُجرَّب به الهجمات. قيمته ليست في أنه يحوي كلمة مرورك: بل في أنه يحوي كيف يكتب الناس كلمات المرور. اسم وسنة، الكلمة و123، الـ! في الآخر. RockYou لم يسرّب 32 مليون سرّ. سرّب النمط. والنمط لا تنتهي صلاحيته.

الخطوة الثانية: يُكسر ما أمكن، من دون أي عجلة

هنا يخذلك الحدس. حين يحاول أحدهم تخمين كلمة مرورك في شاشة الدخول لخدمة ما، الخدمة تقطع عليه الطريق: ثلاث محاولات، وCAPTCHA، وحظر. أمام خادم، التخمين بطيء وصاخب.

أمام ملف hashes صار على قرصه الصلب، لا خادم هناك. لا أحد على الطرف الآخر ليقول لا. يُجرَّب محليًّا، بالـGPUs، بلا حدٍّ للمحاولات ومع كل الوقت في العالم. وإن كانت الخدمة قد عملت الـhash بشكل سيئ — خوارزمية سريعة، بلا ملح — فالفرق بينه وبين النص الصريح فرق راحة، لا فرق أمان.

ولا تُجرَّب عشوائيًّا: أولًا rockyou.txt، ثم قواعد مشتقّة منه. بدّل الـa بـ@. أضف سنة في الآخر. كل حيلة بدت لك بارعة مكتوبة منذ أكثر من عقد في ملف إعدادات.

من هناك يخرج جزء من الـdump وقد صار كلمات مرور مقروءة. والباقي — الطويل، العشوائي، ما ليس في أي قاموس — يبقى ضجيجًا. هذا هو الخط الذي يرسمه المدقّق: لا يوبّخك، بل يقول لك في أي الجانبين تقع.

الخطوة الثالثة: يُدمج، وهنا تساوي مالًا

dump وحيد لا يساوي كثيرًا. الثمين هو التجميع: أن تأخذ عشرة تسريبات من مواقع مختلفة، وتدمجها عبر البريد، وتحتفظ بأزواج بريد:كلمة مرور صريحة بالفعل. النتيجة تُسمّى combolist، ولم تعد قاعدة بيانات أحد. إنها قائمة أشخاص.

2013 الجرد يخرج إلى العلن

في ديسمبر 2013، أطلق Troy Hunt موقع Have I Been Pwned: قاعدة بيانات عامة لعناوين البريد التي ظهرت في تسريبات، ليتمكن أي أحد من السؤال إن كان داخلها. الفكرة في جوهرها بسيطة ومزعجة: إن كان المهاجمون يملكون الجرد أصلًا، فحجبه عن الضحايا لا يحمي أحدًا. وبعد سنوات جاء Pwned Passwords، الذي يفعل الشيء نفسه مع كلمات المرور ويتيح الاستعلام عنها من دون إرسالها: يُرسَل جزء من الـhash فيعيد الخادم دفعة من المرشّحين، من دون أن يعرف أيّها كان لك.

2017 الـNIST يكفّ عن طلب الرموز ويبدأ بطلب القوائم

حين نشر الـNIST وثيقة SP 800-63B، رمى من النافذة معظم عقيدة النماذج المتوارثة، ووضع مكانها شرطًا لم يتوقعه كثيرون: عند تعيين كلمة مرور، على النظام أن يقارنها بقائمة قيم معروف أنها مخترقة وأن يرفضها إن ظهرت فيها.

هذا تغيير في النظرية، لا في التفاصيل. السؤال لم يعد إن كانت كلمة مرورك تبدو قوية، بل إن كانت منشورة بالفعل. لهذا يفعل المولّد الشيء المعقول الوحيد: يُخرجها من مكان لم تكن فيه قط.

2019 التسريب الذي كان أصلًا إعادة طبخ لتسريبات أخرى

في يناير 2019 تداولت حزمة اشتهرت باسم Collection #1. حلّلها Hunt وأحصى ما فيها: نحو 773 مليون عنوان بريد فريد ونحو 21 مليون كلمة مرور فريدة نصًّا صريحًا، مجمّعة من آلاف المصادر.

المهم لم يكن الحجم. المهم من أين خرجت: كانت في جانب كبير منها إعادة طبخ لتسريبات سابقة، مكسورة سلفًا وموضوعة في صيغة مريحة — وإن كان Hunt قد وجد فيها أيضًا مادة لم تكن مفهرسة لديه حتى ذلك الحين. المنتَج لم يكن الاختراق. كان الجرد. وجردٌ كهذا له استعمال واحد لا غير.

Credential stuffing: لا أحد يهاجمك أنت

لا أحد يهاجمك أنت. هذا هو الجزء الذي يصعب استيعابه.

لا أحد يجلس ليفكر في حسابك. أحدهم يأخذ combolist من مئات ملايين الأسطر، ويدخلها في أداة تجرّبها على نموذج الدخول لبنك أو بريد، ويوزّع المحاولات على عناوين IP كثيرة كي لا يوقظ آليات الحظر، وينتظر. الغالبية الساحقة تفشل. لا يهم: تكلفتها تكاد تكون صفرًا.

هذا هو credential stuffing، وهو ليس تخمينًا. إنه تحقّق. كلمة المرور عندهم أصلًا؛ الشيء الوحيد الذي يكتشفونه هو أين وضعتها أيضًا.

كلمة مرورك في ذلك المنتدى لم تكن مهمة. والمنتدى كذلك. المهم أن السلسلة نفسها من الحروف تفتح بريدك، وبريدك يفتح كل ما تبقّى عبر «نسيت كلمة المرور». الخطيئة الأصلية ليست أنها كانت ضعيفة: بل أنها كانت هي نفسها. كلمة مرور من ثلاثين حرفًا، عشوائية ومثالية، أُعيد استخدامها في موقعين، تساوي أسوأ الاثنين. وأنت لا تتحكم في كيف يعمل أسوأ الاثنين الـhash.

ما الذي يُستخلص من هذا كله

  • تغيير كلمة المرور المسرّبة لا يكفي إن كنت قد كرّرتها. العاجل ليس الموقع الذي خرج في الأخبار. بل الآخرون.
  • كلمة مرور لكل موقع، ولا يهمّك أن تنساها. إن كنت تستطيع تذكّر كل كلمات مرورك، فإما أنها قليلة جدًّا أو سيئة جدًّا.
  • العامل الثاني يكسر السلسلة. الـcredential stuffing يجرّب بريد:كلمة مرور. فإن لم يكن ذلك كافيًا للدخول، فقد الجرد قيمته.

كلمة مرورك المسرّبة ليست في يد عدوّ. إنها في سطر داخل ملف، بين مئات ملايين غيرها، تنتظر أن يجد أحدهم أن تجريبها في موقع إضافي يستحق العناء. والشيء الوحيد الذي يقرّر إن كان ذلك سينجح قرّرته أنت قبل سنوات، يوم كتبت الكلمة نفسها للمرة الثانية.


المصادر: تسريب RockYou (ديسمبر 2009) والاستخدام اللاحق لـrockyou.txt قاموسًا للهجوم · Have I Been Pwned وPwned Passwords، لـTroy Hunt · NIST SP 800-63B، بشأن مقارنة كلمات المرور بقوائم القيم المخترقة · تحليل Troy Hunt لـCollection #1 (يناير 2019) والأرقام التي نشرها · تعريف credential stuffing لدى OWASP.

← العودة إلى المدونة