Zenbleed: ყველაფერი რაც თქვენ უნდა იცოდეთ AMD უსაფრთხოების ამ ხარვეზის შესახებ

უახლესი უახლესი სერიის უსაფრთხოების შეცდომების პროცესორებისთვის, Zenbleed არის კიდევ ერთი რამ, რაც უნდა შესწორდეს. აი, რა უნდა იცოდეთ.

მას შემდეგ, რაც Spectre და Meltdown CPU-ის ექსპლოიტები გამოქვეყნდა 2018 წელს, გამოთვლითი სამყარო საკმაოდ ფხიზლად იყო. პროცესორებში უსაფრთხოების ხარვეზებისა და ხარვეზების პოვნის შესახებ და ბოლო ხუთი წლის განმავლობაში მკვლევარებმა ტონა აღმოაჩინეს. 24 ივლისს, კიდევ ერთი ექსპლოიტი საჯაროდ გამოცხადდა მას შემდეგ, რაც პირველად გამოქვეყნდა მაისში. ამჯერად, ის სპეციფიკურია AMD პროცესორებისთვის, რომლებიც აშენებულია Zen 2 არქიტექტურაზე და მას უწოდებენ "ზენბლედი". აქ არის ყველაფერი, რაც თქვენ უნდა იცოდეთ Zenbleed-ის შესახებ და რას ნიშნავს იგი მსოფლიოსთვის.

როგორ მუშაობს Zenbleed?

Zenbleed ძალიან ჰგავს სხვა აპარატურაზე დაფუძნებულ უსაფრთხოების შეცდომებს, როგორიცაა Spectre, რადგან ის იყენებს CPU-ების სპეკულაციურ შესაძლებლობებს. მუშაობის გაუმჯობესების მიზნით, CPU სპეკულირება ან იწინასწარმეტყველა შემდეგი რამ, რაც მათ უნდა გააკეთონ, და მას შემდეგ, რაც Spectre პირველად იქნა გამჟღავნებული, მსოფლიომ შეიტყო, რომ სპეკულაცია შეიძლება იყოს ძალიან არასაიმედო, თუ გაკეთდება არასწორად.

წყარო: Tavis Ormandy

CPU-ში რეგისტრებს შეუძლიათ შეინახონ მცირე რაოდენობის მონაცემები, როგორც წესი, ინსტრუქცია, შენახვის მისამართი ან ნებისმიერი სხვა სახის მცირე მონაცემი. XMM რეგისტრები x86_64 არქიტექტურაში (ასე რომ, ნებისმიერი დაზარალებული Zen 2 პროცესორი) შეიძლება გამოყენებულ იქნას მხოლოდ მონაცემებზე გამოთვლებისთვის და არა მეხსიერების მიმართვისთვის. ეს გაფართოვდა 256 ბიტამდე YMM რეგისტრების შემთხვევაში და 512 ბიტამდე ZMM რეგისტრებში. ამ შემთხვევაში, XMM ეხება ქვედა 128 ბიტს სულ ZMM რეგისტრების 512 ბიტი.

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

ფილიალის პროგნოზირება და სპეკულაციური შესრულება ფართოდ ეხება, როდესაც თქვენი კომპიუტერი ასრულებს ოპერაციებს, რომლებიც ჯერ არ არის საჭირო, მაგრამ სავარაუდოდ საჭირო იქნება მომდევნო ციკლებში. ეს ხშირად კეთდება იმ დროს, როდესაც თქვენს სისტემას აქვს თავისუფალი რესურსები, რადგან ის აჩქარებს მთლიან დამუშავებას, როდესაც სხვაგვარად ინსტრუქციები ან მონაცემები ჯერ კიდევ არ იქნება მზად CPU-სთვის. თუ შესრულებული სამუშაო არ არის საჭირო, ის ჩვეულებრივ უგულებელყოფილია და პროცესორს შეუძლია გადახტეს იქ, სადაც მას სჭირდება, რათა შეასრულოს შემდეგი, სწორი, ინსტრუქცია. როდესაც ის ამას აკეთებს, ამას ეწოდება ფილიალის არასწორი პროგნოზი.

სადაც პრობლემა ჩნდება არის vzeroupper ინსტრუქციაში, რომელიც ნულობს ბიტებს YMM და ZMM რეგისტრებიდან 128 და უფრო მაღალ პოზიციაზე. ეს კეთდება განსაკუთრებით AVX-სა და მოძველებულ SSE კოდს შორის გადასვლისას, რადგან ის ამცირებს შესრულებას ცრუ დამოკიდებულებებით გამოწვეული ჯარიმები და ასევე თავიდან აიცილებთ ეფექტს, რომელიც მსგავსია მთელი რიცხვის პოპულარიზაციაში C.

თუ პროცესორი სპეკულაციურად შეასრულებს vzeroupper ინსტრუქციას, არ ხდება სათანადო დაბრუნება. თუმცა, დაზარალებული Ryzen პროცესორები შეიძლება აიძულონ მისგან აღდგენა, თუმცა არასწორად. ამ მდგომარეობაში ყოფნის შემდეგ, პროგრამას, რომელსაც ამჟამად ახორციელებს, შეუძლია რეალურ დროში დაათვალიეროს ეს რეგისტრები, ნახოს მონაცემები, რომლებიც მიედინება სისტემაში ნებისმიერ დროს.

რომელ პროცესორებზე გავლენას ახდენს Zenbleed და როდის იქნება ხელმისაწვდომი პატჩები?

როგორც უკვე აღვნიშნეთ, მხოლოდ AMD CPU-ები, რომლებიც დაფუძნებულია Zen 2 არქიტექტურაზე, ცნობილია, რომ არიან დაუცველები Zenbleed უსაფრთხოების შეცდომის მიმართ, მაგრამ Zen 2 არქიტექტურა ამუშავებს პროცესორებს სამ სერიაში, რაც ართულებს იმის გარკვევას, თუ რომელი CPU არის დაუცველი და რომელი. არ არიან. აქ არის ცხრილი, რომელიც უნდა ასახავდეს ყველაფერს:

ზემოქმედების ქვეშ მყოფი პროცესორები

Ryzen 3000 სერია

ყველა APU-ების გარდა (მაგ. Ryzen 3 3200G)

ეპიკური რომი

ყველა

Ryzen 4000 სერია

ყველა

Ryzen 5000 სერია

მხოლოდ 5300U, 5500U და 5700U

Ryzen 7000 სერია

მხოლოდ 7020 APU (მაგ. Ryzen 3 7320U)

ეს არის AMD პროცესორების საკმაოდ დიდი რაოდენობა და ეს მხოლოდ ისაა, რაც აქამდე დადასტურებულია. Zen 2 ასევე გამოიყენება APU-ებში, რომლებიც უზრუნველყოფენ Steam Deck-ს, Xbox Series S და X-ს და PS5-ს. ჩვენ არ გვსმენია, რომ ეს პროცესორები ასევე დაზარალდნენ, მაგრამ თუ ვიმსჯელებთ ამ ექსპლოიტის მუშაობის მიხედვით, გამიკვირდება, თუ მათზეც არ იმოქმედოს. ნაკლებად სავარაუდოა, რომ AMD-მ გაასწორა ის Xbox-სა და PS5-ში, ვინაიდან 7020 სერიის ჩიპები, რომლებიც უფრო ახალია, ასევე გავლენას ახდენს.

წერის დროს, მიკროკოდი გაიგზავნა Linux-ის ბირთვში რომელიც დაასწორებს ამ დაუცველობას და თქვენს ოპერაციულ სისტემას ან BIOS-ს შეიძლება უკვე ჰქონდეს განახლება, რომელიც აგვარებს ამ პრობლემას.

რას ნიშნავს ეს კომპიუტერებისთვის, რომლებიც იყენებენ დაუცველ პროცესორებს?

