jetstream v2 in zig stream.waow.tech

TCP options mitigation #

Ubuntu still lists CVE-2026-98432 as vulnerable on Noble on 2026-11-04: https://ubuntu.com/security/CVE-2026-98432. MPTCP stays disabled; disabling it alone does not eliminate this TCP race.

The dedicated nftables table drops IPv4 TCP packets carrying IP options. Ordinary TCP options (timestamps, window scaling), IPv6, and existing firewall policy are unaffected. Connections requiring IPv4 options will fail. This is risk reduction, not a substitute for the fixed kernel.

The prerouting hook covers external traffic before Docker DNAT/forwarding; the output hook also covers host-originated traffic. Separate container network namespaces can still generate internal traffic outside these hooks. Do not claim protection against untrusted local/container workloads.

Install the nft file as /etc/stream-tcp-options-guard.nft and the unit in /etc/systemd/system/. Run nft -c -f /etc/stream-tcp-options-guard.nft, then systemctl daemon-reload and systemctl enable --now stream-tcp-options-guard. The unit owns only its named table. Do not enable the default nftables service or flush the ruleset: Docker owns other tables.

Verify with nft list table inet stream_tcp_options_guard, a fresh SSH session, HTTPS health/status checks, and advancing upstream sequences. Roll back with systemctl disable --now stream-tcp-options-guard. Keep the mitigation until a fixed Ubuntu kernel is available, installed, booted, and verified with uname -r.

MPTCP namespaces #

net.mptcp.enabled is per network namespace. Verify it inside each container; the host value alone does not prove container state. Include deploy/security/compose.mptcp.yaml in the deployment's COMPOSE_FILE list so both Stream and Caddy keep MPTCP disabled after recreation.

For a running container, its namespace can be updated without a restart:

stream_pid=$(docker inspect stream-experiment-stream-1 --format '{{.State.Pid}}')
nsenter -t "$stream_pid" -n sysctl -w net.mptcp.enabled=0
docker exec stream-experiment-stream-1 cat /proc/sys/net/mptcp/enabled

This is an additional reduction in exposure, not a replacement for the filter or the patched kernel. The host's /etc/sysctl.d/99-disable-mptcp.conf remains in place as well.