
एक भेद्यता किसी हमलावर को स्वचालित रूप से उत्पन्न डेवलपमेंट मोड गुप्त टोकन का अनुमान लगाने की अनुमति दे सकती है।
एक भेद्यता किसी हमलावर को स्वचालित रूप से उत्पन्न डेवलपमेंट मोड सीक्रेट टोकन का अनुमान लगाने की अनुमति दे सकती है।
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 टैग (प्रमाणीकरण टैग) है।
इन जानकारियों के साथ हम अपने सत्रों को सीधे डिक्रिप्ट कर सकते हैं:

