Spectre hücumlarına qarşı qorunmanı yan keçməyə imkan verən eBPF alt sistemindəki zəifliklər

Linux nüvəsində (CVE-2021-33624) boşluq müəyyən edilmişdir ki, bu da eBPF altsistemindən Spectre sinfi zəifliklərindən qorunmaq üçün istifadə etməyə imkan verir ki, bu da yaddaşın məzmununu müəyyən etməyə şərait yaradır. müəyyən əməliyyatların spekulyativ icrası. Spectre hücumu imtiyazlı kodda təlimatların spekulyativ icrasına səbəb olan müəyyən əmrlər ardıcıllığının olmasını tələb edir. İcra üçün ötürülən BPF proqramlarını manipulyasiya etməklə, eBPF-də oxşar təlimatlar yaratmaq və nüvə yaddaşının məzmununu və fiziki yaddaşın ixtiyari sahələrini yan kanallar vasitəsilə sızdırmaq mümkündür.

Zəiflik BPF proqramlarında səhvləri və qəbuledilməz fəaliyyəti aşkar etmək üçün istifadə edilən yoxlayıcıdakı qüsurlardan qaynaqlanır. Doğrulayıcı kodun icrası üçün mümkün yolları sadalayır, lakin təlimat dəsti arxitekturasının semantikası nöqteyi-nəzərindən qəbuledilməz olan budaqlanma variantlarını atlayır. BPF proqramını icra edərkən, yoxlayıcı tərəfindən nəzərə alınmayan belə budaqlanma variantları prosessor tərəfindən səhv proqnozlaşdırıla və spekulyativ rejimdə icra edilə bilər. Məsələn, "yükləmə" əməliyyatını təhlil edərkən, yoxlayıcı təlimatın dəyəri həmişə müəyyən edilmiş sərhədlər daxilində olan bir ünvana malik registrdən istifadə etdiyini gözləyir, lakin təcavüzkar prosessorun spekulyativ olaraq əməliyyat yerinə yetirməyə çalışacağı şərait yarada bilər. yoxlama şərtlərinə cavab verməyən ünvan.

Problem kernel 4.15-in buraxılışından sonra ortaya çıxdı və yamaqlar (1, 2, 3, 4) şəklində düzəldilib. Zəiflik paylamalarda (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch) düzəldilməyib.

Əlavə olaraq, Spectre zəifliklərindən qorunmaq üçün alətlərin performansa təsiri haqqında qeydi qeyd edə bilərsiniz. Qeyddə Firefox-da təkrarlanması çətin olan xətaların aradan qaldırılması üçün bir vaxtlar Mozilla-da yaradılmış rr (Record and Replay) debuggerinin optimallaşdırılmasının nəticələri ümumiləşdirilmişdir. Kataloqların mövcudluğunu yoxlamaq üçün istifadə edilən sistem zənglərinin keşləşdirilməsi test layihəsi üçün "rr mənbələri" əməliyyatını 3 dəqiqə 19 saniyədən 36 saniyəyə endirdi.

Optimallaşdırma müəllifi Spectre qorunmasını söndürdükdən sonra performansın necə dəyişəcəyini yoxlamaq qərarına gəldi. Sistemi “mitigations=off” parametri ilə yüklədikdən sonra “rr sources”un optimallaşdırmadan icra müddəti 2 dəqiqə 5 saniyə (1.6 dəfə sürətli), optimallaşdırma ilə isə 33 saniyə (9% daha sürətli) olmuşdur. Maraqlıdır ki, Spectre qorunmasının söndürülməsi təkcə nüvə səviyyəsində kodun icra müddətini 1.4 dəfə azaltmadı (2m9s-dan 1m32s), həm də istifadəçi məkanında icra müddətini yarıya endirdi (1m9s-dən 0m33s), ehtimal ki, CPU keş əməliyyatının və TLB-nin səmərəliliyinin azalması ilə əlaqədardır. Spectre qorunması aktiv olduqda sıfırlanır.

Mənbə: opennet.ru

Добавить комментарий