github eclipse-threadx/netxduo v6.5.2.202603_rel
Eclipse ThreadX NetX Duo v6.5.2.202603

3 hours ago

This release is dominated by security and by TLS 1.3 correctness. It addresses thirteen vulnerabilities across the X.509 parser, the TLS 1.3 handshake, the WebSocket client, the Web HTTP server and the MQTT client, four of them pre-authentication and critical. Alongside those, a series of TLS 1.3 fixes brings the implementation into line with RFC 8446 on points where it interoperated poorly or not at all, the interoperability suite against OpenSSL has been rebuilt, Windows simulator regression support has been added, and the library can now be compiled big-endian from a little-endian host.

We thank contributors from Rockwell Automation and DPHI Space, along with the independent contributors @COOOkies4U, @EdouardMALOT, @pnfd, @tinic and @Yves57, for their valuable contributions to this release.

Vulnerabilities addressed

Thirteen vulnerabilities are fixed in 6.5.2.202603. Eight are reachable before authentication completes: the X.509 and TLS 1.3 handshake defects are processed while parsing a peer's certificate or handshake messages, so no credentials are needed to reach them.

The affected ranges differ. The X.509 modulus, X.509 ASN.1, TLS 1.3 Certificate, Web HTTP header and the two TLS 1.3 handshake write defects affect every release up to and including 6.5.1.202602. The WebSocket frame and empty-record defects affect 6.2.0 onward, the Web HTTP PUT defect 6.4.2 onward, the MQTT WebSocket setter 6.4.4 onward, and the TLS record send use after free and the MQTT packet leak 6.0 onward. All are fixed in 6.5.2.202603.

The WebSocket frame defect was reported by @leginwos and @adawn0106, the two TLS 1.3 Certificate defects by @afldl, the Web HTTP PUT defect by @Yves57, the header-injection defect by @COOOkies4U, the ASN.1 over-read by @tinic, and the TLS record send use after free and the MQTT packet leak by @EdouardMALOT. The TLS 1.3 HelloRetryRequest cookie write was reported by @wsparks-vc. The X.509 modulus, the TLS 1.3 handshake cache write and the empty-record defects were found during internal review.

Every advisory ships with a regression test that fails without its fix. You can access advisories for previously addressed vulnerabilities here.

Highlights

TLS 1.3 correctness

Several TLS 1.3 defects that broke interoperability with conforming peers are fixed. Record de-padding now follows RFC 8446 section 5.4 rather than stopping at the first zero byte (#401). The CertificateVerify transcript hash is computed over the correct length (#417). The server no longer sends a NewSessionTicket that a client cannot use (#403). Client mutual authentication with an RSA certificate now supports RSA-PSS signing, which TLS 1.3 requires (#399). (@EdouardMALOT)

The TLS 1.2 RSA signature fallback was restored after it was lost, and the CertificateVerify buffers moved out of the stack and into the TLS session metadata (#419, #431, @fdesbiens).

Windows simulator regression support

The regression suite now builds and runs against the Windows simulator, which required correcting pointer-width arithmetic that the LLP64 model exposes. (#437, @fdesbiens)

Interoperability testing rebuilt

The OpenSSL interoperability harness had decayed to the point where its certificates had expired and its tooling no longer matched current distributions. The certificates were renewed, the tools modernized, startup races between the test client and server fixed, ifconfig replaced with iproute2, a WSL wrapper added so the suite runs on Windows hosts, and the director's wait on a terminated instance bounded so a dead instance no longer hangs the run. Obsolete Azure IoT jobs were removed. (#420, #421, #422, #423, #424, #425, #429, #432, #446, @fdesbiens)

Big-endian builds

The mDNS component no longer fails to compile on big-endian ports (#409, @tinic), and a script now compiles the library big-endian on a little-endian host so the configuration is checked without big-endian hardware (#418, @fdesbiens).

BSD sockets and select

The BSD compatibility layer and its select implementation received a series of improvements. (#392, @mzgrebnak)

Other Changes

  • Fixed TCP receive-window accounting when a packet is dropped at the low watermark (#435, @Sawii00)
  • Removed bias from the randomized TCP initial sequence number (#408, @tinic)
  • Fixed control frame handling in the WebSocket client (#411, @Yves57)
  • Released the DRBG mutex when _nx_crypto_drbg_generate fails (#412, @EdouardMALOT)
  • Fixed the MQTT client use_tls flag not being reset for a plain reconnect (#400, @EdouardMALOT)
  • Changed the FTP server to send 226 after closing the data connection (#404, @pnfd)
  • Added conditional dev CI routing and profile-aware CI runner plumbing (#426, #427, @fdesbiens)
  • Added a check that keeps the AI disclosure comment in its one accepted form (#440, @fdesbiens)
  • Normalized the AI disclosure comment to one fixed line per file (#436, @fdesbiens)
  • Updated the contribution guide for the current build, test and submission workflows (#445, @fdesbiens)
  • Linked readers to the published documentation rather than the archived site (#443, @fdesbiens)
  • Updated the security policy (#394, @fdesbiens)
  • Added a blame ignore list so the mechanical header and version passes no longer mask authorship (#439, @fdesbiens)
  • Stopped the release script adding a Co-authored-by trailer, which asserts an authorship an AI cannot hold (#449, @fdesbiens)
  • Stopped the version pass skipping ports in silence: a port whose version string is shaped unexpectedly is now named and the pass stops, rather than keeping its old release while the pass reports success (#458, @fdesbiens)

New Contributors

Full Changelog: v6.5.1.202602_rel...v6.5.2.202603_rel

Don't miss a new netxduo release

NewReleases is sending notifications on new releases.