В ядре Linux устранена следующая уязвимость:
tls: rx: восстановить msg_iter перед оптимистической повторной попыткой TLS 1.3
tls_decrypt_sg() продвигает msg->msg_iter, когда отображает страницы пользователя для
оптимистичный путь нулевого копирования TLS 1.3. Если расшифрованная запись превратится
не являются недополненными данными приложения, tls_decrypt_sw() повторяет попытку
skb ядра, но оставляет итератор продвинутым. Последующая копия из skb затем снова записывает расшифрованные байты в
более поздний момент в вызове iovecs, в то время как Recvmsg() сообщает только
длина после повторной попытки.
Одноранговый узел TLS может инициировать это после того, как получатель
включает TLS_RX_EXPECT_NO_PAD. Вернуть итератор на количество байтов, использованных оптимистичным
сопоставление перед повторной попыткой без нулевой копии. Добавьте самотестирование, которое отправляет управляющую запись TLS 1.3 с помощью
TLS_RX_EXPECT_NO_PAD включен и проверяет, что Recvmsg() не
перезаписать более поздние iovecs за пределы возвращенной длины.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: tls: rx: restore msg_iter before TLS 1.3 optimistic retry tls_decrypt_sg() advances msg->msg_iter when it maps user pages for the optimistic TLS 1.3 zero-copy path. If the decrypted record turns out not to be unpadded application data, tls_decrypt_sw() retries into a kernel skb, but leaves the iterator advanced. The subsequent copy from the skb then writes decrypted bytes again at a later point in the caller iovecs while recvmsg() reports only the post-retry length. A TLS peer can trigger this after the receiver enables TLS_RX_EXPECT_NO_PAD. Revert the iterator by the number of bytes consumed by the optimistic mapping before retrying without zero-copy. Add a selftest which sends a TLS 1.3 control record with TLS_RX_EXPECT_NO_PAD enabled and verifies that recvmsg() does not overwrite later iovecs beyond the returned length.
Характеристики атаки
Последствия
Строка CVSS v3.1