
يمكن أن تسمح ثغرة أمنية للمهاجم بتخمين رمز السر الذي يتم إنشاؤه تلقائيًا في وضع التطوير.
يمكن أن تسمح ثغرة أمنية للمهاجم بتخمين الرمز السري لوضع التطوير المُنشأ تلقائيًا.
في Ruby-on-Rails عند تشغيله في وضع التطوير. في وضع التطوير، يمكن للمهاجم تخمين المفتاح المستخدم لتأمين الجلسات.
يستخدم Rails 3 بيئات (development,test,production)، وعندما يستخدم التطبيق وضع التطوير يمكنك تخمين الرمز السري وفك تشفير الجلسة المشفرة.
المفتاح المستخدم لحماية الجلسة مشتق من اسم التطبيق.
مثال:
rails new Jakom
Jakom: اسم التطبيق.
من خلال هذا يمكننا تخمين أن المفتاح هو ناتج طريقة التوليد:
PKDF2_HMAC_SHA1[ MD5 [ APPNAME + "::Application" ] , salt: "authenticated encrypted cookie" , iterations: 1000 , key's length: 32 ]
كما نرى هنا:
key = pbkdf2_hmac("sha1", md5_name.encode("utf-8"), "authenticated encrypted cookie".encode("utf-8"), 1000, 32)
في Rails، تُشفَّر الجلسات باستخدام AES-265-GCM، وإذا كان لديك المفتاح يمكنك فك تشفير/تشفير الجلسات.
آخر ما ستحتاجه هو تنسيق الجلسة:
BASE64 [ DATA ] -- BASE64 [ IV ] -- BASE64 [ AUTH_TAG ]
كما نرى هنا:
data = binascii.hexlify(base64.b64decode(base64_data.split("--")[0])).decode("utf-8")
iv = binascii.hexlify(base64.b64decode(base64_data.split("--")[1])).decode("utf-8")
tag = binascii.hexlify(base64.b64decode(base64_data.split("--")[2])).decode("utf-8")
الجزء الأول من كوكي الجلسة هو البيانات المشفرة، والجزء الثاني هو IV، والجزء الثالث هو علامة GCM (علامة المصادقة).
بهذه المعلومات يمكننا فك تشفير جلساتنا مباشرة:

