როგორ გაჟონა Samsung Galaxy S6-ზე გრაფიკული დრაივერის შეცდომამ Google Chrome-ის ჩანართის მონაცემები

ოდესმე გაინტერესებთ როგორ ვლინდება უსაფრთხოების ხარვეზები? ბრიტანეთში დაფუძნებული ფირმა GraphicsFuzz განმარტავს, თუ როგორ წააწყდნენ გრაფიკის დრაივერის შეცდომას Samsung Galaxy S6-ზე, რომლის გამოყენებაც შეეძლოთ Google Chrome-ში გახსნილი ჩანართებიდან მონაცემების სანახავად.

ჯერ კიდევ მარტის ბოლოს, ბრიტანეთში დაფუძნებული დამწყები ფირმა, რომელიც სპეციალიზირებულია GPU სანდოობის ტესტირებაში, მოგვმართა. მათ აღმოაჩინეს GPU შეცდომა რაც იწვევს Qualcomm Snapdragon 845Samsung Galaxy S9/S9+ გადატვირთვა ვებ გვერდის მონახულებისას. ფირმამ დაურეკა GraphicsFuzz, იმუშავა ჩვენთან, რათა შეგვატყობინეთ ეს საკითხი Qualcomm და სამსუნგი. ჩვენი ზოგიერთი მკითხველი დაინტერესდა იმის გაგებით, თუ როგორ მოსწონს კომპანიას GraphicsFuzz შეუძლია ამ დაუცველობის პოვნა, ამიტომ ჩვენ ვითანამშრომლეთ კომპანიასთან, რათა გვეჩვენებინა, თუ როგორ აღმოაჩინეს GPU-ს ძველი დაუცველობა. ეს უკვე დაყენებული დაუცველობა საშუალებას აძლევდა თავდამსხმელს დისტანციურად „თვალთვალოს“ შინაარსი გუგლ ქრომი ბრაუზერის ჩანართები Samsung Galaxy S6.

ეს მომხმარებელი ათვალიერებდა მათი ბანკის ვებგვერდს მავნე ვებგვერდის მონახულებამდე. შიგთავსი დაიჭირეს და აიტვირთეს დისტანციურ სერვერზე. წყარო:

GraphicsFuzz.

როგორ პოულობს GraphicsFuzz GPU შეცდომებს

გრაფიკული დრაივერი მუშაობს Shader პროგრამის აღებით და გაგზავნით GPU-ში შესასრულებლად და ამგვარად გამოსახულების რენდერით. შაიდერის GPU-ზე გაგზავნამდე, გრაფიკის დრაივერი თარგმნის მას GPU-ს გასაგებ ფორმაში; გაუმართავმა თარგმანმა შეიძლება გამოიწვიოს რენდერის წარუმატებლობა, პროგრამის ან მოწყობილობის ავარია, არასწორი სურათები და უსაფრთხოების პრობლემებიც კი. GraphicsFuzz აქვს ავტომატური ტესტირების კომპლექტი რაც მათ საშუალებას აძლევს იპოვონ ეს შეცდომები საცნობარო ჩრდილების ნაკრების საფუძველზე. როცა მომხმარებელი ატარებს მათ ტესტს, ყველა მიღებული სურათი უნდა გამოიყურებოდეს ერთნაირად. ნებისმიერი სურათი, რომელიც განსხვავებულად გამოიყურება, ნიშნავს, რომ იყო შეცდომა.

რამდენიმე პოპულარული მოწყობილობის შედეგები, რომლებიც მუშაობენ GraphicsFuzz ტესტის კომპლექტში. Samsung Galaxy S6, Samsung Galaxy S7 და Samsung Galaxy S8 შედის ამ სქემებში. წყარო: GraphicsFuzz.

Samsung Galaxy S6-ისთვის, GraphicsFuzz აღმოაჩინა, რომ ერთ-ერთ მწკრივში გამოსახულებები აჩვენებდნენ სურათებს, რომლებიც სხვა ცხრილში უნდა ყოფილიყო. ეს ნიშნავს, რომ ადრინდელი ტესტების სურათები გაჟონა მოგვიანებით ტესტებში. შემდეგ გუნდმა ხელახლა გაუშვა სატესტო კომპლექტი Google Chrome-ში და აღმოაჩინა, რომ ვებგვერდის ნაწილები ჩანდა სურათზე. გარდა ამისა, მათ აღმოაჩინეს, რომ სხვა ჩანართის გახსნამ სურათზე სხვა ჩანართების ნაწილების ჩვენება გამოიწვია. არსებითად, ეს შეცდომა საშუალებას აძლევდა Google Chrome-ის ერთ ჩანართს გაეჟონა ინფორმაცია სხვა Chrome ჩანართზე! გუნდი უკან GraphicsFuzz არ იყო განზრახ ეძებდა უსაფრთხოების შეცდომებს, მაგრამ მათ საბოლოოდ იპოვეს ერთი მათი ტესტირების შედეგად. (უნდა აღინიშნოს, რომ გუნდმა გაამრავლა შეცდომა Samsung-ის საფონდო ბრაუზერზე Galaxy S6-ზე, ასევე Mozilla Firefox.)

