ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ memcpy для ARMv7 ΠΈΠ· состава Glibc

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ бСзопасности ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Cisco раскрыли Π΄Π΅Ρ‚Π°Π»ΠΈ уязвимости (CVE-2020-6096) Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ прСдоставляСмой Π² Glibc Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ memcpy() для 32-разрядной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ARMv7. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹Π·Π²Π°Π½Π° Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ области, ΠΈΠ·-Π·Π° использования ассСмблСрных ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ 32-разрядными Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. Π’Ρ‹Π·ΠΎΠ² memcpy() Π½Π° систСмах ARMv7 с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ записи Π² области Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ† ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ эксплуатирована для выполнСния ΠΊΠΎΠ΄Π° Π² ситуации, ΠΊΠΎΠ³Π΄Π° Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ пСрСдаётся Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΡ…ΠΎΠ΄ Π² минус Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π±ΠΎΠ»Π΅Π΅ 2 Π“Π‘ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Π² процСссС Π°Ρ‚Π°ΠΊΠΈ для Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π±ΡƒΡ„Π΅Ρ€Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 4Π“Π‘). Ѐункция memcpy() Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ примСняСтся Π² прилоТСниях, Π° процСссоры ARMv7 распространСны Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… систСмах, ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ…, ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ…, ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ…, ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΈ встраиваСмых устройствах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π°Ρ‚Π°ΠΊ с использованиСм Bluetooth, HD Radio/DAB, USB, CAN bus, Wi-Fi ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π°Ρ‚Π°ΠΊΠΎΠ²Π°Π½Ρ‹ доступныС ΠΏΠΎ сСти сСрвисы ΠΈ прилоТСния, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· ограничСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π°).

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° приводится созданиС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ эксплоита для Π°Ρ‚Π°ΠΊΠΈ Π½Π° встроСнный Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы http-сСрвСр, доступный Ρ‡Π΅Ρ€Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΡƒΡŽ Wi-Fi ΡΠ΅Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠΉ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² memcpy Π² Π΄Π°Π½Π½ΠΎΠΌ сСрвСрС Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ GET-запроса ΠΎΡ‡Π΅Π½ΡŒ большого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ root-доступ ΠΊ систСмС.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ memcpy для ARMv7 ΠΈΠ· состава Glibc

На 32-разрядных систСмах x86 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ проявляСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ рСализация memcpy для Π΄Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠ°ΠΊ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с Ρ‚ΠΈΠΏΠΎΠΌ size_t (Π² написанной Π½Π° ассСмблСрС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для ARMv7 вмСсто size_t ΠΎΠ½ΠΎ обрабатываСтся ΠΊΠ°ΠΊ signed integer). Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ° доступно Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ‚Ρ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠΉΠ΄Ρ‘Ρ‚ Π² состав августовском ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Glibc 2.32.
Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сводится ΠΊ Π·Π°ΠΌΠ΅Π½Π΅ использования ассСмблСрных инструкций, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ (bge ΠΈ blt), Π½Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ (blo ΠΈ bhs).

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠΊΠ° Π½Π΅ устранСна Π² Debian 9 ΠΈ 10 (Π² Debian 8 Π½Π΅ проявляСтся), Fedora, Ubuntu, OpenEmbedded, Tizen (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ glibc). RHEL ΠΈ SUSE ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ 32-разрядныС систСмы ARMv7. Android Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ уязвимости, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ libc (Bionic). Π’ OpenWRT ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ сборок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Musl, Π½ΠΎ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ имССтся ΠΈ glibc.

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

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