এক নিরাপত্তা গবেষক Google-এর ডেভেলপার ডকুমেন্টেশন সাইটে একটি রিমোট কোড এক্সিকিউশন দুর্বলতা খুঁজে পান। এই সাইটগুলোর মধ্যে ভাগ করা OAuth ফ্লো ম্যাপ করার সময় গবেষক লক্ষ্য করেন যে /oauth2authorize এন্ডপয়েন্ট একটি অস্বাভাবিকভাবে বড় Flask সেশন কুকি সেট করছে, প্রায় ১,২০০ বাইট, যা একটি CSRF টোকেন ও রিটার্ন URL-এর জন্য প্রয়োজনের তুলনায় অনেক বেশি। Flask সেশন কুকি স্বাক্ষরিত থাকে কিন্তু এনক্রিপ্ট করা থাকে না, তাই যার কাছে কুকি আছে সে এর বিষয়বস্তু পড়তে পারত।
কুকি ডিকোড করে গবেষক একটি pickle-সিরিয়ালাইজড অবজেক্ট পান, যাতে Google-এর OAuth client_id ও client_secret সাদা লেখায় ছিল। তিনি দেখেন যে client secret-ই Flask-এর SECRET_KEY হিসেবেও ব্যবহৃত হচ্ছিল, অর্থাৎ একই মান স্বাক্ষর ধারণ ও যাচাই দুটোই করত। স্বাক্ষরের কী কুকির ভেতরেই প্রকাশিত থাকায় গবেষক অফলাইনে বৈধ স্বাক্ষর পুনর্গণনা করে যেকোনো সেশন ডেটা জাল করতে পারতেন।
কলব্যাক এন্ডপয়েন্ট সেশন থেকে OAuth ফ্লো ডেটা পড়ে pickle.loads-এ পাঠায়। জাল সেশনের মাধ্যমে একজন আক্রমণকারী একটি ক্ষতিকর pickle পেলোড সরবরাহ করতে পারত, যা এটিকে প্রমাণীকরণবিহীন রিমোট কোড এক্সিকিউশন পথে পরিণত করত। গবেষক শুধু time.sleep চালু করে এমন একটি পেলোড ব্যবহার করে নিরাপদভাবে সমস্যাটি যাচাই করেন এবং Google-এর প্রোডাকশন সিস্টেমে কোনো কমান্ড চালানো এড়িয়ে যান।
এই আবিষ্কার দেখায় কীভাবে ক্লায়েন্ট-সাইড সেশন ডেটায় গোপন তথ্য সংরক্ষণ এবং অবিশ্বস্ত pickle ডেটা ডিসিরিয়ালাইজ করা একত্রে একটি গুরুতর দুর্বলতায় পরিণত হতে পারে। এই বাগের জন্য ৯০,০০০ ডলার পুরস্কার মিলেছে।
উৎস: Hacker News · সারাংশ: HeadlinesBriefing