როგორ მუშაობს ბაგი

გამოსახულება გამოიყენებოდა Samsung Galaxy S6-ზე ხანგრძლივი ხარვეზის გამოსაწვევად. წყარო: GraphicsFuzz.

მიერ შექმნილი "მავნე" ვებ გვერდი GraphicsFuzz იყენებს WebGL-ს ტილოში კოსმოსური სცენის დახატვის მცდელობისთვის, როგორც ეს ნაჩვენებია ზემოთ. თითოეული პიქსელის ფერი განისაზღვრება ფრაგმენტის ჩრდილით, პროგრამა, რომელიც მოწოდებულია ვებგვერდის მიერ GPU-ზე შესასრულებლად. The GraphicsFuzz Framework-მა შეცვალა ფრაგმენტის შადერი, რამაც გამოიწვია მისი გაშვება მართლაც დიდი ხნის განმავლობაში. როდესაც shader მუშაობს ძალიან დიდი ხნის განმავლობაში, ბრაუზერი ან ოპერაციული სისტემა ჩვეულებრივ აჩერებს რენდერს. თუმცა, სანამ GPU-მ შეწყვიტა რენდერირება რამდენიმე პიქსელის დახატვის შემდეგ, GPU-ის დრაივერმა ამის შესახებ Google Chrome-ს არ შეატყობინა. (თუ გადახედავთ სტატიის ზედა ნაწილში არსებულ სურათს, რომელიც აჩვენებს ნაგვის ვიდეო მეხსიერებას, თქვენ რეალურად შეგიძლიათ ნახოთ კოსმოსური სცენის ნაწილები ზედა ნაწილში მარცხნივ.) ეს ნიშნავს, რომ პიქსელები, რომლებიც შეწყვეტამდე იყო გადაღებული, ხელუხლებელი რჩება, რაც იმას ნიშნავს, რომ საბოლოო გადაღებული სურათი ძირითადად ნაგვის ვიდეოა. მეხსიერება. ვინაიდან ვიდეო მეხსიერება განუწყვეტლივ გამოიყენება სხვა ვებ გვერდების გასაფორმებლად, „ნაგვის“ მონაცემები რეალურად შეიცავს სხვა ვებ გვერდების წინა რენდერებს. ამრიგად, სხვა ვებ გვერდები გამოჩნდება "მავნე" ვებ გვერდზე. რაც მთავარია, WebGL საშუალებას აძლევს ვებ გვერდს აღბეჭდოს შიგთავსი, რასაც ასახავს; ეს სურათი შემდეგ აიტვირთება დისტანციურ სერვერზე.

დიაგრამა, რომელიც ხსნის GPU-ს ხანგრძლივ ხარვეზს, რომელიც იწვევს Chrome tab მონაცემების „გაჟონვას“. წყარო: GraphicsFuzz.

Google Chrome იყენებს მრავალ პროცესს, ამიტომ სხვადასხვა ჩანართები ხშირად იზოლირებულია, რაც ამ ექსპლოიტის ზედაპირზე შეუძლებლად გამოიყურება. თუმცა, Chrome ურთიერთქმედებს GPU-სთან ერთი "GPU პროცესის" გამოყენებით, რაც ნიშნავს, რომ ყველა ჩანართი იზიარებს ერთსა და იმავე GPU მეხსიერებას, რაც ამ ექსპლოიტის მუშაობის საშუალებას იძლევა. ზემოთ მოცემული დიაგრამა უფრო დეტალურად აჩვენებს ამას.

შეცდომა ნაჩვენებია ამ ვიდეოში პირველი 22 წამის განმავლობაში. ასევე ნაჩვენებია GraphicsFuzz-ის მიერ აღმოჩენილი უსაფრთხოების სხვა საკითხები.

სასწავლი გაკვეთილები

