# Risk map — actix/actix-web

> Canonical page: https://codevetter.com/unpack/actix-web/risk-map

# Risk map — actix/actix-web

Scanned commit 30c831fce5328ccf916bea77e59ce6419b457e39 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

These risks are source observations and explicitly labeled hypotheses, not confirmed vulnerabilities. The most sensitive inspected boundaries are proxy headers, HTTP framing, filesystem paths, upload accounting, error output, and redirected client requests. Compatibility features and older TLS support also affect maintenance and validation scope. Passing CI cannot be inferred from workflow definitions, particularly where checks are disabled or advisory.
- ConnectionInfo prefers Forwarded and X-Forwarded-* values for host, scheme, and client address. realip_remote_addr explicitly warns against security use unless those headers cannot be spoofed. — [actix-web/src/info.rs#L117-L147](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/info.rs#L117-L147) [actix-web/src/info.rs#L157-L172](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/info.rs#L157-L172)
- Hypothesis: a deployment expecting served roots to prohibit symlink escapes needs explicit policy review. FilesService checks canonicalization success and opens the joined path, while Files::path_filter documents a custom symlink-denial example; the inspected traversal test does not test that deployment policy. (inferred) — [actix-files/src/service.rs#L178-L200](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-files/src/service.rs#L178-L200) [actix-files/src/service.rs#L262-L273](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-files/src/service.rs#L262-L273) [actix-files/src/files.rs#L314-L335](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-files/src/files.rs#L314-L335) [actix-files/tests/traversal.rs#L8-L25](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-files/tests/traversal.rs#L8-L25)
- HTTP/1 header construction uses unsafe HeaderValue::from_maybe_shared_unchecked based on httparse validation. The same framing code rejects duplicate lengths/hosts and unsupported transfer encodings, making parser-contract changes a sensitive review boundary. — [actix-http/src/h1/decoder.rs#L92-L159](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-http/src/h1/decoder.rs#L92-L159) [actix-http/src/h1/decoder.rs#L1251-L1270](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-http/src/h1/decoder.rs#L1251-L1270)
- Multipart limit enforcement is delegated to field readers: Limits::try_consume_limits must be called for each chunk. TempFile does this before writing, and discard_field also accounts for bytes; custom FieldReader implementations must preserve that contract. — [actix-multipart/src/form/mod.rs#L283-L324](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-multipart/src/form/mod.rs#L283-L324) [actix-multipart/src/form/tempfile.rs#L55-L60](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-multipart/src/form/tempfile.rs#L55-L60)
- ResponseError's default response emits the error's Display text as text/plain with a default 500 status. Custom application errors therefore control material sent to clients unless they override error_response. — [actix-web/src/error/response_error.rs#L25-L47](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/error/response_error.rs#L25-L47) [actix-web/src/handler.rs#L108-L109](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/src/handler.rs#L108-L109)
- Redirects remove Cookie, Authorization, and Proxy-Authorization when host, port, or scheme changes, but a 307/308 request with a non-reusable body is resent with an empty body; streamed mutation requests require attention to this documented implementation branch. — [awc/src/middleware/redirect.rs#L166-L203](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/awc/src/middleware/redirect.rs#L166-L203) [awc/src/middleware/redirect.rs#L288-L296](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/awc/src/middleware/redirect.rs#L288-L296)
- deny.toml explicitly ignores nine advisory IDs, primarily under an old-Rustls-support comment, with one h2 update FIXME; license clarifications also retain older ring/webpki compatibility. This records exceptions, not a verified assessment of exploitability. — [deny.toml#L16-L31](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/deny.toml#L16-L31) [deny.toml#L39-L51](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/deny.toml#L39-L51) [actix-web/Cargo.toml#L98-L107](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/Cargo.toml#L98-L107)
- Validation has explicit gaps: external-type lint CI is disabled for a rustdoc mismatch, semver-checks captures the command status but exits zero, and just test excludes a Rustls case. These configurations do not provide blocking verification for those paths. — [.github/workflows/lint.yml#L106-L107](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/.github/workflows/lint.yml#L106-L107) [.github/workflows/semver-checks.yml#L38-L60](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/.github/workflows/semver-checks.yml#L38-L60) [justfile#L52-L57](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/justfile#L52-L57)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
