An out-of-bounds write exists in the HTTP/2 front-end of the Zephyr HTTP server when serving static files. The issue occurs in the `handle http2 static fs resource()` function within `subsys/net/lib/http/http server http2.c`, where the `&client->data len` variable is incorrectly used as the `file size` out-parameter for `http server find file()`. This causes the receive buffer length to be replaced by the actual size of the file on disk.
An unauthenticated attacker can trigger this by sending an HTTP/2 GET request for any file under the web root in applications where `CONFIG FILE SYSTEM=y` and `CONFIG HTTP SERVER VERSION 2` is enabled. This leads to several memory safety issues:
- Out-of-bounds reads in `parse http frame header()` and per-frame handlers.
- A buffer overflow during a `memmove()` operation that overwrites the `http client ctx` structure, including function-pointer tables and timers.
- An out-of-bounds write via `zsock recv()` due to a size argument underflow.
This remote memory corruption can result in a device crash, hang, or potential arbitrary code execution.