🇰🇷 한글 설명
libcurl에서 Negotiate 인증을 사용하는 HTTP 또는 HTTPS 요청 시 잘못된 연결을 재사용할 수 있는 논리적 오류가 발견되었습니다. 이로 인해 서로 다른 자격 증명을 사용하는 요청이 이전 사용자의 인증 정보가 남아있는 기존 연결을 잘못 사용하여 보안 문제가 발생할 수 있습니다.
💡 쉬운 설명
인터넷 연결을 빠르게 하기 위해 기존 통로를 다시 쓰는 과정에서, A라는 사람의 통로를 B라는 사람이 그대로 사용하게 되는 문제입니다. 이로 인해 사용자의 개인 정보나 권한이 의도치 않게 노출될 위험이 있습니다.
🇺🇸 원문 (English)
libcurl can in some circumstances reuse the wrong connection when asked to do
an Negotiate-authenticated HTTP or HTTPS request.
libcurl features a pool of recent connections so that subsequent requests can
reuse an existing connection to avoid overhead.
When reusing a connection a range of criterion must first be met. Due to a
logical error in the code, a request that was issued by an application could
wrongfully reuse an existing connection to the same server that was
authenticated using different credentials. One underlying reason being that
Negotiate sometimes authenticates *connections* and not *requests*, contrary
to how HTTP is designed to work.
An application that allows Negotiate authentication to a server (that responds
wanting Negotiate) with `user1:password1` and then does another operation to
the same server also using Negotiate but with `user2:password2` (while the
previous connection is still alive) - the second request wrongly reused the
same connection and since it then sees that the Negotiate negotiation is
already made, it sends the request over that connection thinking it uses
the user2 credentials when it is in fact still using the connection
authenticated for user1...
The set of authentication methods to use is set with `CURLOPT_HTTPAUTH`.
Applications can disable libcurl's reuse of connections and thus mitigate this
problem, by using one of the following libcurl options to alter how
connections are or are not reused: `CURLOPT_FRESH_CONNECT`,
`CURLOPT_MAXCONNECTS` and `CURLMOPT_MAX_HOST_CONNECTIONS` (if using the
curl_multi API).
📍 영향받는 시스템
Negotiate 인증을 사용하는 libcurl 라이브러리 기반 애플리케이션
⚔️ 공격 벡터
동일한 서버에 대해 서로 다른 사용자 계정으로 연속적인 인증 요청을 보낼 때 발생하는 연결 재사용 취약점 이용
🛡️ 대응 방법
libcurl을 최신 버전으로 업데이트하거나, CURLOPT_FRESH_CONNECT 또는 CURLOPT_MAXCONNECTS 옵션을 사용하여 연결 재사용을 비활성화합니다.
🔧 검증 코드
출력된 libcurl 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
💻 영향받는 소프트웨어
IBM WebSphere Application Server