В ядре Linux устранена следующая уязвимость:
Совет: предотвратите опустошение snt_unacked на CONN_ACK
Tipc_sk_conn_proto_rcv() вычитает количество подтверждений однорангового соединения
из беззнакового 16-битного счетчика отправки snt_unacked, не проверяя, что он
не превышает количество фактически ожидающих сообщений:
tsk->snt_unacked -= msg_conn_ack(hdr);
msg_conn_ack() читается прямо из полученного CONN_MANAGER/CONN_ACK.
сообщение. Если количество подтверждений больше, чем snt_unacked, вычитание
переходит к почти максимальному значению, оставляя tsk_conn_cong() постоянно истинным
и прекращение соединения дальнейших передач. Проверьте счетчик ACK в начале блока CONN_ACK и удалите
сообщение, если оно подтверждает больше сообщений, чем ожидающих обработки.
Сверстник (или,
для локального соединения подключенный одноранговый сокет) в противном случае может заклинить
Сторона отправки соединения TIPC путем отправки подтверждения соединения слишком большого размера.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: tipc: prevent snt_unacked underflow on CONN_ACK tipc_sk_conn_proto_rcv() subtracts the peer-supplied connection ack count from the unsigned 16-bit send counter snt_unacked without checking that it does not exceed the number of messages actually outstanding: tsk->snt_unacked -= msg_conn_ack(hdr); msg_conn_ack() is read straight from a received CONN_MANAGER/CONN_ACK message. If the ack count is larger than snt_unacked, the subtraction wraps to a near-maximum value, leaving tsk_conn_cong() permanently true and starving the connection of further transmits. Validate the ACK count at the start of the CONN_ACK block and drop the message if it acknowledges more messages than are outstanding. A peer (or, for a local connection, the connected peer socket) can otherwise wedge a TIPC connection's send side by sending an oversized connection ack.
Характеристики атаки
Последствия
Строка CVSS v3.1