🇰🇷 한글 설명
RestSharp 라이브러리의 특정 메서드에서 HTTP 헤더 값에 CRLF(줄 바꿈) 문자를 검증하지 않아 발생하는 CRLF 인젝션 취약점입니다. 공격자가 사용자 제어 가능한 값을 헤더에 전달할 경우, 추가적인 HTTP 헤더를 삽입하거나 HTTP 요청을 분할하여 SSRF(서버 측 요청 위조) 공격을 수행할 수 있습니다.
💡 쉬운 설명
웹 통신을 도와주는 도구에서 줄 바꿈 문자를 제대로 검사하지 못해 발생하는 문제입니다. 이를 통해 해커가 몰래 가짜 명령을 끼워 넣어 서버가 잘못된 요청을 보내게 만들 수 있습니다.
🇺🇸 원문 (English)
RestSharp is a Simple REST and HTTP API Client for .NET. The second argument to `RestRequest.AddHeader` (the header value) is vulnerable to CRLF injection. The same applies to `RestRequest.AddOrUpdateHeader` and `RestClient.AddDefaultHeader`. The way HTTP headers are added to a request is via the `HttpHeaders.TryAddWithoutValidation` method which does not check for CRLF characters in the header value. This means that any headers from a `RestSharp.RequestHeaders` object are added to the request in such a way that they are vulnerable to CRLF-injection. In general, CRLF-injection into a HTTP header (when using HTTP/1.1) means that one can inject additional HTTP headers or smuggle whole HTTP requests. If an application using the RestSharp library passes a user-controllable value through to a header, then that application becomes vulnerable to CRLF-injection. This is not necessarily a security issue for a command line application like the one above, but if such code were present in a web application then it becomes vulnerable to request splitting (as shown in the PoC) and thus Server Side Request Forgery. Strictly speaking this is a potential vulnerability in applications using RestSharp, not in RestSharp itself, but I would argue that at the very least there needs to be a warning about this behaviour in the RestSharp documentation. RestSharp has addressed this issue in version 112.0.0. All users are advised to upgrade. There are no known workarounds for this vulnerability.
📍 영향받는 시스템
RestSharp 112.0.0 미만 버전
⚔️ 공격 벡터
사용자 입력값이 포함된 헤더 값을 RestRequest.AddHeader 등의 메서드로 전달하여 CRLF 문자를 주입
🛡️ 대응 방법
RestSharp 라이브러리를 112.0.0 이상의 최신 버전으로 업데이트
🔧 검증 코드
출력된 RestSharp의 버전이 112.0.0보다 낮은지 확인
dotnet list package | grep RestSharp