В ядре Linux устранена следующая уязвимость:
ntfs: исправлено смещение на единицу при проверке границ декодирования пар сопоставлений. В ntfs_mapping_pairs_decompress() attr_end указывает на один байт после
конец записи атрибута:
attr_end = (u8 *)attr + le32_to_cpu(attr->length);
Две проверки границ проверяют, соответствуют ли байты данных пары сопоставления внутри
атрибут использует строгое значение «больше чем» (>), что позволяет однобайтовое
чтение за пределами границ, когда данные простираются точно до attr_end:
б = *buf & 0xf;
если (б) {
if (маловероятно(buf + b > attr_end)) // отклонение на единицу
перейти к io_error;
for (deltaxcn = (s8)buf[b--]; b; b--)
deltaxcn = (deltaxcn << 8) + buf[b];
}
Когда buf + b == attr_end, проверка дает значение false и buf[b] считывает
на один байт за допустимую границу атрибута. Та же картина проявляется и в
проверка дельта-байтов LCN.
Исправьте обе проверки, чтобы использовать >=, чтобы buf[b] точно в attr_end был
правильно отклонено как выходящее за пределы.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: ntfs: fix off-by-one in mapping pairs decoding bounds checks In ntfs_mapping_pairs_decompress(), attr_end points one byte past the end of the attribute record: attr_end = (u8 *)attr + le32_to_cpu(attr->length); The two bounds checks validating that mapping pair data bytes fit within the attribute use strict greater-than (>), which allows a one-byte out-of-bounds read when the data extends exactly to attr_end: b = *buf & 0xf; if (b) { if (unlikely(buf + b > attr_end)) // off-by-one goto io_error; for (deltaxcn = (s8)buf[b--]; b; b--) deltaxcn = (deltaxcn << 8) + buf[b]; } When buf + b == attr_end, the check evaluates to false and buf[b] reads one byte past the valid attribute boundary. The same pattern appears in the LCN delta bytes check. Fix both checks to use >= so that buf[b] at exactly attr_end is correctly rejected as out of bounds.
Характеристики атаки
Последствия
Строка CVSS v3.1
Уязвимые продукты 2
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
7.1
|
6.9
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
7.1
|
7.1.5
|