В ядре Linux устранена следующая уязвимость: USB: dummy-hcd: Исправить запировку/исинхронизацию ошибки Тестирование Syzbot смогло спровоцир…
В ядре Linux устранена следующая уязвимость: USB: dummy-hcd: Исправить запировку/исинхронизацию ошибки Тестирование Syzbot смогло спровоцировать адресное исключение и сбой в рутине usb_gadget_udc_reset() в драйверы/usb/gadgets/udc/core.c, в результате того, что рутина называлась со вторым («водитель») аргументом NULL. Плохое caller был set_link_state() in dummy_hcd.c, и возникла проблема из-за гонки между USB-сбросом и развязкой драйвера. Такого рода расы не должны были быть возможны; 7dbd8f4cabd9 («USB: фиктивное изменение: исправление ошибочного изменения синхронизации»), Наряду с несколькими последующими обязательствами, было написано специально, чтобы предотвратить Они. Как выясняется, в ней осталось (по крайней мере) две ошибки. Код. Другой патч будет касаться второй ошибки; этот Беспокоится о первом. Ошибка, ответственная за крушение сибота, произошла из-за stop_activity() рутина иногда падает, а затем повторно приобретает dm->замок спин-лод. Призыв к stop_activity() происходит в set_link_state() при обработке эмулированного сброса USB после теста dump->ints_enabled и до прибавки dump->callback_usage. Это позволило другой нити (делая водителя развязать) пробраться и схватить спин-лод, а затем очистить dum->ints_enabled и dump->драйвер. Обычно эта другая нить должна ждать dum->callback_usage спуститься до 0, прежде чем он очистит dum->вод, но в данном случае это не пришлось ждать, так как dud->callback_usage еще не был Приращенный. Исправление заключается в том, чтобы прибавить dump->callback_usage _before_ call stop_activity() вместо после. Затем нить делает развязку не очистит dum-> водителя до тех пор, пока после вызова usb_gadget_udc_reset() безопасно возвращается и dump->callback_usage был Декрет снова.
Программный продукт не обеспечивает надлежащего захвата или освобождения блокировки ресурса, что приводит к непредвиденным изменениям состояния ресурса и нештатному поведению.
https://cwe.mitre.org/data/definitions/667.html →Открыть в коллекции CWE →Злоумышленник провоцирует и эксплуатирует состояние взаимоблокировки в целевом программном обеспечении, чтобы вызвать отказ в обслуживании. Взаимоблокировка может возникнуть, когда два или более конкурирующих действия ожидают завершения друг друга и в итоге ни одно из них не завершается. Состояния взаимоблокировки бывает сложно обнаружить.
https://capec.mitre.org/data/definitions/25.html →Открыть в коллекции CAPEC →Злоумышленник нацеливается на состояние гонки, возникающее когда несколько процессов одновременно обращаются к одному ресурсу и манипулируют им, а результат выполнения зависит от конкретного порядка этих обращений. Злоумышленник может эксплуатировать состояние гонки, «участвуя в гонке»: изменяя ресурс и нарушая нормальный порядок выполнения. Например, состояние гонки может возникнуть при обращении к файлу: злоумышленник может обмануть систему, подменив исходный файл своей версией и заставив систему прочитать вредоносный файл.
https://capec.mitre.org/data/definitions/26.html →Открыть в коллекции CAPEC →Данная атака эксплуатирует использование символических ссылок (Symlink) для записи в конфиденциальные файлы. Злоумышленник может создать символическую ссылку на целевой файл, к которому у него нет прямого доступа. Когда привилегированная программа пытается создать временный файл с тем же именем, что и символическая ссылка, она фактически записывает данные в целевой файл, на который указывает символическая ссылка злоумышленника. Если злоумышленник может поместить вредоносное содержимое во временный файл, он тем самым запишет его в конфиденциальный файл через символическую ссылку. Состояние гонки возникает потому, что система проверяет существование временного файла, а затем создаёт его. Злоумышленник, как правило, создаёт символическую ссылку в промежутке между проверкой и созданием временного файла.
https://capec.mitre.org/data/definitions/27.html →Открыть в коллекции CAPEC →| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux_kernel | * | Отслеживается |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-std | Отслеживается | |
| kernel-doc-std | Отслеживается | |
| kernel-doc-un | Отслеживается | |
| kernel-doc-un | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается |