Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² e2fsck, ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²

Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ e2fsck, поставляСмой Π² составС ΠΏΠ°ΠΊΠ΅Ρ‚Π° e2fsprogs, выявлСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2019-5188), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ выполнСния ΠΊΠΎΠ΄Π° Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ° ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, содСрТащСй ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ. НаличиС уязвимости ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΎ Π² выпусках с 1.43.3 ΠΏΠΎ 1.45.4. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ устранСна Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ e2fsck 1.45.5. Π’ дистрибутивах ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠΊΠ° остаётся нСисправлСнной (Debian, Arch Linux, SUSE/openSUSE, Ubuntu, RHEL).

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° ошибкой Π² функция mutate_name() ΠΈΠ· Ρ„Π°ΠΉΠ»Π° rehash.c, примСняСмой ΠΏΡ€ΠΈ пСрСстроСнии связанных с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… сопоставлСниС с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ всСх находящихся Π² Π½Ρ‘ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ связанной с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ структуры hash_entry ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ записи Π΄Π°Π½Π½Ρ‹Ρ… Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅Π³ΠΎ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π²Π½Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°. Π’ случаС выявлСния Π² Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π΅ привязки ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° e2fsck ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ ~0, ~1 ΠΈ Ρ‚.ΠΏ. Для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ Π² стСкС выдСляСтся Π±ΡƒΡ„Π΅Ρ€, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 256 Π±Π°ΠΉΡ‚.

Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… опрСдСляСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ «entry->name_len & 0xff», Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ entry->name_len загруТаСтся ΠΈΠ· структуры Π½Π° дискС, Π° Π½Π΅ вычисляСтся Π½Π° основС фактичСского Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠΌΠ΅Π½ΠΈ. Если Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ, Ρ‚ΠΎ индСкс массива ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1 ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ условия для цСлочислСнного пСрСполнСния Ρ‡Π΅Ρ€Π΅Π· ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Π±ΡƒΡ„Π΅Ρ€Π° (integer underflow) ΠΈ пСрСзаписи Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π² стСкС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ «~0». Для 64-разрядных систСм эксплуатация уязвимости оцСниваСтся ΠΊΠ°ΠΊ маловСроятная ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π°Ρ отсутствия ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ стСка (ulimit -s unlimited). Для 32-разрядных систСм эксплуатация считаСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сильно зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹Π» собран исполняСмый Ρ„Π°ΠΉΠ» компилятором.

Для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ с Π€Π‘ ext2, ext3 ΠΈΠ»ΠΈ ext4. Π’Π°ΠΊ ΠΊΠ°ΠΊ данная опСрация Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ наличия ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ прСдставляСт ΡƒΠ³Ρ€ΠΎΠ·Ρƒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ e2fsck Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ·Π²Π½Π΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Π€Π‘.

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

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