არასწორად მოქცეულ GPU-ს შეუძლია Google Chrome-ისა და Android-ის ყველა უსაფრთხოების ზომების გვერდის ავლით, რადგან WebGL საშუალებას აძლევს ნებისმიერ მავნე ვებგვერდს გაუგზავნოს კოდი GPU-ს შესასრულებლად. Google ვერ ასწორებს GPU-ს შეცდომებს ვინაიდან კომპანია არ აკონტროლებს აპარატურას და დრაივერებს. ამ შემთხვევაში, GPU-ის გამყიდველს (ამ შემთხვევაში, ARM-ს) ევალება შეცდომის გამოსწორება და OEM-მა, რომლის მოწყობილობებზეც დაზარალდა (ამ შემთხვევაში, Samsung) განაახლებს შესწორება განახლებაში. დაამატეთ მატარებლები ნარევს და ადვილი იქნება იმის დანახვა, თუ როგორ შეიძლება მსგავს შეცდომის გამოსწორებას დიდი დრო დასჭირდეს - ამას დასჭირდა მინიმუმ 5 თვე Samsung Galaxy S6-ის მომხმარებელთა უმეტესობისთვის პაჩის მიღება.

GraphicsFuzz ეხმარება GPU მომწოდებლებს იპოვონ ძნელად გამოვლენილი შეცდომები, როგორიცაა არასწორი კომპილაციის შეცდომები, რაც იწვევს არასწორი კოდის გენერირებას და შესრულებას GPU-ზე. მათი ავტომატური ტესტირების ჩარჩო მათ საშუალებას აძლევს იპოვონ ისეთი შეცდომები, როგორიცაა ამ სტატიაში ნაჩვენები. "მავნე" ვებგვერდის მიერ გამოწვეული ხანგრძლივი ციკლი ასევე აჩვენა, რომ იწვევს პრობლემებს სხვა მოწყობილობებზე, როგორიცაა HTC One M7 და ახლახანს Samsung Galaxy S9. GraphicsFuzz ამოწმებს ფლაგმანურ სმარტფონებს და აქვეყნებს ა შედეგების ცხრილი რომელიც აფასებს ამ მოწყობილობებს მათი ტესტების ქვეჯგუფზე მათი მუშაობის მიხედვით. ასობით ავარია და რენდერის შეცდომები აღმოაჩინეს მათი ტესტირების დროს, მაგრამ უმეტესობა არ არის გამოკვლეული იმის დასადგენად, არის თუ არა ისინი უსაფრთხოების საფრთხეს. თუმცა, როგორც ეს ექსპლოიტიდან ჩანს, არასწორად მოქცეული GPU არის უსაფრთხოების რისკი და შესაძლებელია, რომ ერთი ან მეტი კრიტიკული უსაფრთხოების ხარვეზები ელოდება აღმოჩენას. GraphicsFuzz იმედოვნებს, რომ GPU გამყიდველები პრიორიტეტს ანიჭებენ მძღოლის ხარისხის გაუმჯობესებას მომავალში.

გრაფიკული დრაივერების შედარებითი საიმედოობა, დალაგებულია საერთო საკითხების მიხედვით. წყარო: GraphicsFuzz.

გამჟღავნების ვადები

  • 2016 წლის დეკემბერში, GraphicsFuzz შეატყობინა შეცდომა Google Chromium შეცდომების ტრეკერი რადგან ის დაკმაყოფილდა Chrome Reward პროგრამისთვის. მას შემდეგ, რაც GraphicsFuzz-მა შეცდომის გაგზავნა Google Chromium-ის შეცდომების ტრეკერზე, შეცდომა მიიღო Google-მა და გადაუგზავნა ის ARM-სა და Samsung-ს შესწორებისთვის.
  • Google ანგარიში გაუგზავნა ARM-სა და Samsung-ის კონტაქტებს.
  • Samsung-მა ჩუმად გაასწორა შეცდომა და გამოასწორა Android 7.0 Nougat განახლებაში, რომელიც გამოვიდა 2017 წლის მარტიდან ივნისამდე. მიუხედავად იმისა, რომ არ იყო შექმნილი CVE Samsung-ის, Google-ის ან ARM-ის მიერ და არც Samsung-მა და არც ARM-მა არ გაავრცელეს ინფორმაცია პატჩის შესახებ, გაითვალისწინეთ, რომ GraphicsFuzz არ შეატყობინა შეცდომის შესახებ სათანადო პროცესი.
  • მოგვიანებით, GraphicsFuzz შეძლო დაადასტუროს, რომ Samsung-მა და ARM-მა ნახეს მოხსენება და რომ ARM-მა შეძლო პრობლემის გამოსწორება მოხსენების გამო.
  • 2017 წლის აგვისტოში, GraphicsFuzz დაჯილდოვდა Google-ის მიერ 2000 დოლარით შეცდომების შესახებ ანგარიშისთვის.
  • 2017 წლის ნოემბერში, ხარვეზის ანგარიში საჯარო გახდა.