Уязвимости Π² eBPF, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠΈ Spectre 4

Π’ ядрС Linux выявлСны Π΄Π²Π΅ уязвимости, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ подсистСму Π΅BPF для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠΈ Spectre v4 (SSB, Speculative Store Bypass). ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ BPF-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ условия для спСкулятивного выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ содСрТимоС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… областСй памяти ядра. Π‘ΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ подсистСмы eBPF Π² ядрС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ доступ ΠΊ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡƒ эксплоита, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ устранСны Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ (1, 2), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠΉΠ΄ΡƒΡ‚ Π² состав блиТайшСго обновлСния ядра Linux. ОбновлСния Π² дистрибутивах ΠΏΠΎΠΊΠ° Π½Π΅ сформированы (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

ΠœΠ΅Ρ‚ΠΎΠ΄ Π°Ρ‚Π°ΠΊΠΈ Spectre 4 базируСтся Π½Π° восстановлСнии ΠΎΡΠ΅Π²ΡˆΠΈΡ… Π² процСссорном кэшС Π΄Π°Π½Π½Ρ‹Ρ… послС отбрасывания Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° спСкулятивного выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‡Π΅Ρ€Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи ΠΈ чтСния с использованиСм косвСнной адрСсации. Когда опСрация чтСния слСдуСт Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ записи (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), смСщСниС адрСса для чтСния ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ извСстно ΠΈΠ·-Π·Π° выполнСния ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π°Ρ‰Π΅ ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΈΠ· кэша) ΠΈ процСссор ΠΌΠΎΠΆΠ΅Ρ‚ спСкулятивно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ€Π°Π½ΡŒΡˆΠ΅ записи, Π½Π΅ доТидаясь ΠΏΠΎΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ вычислСно смСщСниС косвСнной адрСсации для записи.

Если послС вычислСния смСщСния выявлСно пСрСсСчСниС областСй памяти для записи ΠΈ чтСния, процСссор просто отбросит ΡƒΠΆΠ΅ спСкулятивно ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ чтСния ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. Данная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ позволяСт инструкции чтСния ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ старому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ адрСсу Π²ΠΎ врСмя ΠΏΠΎΠΊΠ° опСрация сохранСния Π΅Ρ‰Ρ‘ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. ПослС отбрасывания Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ спСкулятивной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² кэшС ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ слСды ΠΎΡ‚ Π΅Ρ‘ выполнСния, послС Ρ‡Π΅Π³ΠΎ для Π΅Π³ΠΎ извлСчСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов опрСдСлСния содСрТимого кэша Π½Π° основС Π°Π½Π°Π»ΠΈΠ·Π° измСнСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ доступа ΠΊ ΠΏΡ€ΠΎΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ Π½Π΅ ΠΏΡ€ΠΎΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ.

ΠŸΠ΅Ρ€Π²Π°Ρ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2021-35477) Π²Ρ‹Π·Π²Π°Π½Π° Π½Π΅Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ BPF. Для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠΈ Spectre 4 Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ добавляСт послС ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сохранСния Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΡƒΡŽ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для вытСснСния слСдов ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ опСрация записи нуля выполнится ΠΎΡ‡Π΅Π½ΡŒ быстро ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ спСкулятивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ указатСля Π½Π° ΠΊΠ°Π΄Ρ€ стСка BPF. Но Π½Π° Π΄Π΅Π»Π΅, оказалось Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ созданиС условий, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… инструкция, приводящая ΠΊ спСкулятивному Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ, успСваСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Ρ‚Π΅ΡΠ½ΡΡŽΡ‰Π΅Π³ΠΎ сохранСния.

Вторая ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2021-3455) связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ выявлСнии Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ BPF ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сохранСния Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ области стСка BPF, пСрвая опСрация записи Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ защищаСтся. Подобная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ возмоТности ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ спСкулятивной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния, зависимой ΠΎΡ‚ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ области памяти, ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ инструкции сохранСния. Новая ΠΏΠ°ΠΌΡΡ‚ΡŒ для BPF-стСка выдСляСтся Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ содСрТимого, ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ Π² выдСляСмой памяти, ΠΈ Π½Π° стадии Π΄ΠΎ запуска BPF-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ имССтся способ управлСния содСрТимым области памяти, которая Π·Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° ΠΏΠΎΠ΄ стСк BPF.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