
Google-ს ორი თვე დასჭირდა DevSite-ის დაუცველობის გამოსწორებას, რომელიც ავტორიზაციის გარეშე კოდის შესრულებას იძლეოდა
ხელახლა გამოყენებული OAuth-ის კლიენტის საიდუმლო გასაღებით თავდამსხმელმა მოახერხა Flask-ის სესიის ქუქიების გაყალბება და Python-ის კოდის შესრულება DevSite-ის სერვერებზე, რომლებზეც developers.google.com და ექვსი დოკუმენტაციის საიტი მუშაობს.
ხელახლა გამოყენებული საიდუმლო გასაღები დისტანციურ კოდის შესრულებად იქცა
Google-მა გამოასწორა ავტორიზაციის გარეშე დისტანციური კოდის შესრულების (RCE) დაუცველობა DevSite-ში, პლატფორმაში, რომელზეც developers.google.com და კიდევ რამდენიმე დოკუმენტაციის საიტი მუშაობს. ხარვეზს, რომელსაც Google-მა S0, სიმძიმის სკალის უმაღლესი დონე, მიანიჭა, Otark GmbH-ის პროგრამული ინჟინერი Simon Köck აღმოაჩინა.
საწყისი მიზეზი ხელახლა გამოყენებული OAuth-ის კლიენტის საიდუმლო გასაღები იყო. DevSite Flask-ის სესიის ქუქიში ინახავდა Google-ის oauth2client ბიბლიოთეკის სერიალიზებულ OAuth2WebServerFlow ობიექტს, რომელიც კომპანიამ google-auth-ის სასარგებლოდ მიატოვა, და ამით გასაღები გამოამჟღავნა. იმავე გასაღებს Google DevSite-ის სესიის ხელმოწერის გასაღებადაც იყენებდა, რაც Köck-მა ქუქის ხელმოწერის ოფლაინ გამრავლებით დაადასტურა.
გაყალბებული სესიები შვიდ დომენზე მიიღებოდა
Köck-მა დაადასტურა, რომ გაყალბებული სესიები შვიდივე დაზარალებულ დომენზე მიიღებოდა, რომლებიც ორ სხვადასხვა ხელმოწერის გასაღებს ეყრდნობოდა. კოდის შესრულება მან სამ მათგანზე აჩვენა: developers.google.com, docs.partner.android.com და web.dev. ავტორიზაციის გარეშე RCE მან Python-ის sleep-ის payload-ით გადაამოწმა და პასუხის დაყოვნებები გაზომა, თუმცა განზრახ თავი შეიკავა ბრძანებების გაშვებისა და ფაილებზე, მონაცემებზე თუ შიდა სერვისებზე წვდომისგან.
„ამას განსაკუთრებით სერიოზულ RCE-ს დავარქმევდი, რადგან მას ნებისმიერი მიაღწევდა ანგარიშისა და მსხვერპლის ჩარევის გარეშე“, ამბობს Köck The New Stack-თან.
Google-მა 90 000 დოლარის ჯილდო გადაიხადა: 75 000 დოლარი საბაზისო გადახდაა S0 დონის RCE-ისთვის იმაში, რასაც კომპანია აპლიკაციის ჩვეულებრივ დონედ მიიჩნევს, გამრავლებული 1,2-ზე ანგარიშის განსაკუთრებული ხარისხისთვის.
ჯაჭვი Pickle-ის დესერიალიზაციამ დაასრულა
OAuth-ის callback სესიის მონაცემების დესერიალიზაციისთვის Python-ის pickle-ს იყენებდა. Köck-მა flow-ის ობიექტი მავნე pickle payload-ით შეცვალა, გაყალბებულ ქუქის ხელი მოაწერა და callback-ს ის შეასრულებინა. ჯაჭვისთვის სამი შეცდომა უნდა დალაგებულიყო: ქუქიში გამჟღავნებული გასაღები, იმავე გასაღების ორმაგი დატვირთვა ხელმოწერის გასაღებად და სესიის მონაცემების არაუსაფრთხო დესერიალიზაცია. რომელიმეს გამოსწორება ჯაჭვს გააწყვეტდა.
ორი თვე გამოსწორებაზე, პასუხგაუცემელი კითხვები რჩება
Köck-მა დაუცველობა 6 აგვისტოს შეატყობინა, Google-მა კი ის მეორე დღეს მიიღო. ჯილდო 27 აგვისტოს დამტკიცდა, გამოსწორება კი მხოლოდ 7 ოქტომბერს განხორციელდა. Google-ს არ აუხსნია ორთვიანი ვადა, დანერგა თუ არა დროებითი შემარბილებელი ზომები და განახლდა თუ არა ორი გამჟღავნებული OAuth-ის კლიენტის საიდუმლო გასაღებიდან რომელიმე და გაუქმდა თუ არა არსებული სესიები. Köck ამბობს, რომ ფორენზიკული დასკვნა არასოდეს მიუღია და არ იცის, იპოვა თუ არა Google-მა გამოსწორებამდე ექსპლუატაციის მტკიცებულება. ამ განახლებისთვის Google-ს კომენტარის თხოვნაზე პასუხი არ გაუცია.
Arvin Shivram, სინგაპურელი მკვლევარი, რომელიც @brutecat-ის სახელით მოღვაწეობს და საკუთარი აღრიცხვით 130-ზე მეტი Google-ის დაუცველობა შეატყობინა, აღნიშნავს, რომ App Engine-ის შიდა აპლიკაციებს ხშირად აქვთ წვდომა Stubby-ზე, Google-ის შიდა სერვისთაშორისი კომუნიკაციის სისტემაზე. Köck აღიარებს, რომ ეს წვდომა „ზემოქმედების მნიშვნელოვანი ნაწილი შეიძლება იყოს“, თუმცა არ გადაუმოწმებია, რასთან შეეძლო ამ კონკრეტულ DevSite-ის პროცესს მისვლა. მან დოკუმენტაციის კონტენტზე ჩაწერის უფლებაც არ შეამოწმა, სადაც შეცვლილი ინსტალაციის ბრძანებები ან ჩამოტვირთვის ბმულები მიწოდების ჯაჭვის შეტევას გამოიწვევდა. მისი აღრიცხვით, დემონსტრირებული ზემოქმედება სამ ჰოსტზე კოდის შესრულება და შვიდზე მიღებული გაყალბებული სესიებია, სრული ზემოქმედების არეალი კი, მათ შორის Google-ის შიდა სერვისებამდე მიმავალი გზები, დაუმტკიცებელი რჩება.
წყაროები: Thenewstack
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.