http4s 0.23

Last reviewed Sep 25, 2026

Export as PDF

Prompt Details

Prompt Composition

3prompts
  1. Java 25113 lines · 2.8K tokens
  2. Scala 3.8.456 lines · 1.8K tokens
  3. http4s 0.2368 lines · 3.6K tokens
Total237 lines · 8.3K tokens

CWE Coverage

  • 20
  • 22
  • 59
  • 78
  • 79
  • 88
  • 89
  • 95
  • 117
  • 190
  • 201
  • 208
  • 209
  • 214
  • 295
  • 297
  • 306
  • 319
  • 323
  • 327
  • 338
  • 346
  • 347
  • 352
  • 362
  • 367
  • 378
  • 427
  • 434
  • 470
  • 471
  • 476
  • 488
  • 494
  • 502
  • 524
  • 525
  • 532
  • 552
  • 565
  • 601
  • 611
  • 613
  • 614
  • 653
  • 674
  • 681
  • 732
  • 749
  • 770
  • 772
  • 776
  • 789
  • 807
  • 862
  • 863
  • 915
  • 916
  • 918
  • 922
  • 942
  • 1004
  • 1275
  • 1333

Prompt Preview

Apply the Scala 3.8.4 prompt, including its Java 25 baseline, first. These rules cover JVM http4s 0.23 and its Ember backend, and were checked against 0.23.36. Validate that application compiler/runtime combination; it is not http4s's minimum runtime requirement or its exact upstream test matrix.

Version and deployment boundaries

  • Keep the http4s core, server, client, DSL, Circe, and Ember modules on one release and move them together. On 0.23.0 through 0.23.36, which predate the 0.23.37 fixes for seven HTTP/2, h2c, and WebSocket defragmentation advisories, apply the withoutHttp2 rule below and the defragmenter rule under WebSockets before exposing those features to untrusted peers.
  • On 0.23.0 through 0.23.36, keep both EmberServerBuilder and EmberClientBuilder on withoutHttp2, which preserves their default. If HTTP/2 is required at the edge, terminate it at a patched proxy and use HTTP/1.1 to Ember. Route-level EntityLimiter, Timeout, and smaller HTTP/2 settings do not repair the affected protocol implementation.
  • Bind deliberately with withHost, use withTLS or an isolated TLS-terminating proxy, and configure finite withRequestHeaderReceiveTimeout, withIdleTimeout, withShutdownTimeout, withMaxHeaderSize, and withMaxConnections. Header and socket limits do not impose an application body-size limit or total request deadline.
  • Validate the accepted host/authority and derive public redirect origins from configuration. Accept forwarded headers only from trusted proxies that overwrite client-supplied values: Request.from prefers