Refitter is a tool for generating a C# REST API client using the Refit library. Prior to 2.1.1, the `refitter` dotnet tool invokes `NJsonSchema` with unsafe defaults for `$ref` resolution when generating Refit interfaces and contracts from attacker-controlled or attacker-influenced OpenAPI descriptions. Remote `http(s)` references cause requests from the developer or CI host and inline untrusted remote schema content into generated output. Absolute local file paths and relative `../` traversal outside the input directory also resolve and inline local content, permitting arbitrary local-file disclosure. The demonstrated chain stops at server-side request forgery, remote file inclusion, and local file inclusion, not code execution: Refit sets the base URL at runtime, enum values use verbatim-string doubling, and string defaults are escaped. This issue is fixed in version 2.1.1.
https://github.com/user-attachments/files/29395288/make_spec.py
https://github.com/user-attachments/files/29395286/listener.py
https://github.com/user-attachments/files/29395285/advisory.md
https://github.com/user-attachments/files/29395284/maintainer-report.txt
https://github.com/user-attachments/files/29395283/reproduce.sh
https://github.com/user-attachments/files/29395272/advisory.md
https://github.com/user-attachments/files/29395271/maintainer-report.txt
https://github.com/user-attachments/files/29395269/reproduce.sh
https://github.com/christianhelle/refitter/security/advisories/GHSA-x6w4-f264-3vvr
https://github.com/christianhelle/refitter/releases/tag/2.1.1
https://github.com/christianhelle/refitter/pull/1173
https://github.com/christianhelle/refitter/commit/6ad20a3803561225100b0a4bb6b12f947d23db7b