1. TeamCity
- JetBrains社에서 개발한 CI/CD(Continuous Integration/Continuous Delivery)
1.1 CI/CD (Continuous Integration/Continuous Delivery) [1][2]
- 소프트웨어 제공을 위한 일반적인 과정을(빌드(Build)-테스트(Test)-릴리스(Release)-배포(Deploy)) 자동화한 것
- 애플리케이션 개발 단계부터 배포까지 모든 단계를 자동화하여 효율적이고 빠르게 사용자에게 배포할 수 있음
1.1.1 CI (Continuous Integration, 지속적 통합)
- 빌드/테스트 자동화 과정
- 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합
- 커밋할 때마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경으로 인한 문제가 없도록 보장
> 여러 명의 개발자가 동시에 코드 작업을 할 경우 발생할 수 있는 충돌 문제와 시간이 오래걸리는 문제를 해결
> 소스/버전 관리 시스템에 대한 변경 사항을 정기적으로 커밋하여 모든 사람들에게 동일 작업 기반을 제공
1.1.2 CD (Continuous Delivery, 지속적 제공)
- 배포 자동화 과정
- Continuous Deployment(지속적인 배포)를 의미하기도 하며, 두 용어는 상호 교환적으로 사용
- 파이프라인의 이전 단계(CI 단계)를 모두 성공적으로 통과하면 수동 개입 없이 자동으로 배포
> 품질 저하 없이 최대한 빨리 사용자에게 새로운 기능을 제공할 수 있음
2. 취약점
- JetBrains TeamCity 2023.05.4 이전 버전에서 발생하는 인증 우회 취약점
> 인증 우회 후 원격 명령을 실행할 수 있게됨
- 다이아몬드슬릿(Diamond Sleet)과 오닉스슬릿(Onyx Sleet)으로 불리는 북한 APT 조직들이 활발히 익스플로잇 하는 것으로 조사
> 취약점을 악용해 백도어와 멀웨어를 피해자 시스템에 유포해 모니터링, 정보 탈취 등 악성 행위 수행
※ 다이아몬드슬릿: 전 세계 IT, 미디어, 국방 분야 공략
※ 오닉스플릿: 미국, 한국, 인도의 IT, 국방 분야 공략
영향받는 버전
- JetBrains TeamCity 2023.05.4 이전 버전
※ TeamCity 버전은 로그인 페이지 하단에 표시되어, 공격자들은 손 쉽게 버전을 확인할 수 있음
2.1 취약점 상세 [4][5]
- TeamCity는 외부 응용 프로그램을 통합하기 위한 REST API를 제공
> /app/rest/users/<userLocator>/tokens 경로를 통해 사용자 인증 토큰을 생성
> {name} 매개변수를 통해 토큰에 대한 이름을 추가로 생성할 수 있음
- TeamCity는 요청 인터셉터(RequestInterceptors 클래스)를 사용해 모든 HTTP 요청에 대해 특정 작업을 수행
> 특정 작업 중 하나가 권한 부여 매커니즘
- 요청이 발생하면 해당 클래스의 preHandle 메서드가 호출
> preHandle 메서드는 requestPreHandlingAllowed를 호출해 요청이 사전 처리에 적합한지 여부를 결정
- requestPreHandlingAllowed 메서드는 요청된 경로가 사전 정의된 경로 목록과 일치 여부 확인
- RequestInterceptors 클래스에는 두 개의 사전 정의된 표현식이 존재
① /**/RPC2
② /app/agents/**
- 공격자는 경로 "/**/RPC2"를 만족하는 요청을 전송할 경우 인증을 우회할 수 있게됨 [6]
> [사진 3]에 의해 /app/rest/users/<userLocator>/tokens/{name}의 형태로 요청
> <userLocator>은 인증 토큰으로, 사용자마다 고유한 값을 가지는 것으로 판단됨 (ex. admin 계정의 경우 id:1)
> [사진 4] ~ [사진 6]에 의해 {name} 매개변수의 값으로 RPC2 지정
> 공격자의 요청은 /app/rest/users/id:1/tokens/RPC2 형태로, 서버는 관리자 권한을 지닌 새로 생성된 토큰을 반환
> 공격자는 반환된 토큰을 이용해 새로운 관리자 계정을 생성하는 등 추가 익스플로잇이 가능해짐
※ [사진 4]의 requestPreHandlingAllowed 메서드가 false를 반환하며, ! 연산에 의해 true가 되어 if 문을 만족해 이후 권한 부여 등 인증 과정을 우회할 수 있게됨
- 취약점 시연 영상 [6]
3. 대응방안
① 최신 버전 업데이트 적용 [7]
> 23.09.18 취약점을 수정을 포함한 2023.05.04 버전 배포
> 사전 정의된 요청 경로 중 /**/RPC2를 제거
제품명 | 영향받는 버전 | 해결 버전 |
JetBrains TeamCity | 2023.05.04 이전 버전 | 2023.05.04 |
4. 참고
[1] https://seosh817.tistory.com/104
[2] https://jud00.tistory.com/entry/CICD%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C
[3] https://nvd.nist.gov/vuln/detail/CVE-2023-42793
[4] https://www.sonarsource.com/blog/teamcity-vulnerability/#indicators-of-compromise
[5] https://attackerkb.com/topics/1XEEEkGHzt/cve-2023-42793/rapid7-analysis
[6] https://www.youtube.com/watch?v=O2p-6I8RK5c
[7] https://blog.jetbrains.com/teamcity/2023/09/cve-2023-42793-vulnerability-post-mortem/
[8] https://www.boho.or.kr/kr/bbs/view.do?searchCnd=&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=1&categoryCode=&nttId=71212
[9] https://www.boannews.com/media/view.asp?idx=122862&page=1&kind=1
'취약점 > By-Pass' 카테고리의 다른 글
VMware Aria Automation 접근 제어 누락 취약점 (CVE-2023-34063) (0) | 2024.01.23 |
---|---|
Apache OfBiz 인증 우회 취약점 (CVE-2023-51467) (1) | 2023.12.31 |
VMware 제품 인증 우회 취약점 (CVE-2022–31656) (0) | 2023.01.11 |
Mantis BT 비밀번호 재설정 취약점 (CVE-2017-7615) (0) | 2022.12.25 |
WordPress Plugin Portable phpMyAdmin 인증 우회 (CVE-2012-5469) (0) | 2022.12.09 |