ამაზე პასუხის გაცემა რთულია, რადგან ყველა კომპიუტერი არ არის თანაბარი. ნორმალური ადამიანებისთვის, რომლებიც მხოლოდ სათამაშო დესკტოპებსა და ლეპტოპებს იყენებენ, თქვენ ალბათ არ გჭირდებათ ასეთი წუხილი. ეს საკმაოდ დახვეწილი ექსპლოიტია და მიუხედავად იმისა, რომ ეს ახლა საზოგადოებისთვის ცნობილია, ჯერ არ არის ცნობილი თავდამსხმელის მაგალითები, რომ Zenbleed-ი რაიმეს გასატეხად გამოიყენოს.

თუმცა, ფსონები გაცილებით მაღალია მონაცემთა ცენტრებისთვის და მნიშვნელოვანი ადამიანებისთვის, რომლებიც ამუშავებენ მგრძნობიარე ინფორმაციას საკუთარ კომპიუტერებზე. არსებობს მიზეზი, რის გამოც AMD ძალიან მკაფიოდ აცხადებდა, რომ Epyc Rome შესწორებული იყო დაუცველობის გასაჯაროებამდე: ბევრი მგრძნობიარე ინფორმაციას ამუშავებს Epyc CPU-ები და კატასტროფა იქნება, თუ წარმატებით განხორციელდება ნებისმიერი CPU, რომელიც უზრუნველყოფს ფართომასშტაბიან სერვერებს. თავს დაესხა. Linux kernel 6.4.6 უკვე გამოვიდა და აფიქსირებს ამ დაუცველობას ში შემობრუნებით ოფიციალური მიკროკოდის პაჩი AMD-დან. როგორც ჩანს, მაიკროსოფტი მსგავს რამეს ჩართავს Windows-ში.

შემაშფოთებელია, AMD-ის ოფიციალური BIOS პატჩები შესაძლოა რამდენიმე თვის განმავლობაში არ გამოვიდეს, ამ შემთხვევაში, არსებობს "ქათმის ნაჭერი", რომელიც შეგიძლიათ დააყენოთ, თუ მუშაობთ Linux ან FreeBSD აპარატზე. Linux მანქანებზე შეგიძლიათ გამოიყენოთ msr-ინსტრუმენტები და შეასრულოთ შემდეგი ბრძანება.

wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))

FreeBSD-ზე ასევე შეგიძლიათ გამოიყენოთ შემდეგი.

cpucontrol(8)

SMT-ის გამორთვა საკმარისი არ არის დაუცველობის შესამცირებლად.

ერთი რამ, რაც Zenbleed-ს განსაკუთრებით ცუდს ხდის არის ის, რომ Zen 2 იყო AMD-ის ერთ-ერთი ყველაზე პოპულარული CPU არქიტექტურა. მან დაიწყო AMD-ის დაბრუნება 2019 და 2020 წლებში და უამრავი ადამიანი, კომპანია და ორგანიზაცია კვლავ იყენებს კომპიუტერებს Zen 2 პროცესორებით 2023 წელს, განსაკუთრებით Epyc Rome. პროცესორები. ეს არ არის ისეთი ცუდი, როგორც Spectre (რომელიც გავლენას ახდენს თითქმის ყველა 2019-მდე CPU-ზე) და Meltdown (რომელიც გავლენას ახდენს თითქმის ყველა 2019 წლამდე Intel CPU-ზე), მაგრამ მაინც საკმაოდ ფართოდ გავრცელებული.

უსაფრთხოების პატჩები მსგავსი დაუცველობისთვის ასევე ხშირად იწვევს შესრულების ჯარიმას, მაგრამ AMD-მა განუცხადა ტომის აპარატურა რომ ეს ჯარიმა დამოკიდებული იქნება პროცესორზე და დატვირთვაზე. სპეკულაციები და პროგნოზები საკმაოდ მნიშვნელოვანი იყო CPU-ს მუშაობისთვის, ამიტომ გაურკვეველია, რაიმე პოტენციური გამოსწორება იხილავს თუ არა შესრულების მნიშვნელოვან შემცირებას.