CVE-2026-71263

The LINUXTCP port of FreeModbus contains an off-by-one bounds check in xMBPortTCPPool (demo/LINUXTCP/port/porttcp.c). The check uses a strict greater-than comparison instead of greater-than-or-equal against the 263-byte MB_TCP_BUF_SIZE limit.
Configurations

No configuration.

History

24 Oct 2026, 15:10

Type Values Removed Values Added
Summary (es) El puerto LINUXTCP de FreeModbus contiene una comprobación de límites ’off-by-one’ en xMBPortTCPPool() (demo/LINUXTCP/port/porttcp.c). La comprobación ’if (usTCPFrameBytesLeft > MB_TCP_BUF_SIZE)’ utiliza una comparación estrictamente mayor que en lugar de mayor o igual que contra el límite de 263 bytes de MB_TCP_BUF_SIZE. Un frame MBAP con un campo Length de 264 hace que usTCPFrameBytesLeft sea igual a 263, lo que pasa la comprobación defectuosa, y la subsiguiente llamada a recv() escribe hasta 263 bytes comenzando en el desplazamiento 7 del búfer en el búfer estático de 263 bytes aucTCPBuf, desbordándolo en 7 bytes en la variable estática adyacente usTCPBufPos. Un único paquete Modbus TCP manipulado y no autenticado desencadena el desbordamiento, ya que Modbus no tiene autenticación incorporada. (es) El puerto LINUXTCP de FreeModbus contiene una comprobación de límites ’off-by-one’ en xMBPortTCPPool() (demo/LINUXTCP/port/porttcp.c). La comprobación ’if (usTCPFrameBytesLeft mayor que MB_TCP_BUF_SIZE)’ utiliza una comparación estrictamente mayor que en lugar de mayor o igual que contra el límite de 263 bytes de MB_TCP_BUF_SIZE. Un frame MBAP con un campo Length de 264 hace que usTCPFrameBytesLeft sea igual a 263, lo que pasa la comprobación defectuosa, y la subsiguiente llamada a recv() escribe hasta 263 bytes comenzando en el desplazamiento 7 del búfer en el búfer estático de 263 bytes aucTCPBuf, desbordándolo en 7 bytes en la variable estática adyacente usTCPBufPos. Un único paquete Modbus TCP manipulado y no autenticado desencadena el desbordamiento, ya que Modbus no tiene autenticación incorporada.

23 Oct 2026, 21:10

Type Values Removed Values Added
Summary
  • (es) El puerto LINUXTCP de FreeModbus contiene una comprobación de límites ’off-by-one’ en xMBPortTCPPool() (demo/LINUXTCP/port/porttcp.c). La comprobación ’if (usTCPFrameBytesLeft > MB_TCP_BUF_SIZE)’ utiliza una comparación estrictamente mayor que en lugar de mayor o igual que contra el límite de 263 bytes de MB_TCP_BUF_SIZE. Un frame MBAP con un campo Length de 264 hace que usTCPFrameBytesLeft sea igual a 263, lo que pasa la comprobación defectuosa, y la subsiguiente llamada a recv() escribe hasta 263 bytes comenzando en el desplazamiento 7 del búfer en el búfer estático de 263 bytes aucTCPBuf, desbordándolo en 7 bytes en la variable estática adyacente usTCPBufPos. Un único paquete Modbus TCP manipulado y no autenticado desencadena el desbordamiento, ya que Modbus no tiene autenticación incorporada.

Information

Published : 2026-08-05 13:24

Updated : 2026-10-24 15:10


NVD link : CVE-2026-71263

Mitre link : CVE-2026-71263

CVE.ORG link : CVE-2026-71263


JSON object : View

Products Affected

No product.

CWE
CWE-787

Out-of-bounds Write