CVE-2026-80587 in Linux
Сводка
по VulDB • 26.08.2026
В ядре Linux была устранена следующая уязвимость:
mptcp: избежать объединения некоторых входящих подопций
Некоторые подопции MPTCP являются взаимоисключающими согласно RFC8684, а также потому, что в различных частях кода не предполагается наличие определенных комбинаций. Это особенно верно для подопций, которые могут присутствовать дважды, но с разными атрибутами.
Новые ограничения совпадают с теми, которые применяются на стороне вывода (mptcp_write_options). Те же правила можно повторно использовать с небольшим исправлением: MP_FASTCLOSE может использоваться вместе с DSS, если отправитель выбирает эту опцию [1], что не является случаем в Linux. Вот эти правила:
Какие опции могут использоваться совместно?
X: взаимоисключающие O: часто используются вместе C: могут использоваться вместе в некоторых случаях P: могли бы использоваться вместе, но мы предпочитаем этого не делать (оптимизации)
| Opt: | MPC | MPJ | DSS | ADD | RM | PRIO | FAIL | FC | RST | |-------|-------|-------|-------|-------|-------|------|------|-------|-------| | MPC | | | | | | | | | X | | MPJ | X | | | | | | | | X | | DSS | X | X | | | | | | | X | | ADD | X | X | P | | | | | | X | | RM | C | C | C | P | | | | | X | | PRIO | X | C | C | C | C | | | | X | | FAIL | X | X | C | X | X | X | | | O | | FC | X | X | P | X | X | X | X | | O | | RST | X | X | X | X | X | X | O | O | |
Единственное отличие заключается в 'P': другой стек мог бы отправлять ADD_ADDR вместе с другими подопциями (DSS, RM_ADDR), и это должно быть разрешено.
Несколько моментов внимания:
- Теоретически MP_CAPABLE может использоваться вместе с RM_ADDR, но нет причин добавлять его вместе с SYN. Обратите внимание, что даже при 4-м ACK это не кажется полезным, за исключением случаев, когда идентификаторы известны заранее через другой канал. Лучше этого не нарушать.
- Теперь объединение как MP_CAPABLE, так и MP_JOIN больше не приведет к отклонению обеих опций, а будет проигнорирована только вторая подопция. Это кажется приемлемым для этой неожиданной ошибки. По крайней мере, теперь все несогласованные комбинации обрабатываются одинаково. Это может измениться позже в следующей версии. Это также означает, что явные проверки наличия как MPC + MPJ в subflow.c станут недостижимыми. В этом нет ничего страшного; они будут удалены в последующем патче.
- В случае конфликтующих комбинаций дополнительные подопции игнорируются: наличие таких комбинаций либо означает, что удаленный узел содержит ошибки (buggy), либо является злонамеренным (evil). В этом случае принимается самое простое действие: прекращение обработки текущей подопции.
- В mp_opt->suboptions также есть бит, зарезервированный для контрольной суммы, который может использоваться в MP_CAPABLE и DSS. Каждый раз, когда опция DSS может использоваться параллельно с другой опцией, контрольная сумма может быть установлена, поэтому проверка объединена в новый макрос OPTIONS_MPTCP_DSS.
- ACK-пакет MP_CAPABLE может нести Data-Level Length и необязательную Checksum: они такие же, как те, что найдены в DSS, потому что DSS не может использоваться параллельно с MP_CAPABLE. Аналогичным образом, даже если есть место, DSS не может использоваться вместе с MP_JOIN.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.