1. 개요

- 해외 연구팀이 기아 차량의 번호판만으로 차량에 명령을 내릴 수 있는 취약점 발견 [1]
- 모든 기아 차량에 영향 받으며, 기아 Connect 구독 여부와 관계없이 차량 하드웨어가 장착된 경우 공격 가능
- 공격자는 개인정보(차량 소유주 이름, 전화번호, 이메일, 실주소 등)뿐만아니라 차량의 제어권을 획득할 수 있음

 

2. 주요 내용

- 연구진은 웹사이트 owners.kia[.]com와 Kia Connect iOS 앱 com.myuvo[.]link 분석
> 두 애플리케이션은 인터넷을 통해 차량 제어 명령을 보낼 수 있음

※ 웹 사이트는 백엔드 역방향 프록시를 사용해 사용자 명령을 실제 차량 명령을 실행하는 api.owners.kia.com 백엔드 서비스로 전달
※ 앱은 해당 API에 직접 액세스

 

- owners.kia[.]com 웹사이트에서 차량 문 잠금 해제를 위한 HTTP 요청

[사진 1] 요청 예시

- 서버는 JSESSIONID를 사용해 Sid 세션 ID 생성 및 백엔드 API에 요청 전달

> Sid는 세션 토큰, Vinkey는 차대번호(VIN_차량 식별에 사용되는 고유한 일련 번호)와 매핑되는 UUID

[사진 2] 요청 예시

2.1 Kia 딜러 인프라 취약점

- 연구진은 Kia에서 새 차를 구매할때, 차량 등록을 위해 고객에게 보내는 이메일에서 URL을 발견

> VIN 파라미터는 딜러가 생성한 일회성 토큰으로, 파라미터로 지정된 차량을 수정할 수 있음

https://kiaconnect.kdealer.com/content/kDealer/en/kiauser.html?token=dealer_generated_access_token&vin=example_vin&scenarioType=3

 

- 해당 URL을 로드하면 토큰의 유효성을 확인하는 HTTP 요청이 전송

> 딜러 사이트의 요청 URI가 owners 사이트와 동일한 /apps/services/kdealer/apigwServlet.html

> 딜러용 내부 API로 요청을 전달하는 프록시가 있을 것으로 예상

[사진 3] 토큰 유효성 검사

- JavaScript를 확인한 결과 딜러 차량 조회, 계정 조회, 등록, 해지 등 직원 전용 기능을 가진 API 호출 발견

> 소유한 차량의 VIN으로 API 앤드포인트에 접근해 보았으나, 401 Unauthorized 반환

dealerVehicleLookUp() {
    this.displayLoader = !0, this.vinToEnroll = "eDelivery" != this.entryPoint ? this.vinToEnroll.replace(/\s/g, "") : this.userDetails.vin, "17" == this.vinToEnroll.length && this.landingPageService.postOffice({
        vin: this.vinToEnroll
    }, "/dec/dlr/dvl", "POST", "postLoginCustomer").subscribe(i => {
        i && (i.hasOwnProperty("body") && "0" == i.body.status.statusCode ? this.processDvlData(i.body) : "1003" == i.body.status.errorCode && "kia-dealer" == this.entryPoint ? this.reRouteSessionExpire() : (this.displayLoader = !1, this.alertMessage = i.body.status.errorMessage, document.getElementById("triggerGeneralAlertModal").click()))
    })
}

 

2.2 일반 계정으로 딜러 API 접근

- 딜러 웹 사이트에서 새로운 계정을 생성해 액세스 토큰을 생성한 뒤 API 접근 시도

> 딜러 사이트에서 owners 사이트와 동일한 방식으로 사용자 등록을 시도한 결과 200 OK 반환

> 이후 로그인하여 액세스 토큰 생성 VIN 조회 API 호출 결과 차량 소유주 이름, 전화번호, 이메일 주소 반환

> 일반 자격 증명과 수정된 채널 헤더를 사용하면 모든 딜러용 API에 접근할 수 있다는 것을 의미

 

2.3 차량 무단 접근

- JavaScript를 살펴본 결과 차량 등록, 해지, 수정 엔드포인트가 어떻게 동작하는지 파악

[사진 4] 차량 무단 접근

- 다음 4단계를 거치면 차량에 무단 접근이 가능하며, 피해자는 차량 접근 알림이나 권한 변경 사실을 알지 못함

> 번호판을 통해 VIN을 알아낸 뒤 API를 이용해 추적, 잠금 해제, 시동 걸기, 경적 울리기 등의 명령을 수행할 수 있음

① 딜러 토큰 생성 및 HTTP 응답에서 “token” 헤더 추출

- authUser 엔드포인트를 통해 인증하여 세션 토큰 획득

[사진 5] 딜러 토큰 생성

② 피해자의 이메일 주소 및 전화번호 알아내기

- 추가된 세션 토큰 헤더를 통해 kiaconnect.kdealer.com 웹사이트의 모든 딜러 엔드포인트에 접속 및 피해자의 이름, 전화번호, 이메일을 검색할 수 있음

[사진 6] 피해자 정보 조회

③ 유출된 이메일 주소와 VIN으로 기존 소유자의 접근 권한 수정

- 이전 단계에서 얻은 이메일을 이용해 공격자를 기본 계정 소유자로 추가

[사진 7] 차량 소유주 접근 권한 수정

④ 공격자를 차량의 새로운 소유자로 추가

- 공격자의 이메일을 이용해 차량의 소유자로 추가 및 이를 통해 차량에 임의 명령을 보낼 수 있음

[사진 8] 공격자 추가

2.3 PoC용 대시보드 제작

- 공격자는 (1) Kia 차량의 번호판을 입력하고 (2) 소유주 개인 식별 정보를 가져온 뒤 (3) 차량 제어 명령을 실행할 수 있는 개념 증명용 대시보드 개발

- 차량 무단 접근을 시도하는 Exploit 페이지명령 전달과 위치를 추적하는 Garage 페이지로 구성

> 잠긴 Kia 렌트카를 대상으로 테스트 및 문 잠금/해제, 시동 켜기/끄기, 경적 울리기, 위치 추적에 성공

[영상 1] PoC [2]

- 해당 취약점을 Kia에 제보 및 수정 완료

> PoC 도구는 공개되지 않았으며, Kia는 취약점이 악의적으로 악용되지 않았음을 확인

3. 참고

[1] https://samcurry.net/hacking-kia#targeting-kia-dealer-infrastructure
[2] https://www.youtube.com/watch?v=jMHFCpQdZyg
[3] https://news.hada.io/topic?id=16961
[4] https://www.boannews.com/media/view.asp?idx=133232&page=1&kind=1
[5] https://www.dailysecu.com/news/articleView.html?idxno=159771

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. 개요

- 업데이트된 윈도우 시스템의 보안을 무너뜨릴 수 있는 두 개의 제로데이 취약점이 공개 (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. 개요

- MMC를 활용해 보안 장치를 우회하는 새로운 공격 수법 GrimResource 등장 [1]

> MMC를 통해 MSC 파일을 열 수 있음
> 해당 MSC 파일 내 StringTable이라는 요소에 저장되어 있는 APDS 자원을 익스플로잇
> 보안 장치들을 우회하여 원하는 코드 실행 가능

 

1.1 Microsoft Management Console, MMC

- 마이크로소프트 관리 콘솔
Windows 운영 체제에서 시스템 구성 요소를 관리하고 설정하는 데 사용되는 도구
여러 관리 항목들(스냅인, 특정 시스템 구성 요소를 관리하는 작은 모듈)을 한곳에 모아 관리할 수 있도록 하는 프로그램
- Windows 환경에서 GUI와 콘솔의 생성, 저장, 열기 등을 수행할 프로그램 작업을 제공하는 일종의 응용 프로그램

 

1.2 Management Saved Console, MSC

MMC에서 만든 사용자 정의 콘솔을 저장한 파일

 

2. 주요내용

GrimResource 공격은 apds.dll 라이브러리에 있는 오래된 XXS 결함을 사용

> MSC 파일의 StringTable섹션에 취약한 APDS 리소스에 대한 참조를 추가하여 임의의 자바스크립트를 실행할 수 있음

해당 취약점은 이미 2018년 MS와 Adobe로 제보가 되었으나 아직 패치되지 않음

[사진 1] StringTable 섹션 APDS 리소스

 

ActiveX 보안 경고를 피하기위해 TransformNode 난독화 기술을 사용

> TransformNode 난독화: 소스 코드를 분석해 코드의 구조와 기능을 파악한 후 그 결과를 바탕으로 변환 규칙을 생성 및 적용하여 난독화
> 난독화된 내장 VBScript가 생성

[사진 2] TransformNode 난독화

 

- VBScript는 일련의 환경 변수에서 대상 페이로드를 설정한 뒤 DotNetToJs 기술을 활용하여 .NET 로더 실행

> DotNetToJs: Microsoft .NET 코드를 JavaScript 코드로 변환하는 프로세스

[사진 3] VBScript

 

- 로더는 VBScript가 설정한 환경 변수에서 페이로드 검색dllhost.exe의 새 인스턴스 생성하여 페이로드 주입
> 페이로드 주입에 DirtyCLR 기술, 함수 연결 해제 및 간접 syscall을 사용

[사진 4] 환경변수 설정
[사진 5] 페이로드 검색 로더

 

- 확인 권고사항
> mmc.exe에 의해 호출된 apds.dll과 관련된 파일 작업
> MCC를 통한 의심스러운 실행, 특히 .msc 파일 인수를 사용하여 mmc.exe에 의해 생성된 프로세스
> 스크립트 엔진 또는 .NET 구성 요소에서 발생하는 mmc.exe에 의한 RWX 메모리 할당
> JScript 또는 VBScript와 같은 비표준 스크립트 인터프리터 내에서 비정상적인 .NET COM 개체 생성
> APDS XSS 리디렉션의 결과로 INetCache 폴더에 생성된 임시 HTML 파일

 

- 의심스러운 MSC 파일을 탐지하는데 도움이 되도록 YARA 규칙 및 침해지표 제공

rule Windows_GrimResource_MMC {
    meta:
        author = "Elastic Security"
        reference = "https://www.elastic.co/security-labs/GrimResource"
        reference_sample = "14bcb7196143fd2b800385e9b32cfacd837007b0face71a73b546b53310258bb"
        arch_context = "x86"
        scan_context = "file, memory"
        license = "Elastic License v2"
        os = "windows"
    strings:
        $xml = "<?xml"
        $a = "MMC_ConsoleFile" 
        $b1 = "apds.dll" 
        $b2 = "res://"
        $b3 = "javascript:eval("
        $b4 = ".loadXML("
    condition:
       $xml at 0 and $a and 2 of ($b*)
}
 

X의 Samir님(@SBousseaden)

Elastic Security Labs has discovered a new method for initial access and evasion in the wild, termed #GrimResource, which involves arbitrary execution in mmc.exe through a crafted MSC file. https://t.co/q4u4gTPE6O https://t.co/usWJvhygIC

x.com

 

3. 참고

[1] https://www.elastic.co/security-labs/grimresource
[2] https://x.com/i/status/1804225219571147140
[3] https://thehackernews.com/2024/06/new-attack-technique-exploits-microsoft.html
[4] https://www.bleepingcomputer.com/news/security/new-grimresource-attack-uses-msc-files-and-windows-xss-flaw-to-breach-networks/
[5] https://www.boannews.com/media/view.asp?idx=130867&page=1&kind=1

1. 개요

WiFi 표준의 설계 결함으로 인해 SSID 혼동 공격이 발생할 수 있음 [1]
- 피해자를 속여 취약한 네트워크에 연결시키거나 트래픽을 탈취할 수 있음
IEEE 802.11 WiFi 표준 자체의 설계 결함으로 모든 장치 및 운영 체제의 WiFi 클라이언트에 영향

> 해당 취약점에 CVE-2023-52424 할당

 

2. 주요내용

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2023-52424

 

- 취약점의 근본 원인 IEEE 802.11 표준이 클라이언트 연결 시 SSID(네트워크 이름)를 항상 인증하지 않는다는 것

> 즉, SSID 인증 부족을 악용해 피해자가 다른 Wi-Fi 네트워크에 연결하도록 속이는 것

 

- 인증 핸드셰이크 중 SSID를 사용하여 암호화키를 도출하는지 여부가 취약성 여부를 결정

인증 프로토콜 설명
WEP - 취약한 RC4 알고리즘을 사용하기 때문으로 판단됨
> 키 스트림 편향 문제, 완전한 난수가 아닌 의사난수 사용 등
WPA3 - SAE 핸드셰이크에서 PMK를 생성하는데 SSID를 사용하지 않는 선택적 모드 존재
> SAE (Simultaneous Authentication of Equals): 두 장치가 공유한 임의의 숫자를 사용해 공유 키를 계산해 통신에 암호화
> PMK (Pairwise Master Key): SAE에 의해 생성되는 공유 키
802.11X/EAP - PMK를 생성하기 위해 SSID를 사용하지 않음
AMPE - 인증을 위해 802.1X를 사용하며, 802.1X는 SSID를 확인하지 않음
FILS - PMK를 생성하는 데 사용되는 공유 키가 EAP 핸드셰이크에 의해 생성되는 경우 취약
- 또는, 캐시된 PMK를 사용하는 경우 피해자가 이전에 신뢰할 수 없는 대상 네트워크에 연결한 경우에만 취약

 

[사진 2] 취약 프로토콜 (주황색: 특정 조건 하 취약)

 

- 공격에 성공하기 위해서는 세 가지 조건이 존재

① 피해자는 신뢰할 수 있는 Wi-Fi 네트워크에 연결을 시도

② 신뢰할 수 있는 네트워크와 동일한 인증 자격 증명을 사용하는 악성 네트워크가 존재

③ 공격자는 피해자와 신뢰할 수 있는 네트워크 사이에서 MitM 공격을 수행할 수 있는 범위 내 위치

 

- 공격 과정은 다음과 같음

① 공격자는 신뢰할 수 있는 네트워크와 유사한(동일한 인증 자격 증명을 사용) 악성 AP 및 네트워크를 구성

② 악성 네트워크를 신뢰할 수 있는 네트워크로 가장하여(SSID 변경) 네트워크에 광고

③ 피해자의 Wi-Fi 클라이언트는 신뢰할 수 있는 네트워크와 연결된 것으로 착각(실제로는 악성 네트워크와 연결)

④ 공격자는 트래픽을 가로채 SSID를 변경해가며(신뢰<->악성) 중간자 공격을 수행

 

※ 일부 VPN 클라이언트의 경우 "신뢰할 수 있는" Wi-Fi 네트워크에 연결할 때 자동으로 VPN 연결 비활성화

> 일반적으로 VPN 설정에서 신뢰할 수 있는 SSID를 지정하여 사용

> SSID 혼동 공격이 성공하면 VPN이 비활성화되어 사용자 트래픽이 노출

[사진 3] SSID 혼동 공격 과정

 

대응방안 Wi-Fi 표준 개선 - 보호된 네트워크에 연결할 때 SSID 인증을 의무화하도록 표준 업데이트
> 4-Way 핸드셰이크 과정에서 SSID를 포함하도록 업데이트
Wi-Fi 클라이언트 개선 - 클라이언트 수준에서 비콘 보호 기능이 향상되면 공격 방어에 도움
> 비콘: 무선 액세스 포인트가 주기적으로 전송하여 자신의 존재를 알리는 관리 프레임
> 현재 논의중인 Wi-Fi 7은 비콘 보호에 대한 지원을 의무화
자격 증명 재사용 방지 - SSID 전체에서 자격 증명 재사용 방지
> 기업 네트워크는 고유한 RADIUS 서버 CommonName 사용
> 가정용 네트워크는 SSID 별로 고유한 비밀번호 사용

 

3. 참고

[1] https://www.top10vpn.com/research/wifi-vulnerability-ssid/
[2] https://nvd.nist.gov/vuln/detail/CVE-2023-52424
[3] https://www.boannews.com/media/view.asp?idx=129889&page=1&kind=1
[4] https://www.dailysecu.com/news/articleView.html?idxno=156035

1. VPN(Virtual Private Network)

- 가상 사설망

- 기존 공용 네트워크에 터널링 및 암호화 기법을 사용해 만든 가상 사설망 네트워크

- VPN을 활용해 외부에서 안전하게 내부망과 통신할 수 있음

- 비용 효율, 익명성, 암호화, IP 우회 등의 장점과 속도 저하, 일부 국가 불법 등의 단점이 있음

 

2. TunnelCrack [1]

- 23.08.08 VPN의 두 가지 보안 취약점이 결합된 트래픽 유출 취약점이 발견

> 해당 공격은 사용되는 VPN 프로토콜과 무관

> 많은 VPN 클라이언트는 다음 두 가지 유형의 트래픽을 VPN 터널 외부로 전송하기 위해 예외를 추가

① 로컬 네트워크와 주고받는 트래픽: VPN을 사용하는 동안 로컬 네트워크에 계속 액세스할 수 있도록 보장

② VPN 서버와 주고받는 트래픽: 라우팅 루프가 없음을 보장

 

2.1 LocalNet 공격 (CVE-2023-36672, CVE-2023-35838)

[사진 1] LocalNet 공격 요약

 

- 공격자가 로컬 네트워크 IP 주소 범위를 조작하여 트래픽이 유출될 수 있음

> 공격자가 로컬 네트워크에 할당된 IP 범위를 제어할 수 있다고 가정

> 공격자는 로컬 네트워크 내에서 활동

① 공격자는 악성 AP를 생성 하고 로컬 네트워크 IP 범위를 대상 서버의 IP 주소가 포함된 범위로 설정

② 피해자 VPN 클라이언트는 연결하려는 웹사이트가 로컬 네트워크에 있다고 믿도록 속여 연결되지 않음

 

[사진 2] LocalNet 공격 과정

 

① 공격자는 악성 AP를 생성하고 대상 서버의 IP 주소가 포함된 범위로 IP 범위를 설정하며, 피싱 사이트 생성

> 피싱 사이트는 대상 서버와 IP를 동일하게 구성

② 피해자는 악성 AP에 연결하며, 악성 AP는 target[.]com과 동일한 서브넷의 IP 주소 할당

③ 피해자는 정상적인 VPN 연결을 생성

④ 피해자가 target[.]com 접속 시 피싱 사이트로 연결

> 피해자는 target[.]com(피싱 사이트)가 동일한 로컬 네트워크에 있다고 믿음

> 결과적으로 클라이언트는 VPN 터널을 사용하지 않고 웹 서버에 직접 연결 시도

※ 목적지 target[.]com을 제외한 트래픽은 정상 VPN 터널을 통해 전송

 

2.2 ServerIP 공격 (CVE-2023-36673, CVE-2023-36671)

[사진 3] ServerIP 공격 요약

 

- 공격자는 VPN 서버의 IP 주소를 스푸핑하여 트래픽이 유출될 수 있음

> 공격자가 DNS 응답을 스푸핑할 수 있다고 가정

> 공격자는 위치는 (1) 피해자가 VPN 서버의 IP 주소를 조회하는데 사용하는 DNS 서버 (2) 트래픽을 유출하려는 피해자와 대상 서버

① 공격자는 피해자의 VPN 서버에 대한 nslookup 결과를 스푸핑 (DNS 스푸핑)

② 피해자는 스푸핑된 IP 주소로 서버에 연결 시도

 

[사진 4] ServerIP 공격 과정

 

① 피해자는 vpn[.]com의 IP를 얻기위해 nslookup

② 공격자는 nslookup에 대한 응답을 스푸핑하여 조작된 응답을 전송

> [사진 4]에서는 target[.]com의 IP 주소로 DNS 스푸핑

③ 피해자는 조작된 IP로 VPN 연결을 시도하며, 공격자는 정상 vpn[.]com으로 패킷 포워딩

④ 피해자가 target[.]com으로 접속 시 트래픽은 VPN 터널 외부로 전송

> 결과적으로 VPN 클라이언트는 스푸핑된 IP 주소로 연결을 시도

 

2.3 취약점 영향 및 대응 방안

[사진 5] TunnelCrack에 영향받는 VPN 클라이언트 비율 (좌 LocalNet, 우 ServerIP)

구분 대응방안
LocalNet - 로컬 트래픽 비활성화 (단, 로컬 네트워크 사용이 불가해짐)
- 라우팅할 수 없는 IP 주소에 대한 직접 액세스만 허용 (로컬 네트워크에 대한 액세스가 필수인 경우)
ServerIP - 정책 기반 라우팅 (VPN 클라이언트를 제외한 모든 애플리케이션의 트래픽을 VPN 터널을 통해 전송)
- 서버 IP 주소 확인 (클라이언트가 서버에 연결되면 VPN 서버의 IP 주소 확인)
- 인증된 DNS 사용 (DNSSEC 등)

 

3. TunnelVision (CVE-2024-3661) [2][3]

- 24.05.06 VPN 트래픽을 훔쳐볼 수 있는 취약점이 발견

> DHCP의 설계 오류로 인해 발생

> IP 라우팅을 기반으로하는 모든 VPN 시스템에 통하는 공격으로 2 가지 조건을 가짐

① 공격자가 클라이언트의 DHCP 서버가 되어야 함

② 대상 호스트의 DHCP 클라이언트는 옵션 121을 구현해야 함

 

- DHCP Option 33 vs Option 121

> 1997년 DHCP RFC에는 관리자가 클라이언트의 라우팅 테이블에 설치할 고정 경로를 지정할 수 있는 옵션 33 존재

> 옵션 33Classful Static Routes를 사용하였고, 공용 IP 공간이 제한되면서 시간이 지남에 따라 선호되지 않음

> 2002년 RFC 3442에서 Classless Static Routes가 가능한 옵션 121 도입 (호환을 위해 옵션 33 유지)

> TunnelVision은 옵션 121를 악용해 공격

※ Android는 DHCP 옵션 121을 지원하지않아 영향받지 않음

 

[사진 6] TunnelVision 공격 과정 [4]

 

① 공격자는 정상 DHCP 서버에 DHCP 고갈 공격을 수행

> DHCP 고갈 공격: DHCP 서버에 MAC 주소를 변조하여 DHCP Discover 패킷을 계속 전송하여 IP 주소를 모두 소진하도록 하는 공격

> DHCP는 DHCP Discover 패킷의 MAC 주소만 보고 호스트 인식

② 공격자는 피해자와 동일한 네트워크에서 악성 DHCP를 운영

③ 악성 DHCP 서버는 옵션 121을 악용해 라우팅 테이블에 고정 경로를 구성

④ 공격자는 트래픽이 기본 게이트웨이로 전달되기 전에 암호화되지 않은 트래픽을 가로챌 수 있음

 

[사진 7] 옵션 121을 악용한 정적 경로 [4]

 

 

[영상 1] TunnelVision 공격 시연 영상 [5]

 

3.1 대응방안

구분 설명
DHCP Snooping - DHCP 서버를 보호하기 위해 사용하는 기능
> 스위치에는 DHCP 서버 또는 DHCP Relay Agent가 접속된 Trusted Port와 DHCP 클라이언트가 접속된 Untrusted Port가 있음
> Untrusted Port에서 DHCP 응답 메시지를 확인하면 차단 (DHCP Spoofing 방지)
> 또한, Ethernet 프레임의 SRC MAC 주소와 DHCP 메시지의 클라이언트 MAC 주소를 비교해 정상 여부 판단 (DHCP 고갈 공격 방지)
옵션 121 비활성화 - TunnelVision은 옵션 121을 악용하므로 옵션 121 비활성화시 완화할 수 있음
포트 보안 - 포트에 연결된 PC의 MAC 주소를 등록한 후 등록된 MAC 주소에서 수신한 패킷만 전달

 

4. 참고

[1] https://tunnelcrack.mathyvanhoef.com/details.html
[2] https://www.leviathansecurity.com/blog/tunnelvision
[3] https://github.com/leviathansecurity/TunnelVision
[4] https://www.zscaler.com/blogs/security-research/cve-2024-3661-k-tunnelvision-exposes-vpn-bypass-vulnerability

[5] https://www.youtube.com/watch?v=ajsLmZia6UU

1.PuTTY [1]

- SSH, 텔넷, rlogin, raw TCP를 위한 클라이언트로 동작하는 자유 및 오픈 소스 단말 에뮬레이터 응용 프로그램

 

2. 취약점

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2024-31497 [2]

 

- 취약한 버전의 PuTTY에서 발생하는 비밀 키 복구 취약점

> 공격자는 비밀 키를 복구 및 서명을 위조하여 해당 키를 사용하는 모든 서버에 로그인할 수 있음

영향받는 버전: PuTTY 0.68 ~ 0.80

 

2.1 상세내용 [3]

- PuTTY 0.68 ~ 0.80까지 모든 버전에는 NIST P521 커브를 사용하는 ECDSA(타원 곡선 디지털 서명 알고리즘) 개인 키에서 서명을 생성하는 코드에 심각한 취약점이 존재

> PuTTY 또는 Pageant가 SSH 서버에 인증할 때 키에서 서명을 생성할 때 발생

 

2.1.1 취약점의 영향

- 사용자의 비밀 키가 노출

> 공격자가 다수의 서명된 메시지와 공개 키를 가지고 있으면 개인 키를 복구하는데 충분한 정보를 가지게 됨

> 이를 통해 사용자인 것처럼 서명을 위조하여 해당 키를 사용하는 모든 서버에 로그인이 가능해 짐

> 서명을 얻기 위해 키를 사용하여 인증하는 서버를 침해하거나, 키를 보유한 Pageant 사본에 잠시 액세스하면 됨

 

2.1.2 영향받는 키 타입

- 영향을 받는 유일한 키 타입521bit ECDSA

① Windows PuTTYgen에서 'Key fingerprint' 상자의 시작 부분에 ecdsa-sha2-nistp521이 표시되거나
② Windows Pageant에 로드될 때 'NIST p521'로 설명되거나
③ SSH 프로토콜 또는 키 파일에서 ecdsa-sha2-nistp521로 시작하는 ID를 가진 키

> 다른 크기의 ECDSA와 다른 키 알고리즘은 영향 받지 않음 (특히 Ed25519는 영향을 받지 않음)

 

2.1.3 오류 상세 내용

- 모든 DSA(디지털 서명 알고리즘) 서명 체계는 서명 중 무작위 값을 생성해야 함

> nonce(한 번만 사용되는 값) 또는 문자 k로 알려짐
> 공격자가 사용된 값을 추측 하거나 동일한 값으로 생성된 두 개의 서명을 찾을 수 있다면 즉시 개인키 복구가 가능

※ 즉, 무작위성이 없는 시스템에서 DSA 서명을 생성하는 것은 매우 위험

 

- PuTTY는 Windows에서 개발되었기 때문에 난수 생성기가 전혀 없었음

> 무작위 값이 아닌 결정론적 방법을 사용하여 k를 생성

> 해시 입력에 서명할 메시지와 개인 키를 모두 포함하는 보안 해시를 계산하는 것이 핵심 기법 (RFC 6979)

> PuTTY는 2001년부터 동일한 작업을 수행했고 해당 RFC는 2013년 문서화되어 PuTTY는 해당 사양을 따르지 않음

 

2.1.4 취약점 발생 원인

- PuTTY의 기술은 SHA-512 해시를 만든 후 이를 mod q로 줄이는 방식으로 작동

> P521(=영향받는 키 타입)을 제외한 모든 경우에 512bit 숫자를 mod q로 줄임으로써 발생하는 편향은 무시가능

> 그러나 P521의 경우 q가 521bit(즉, 512bit 이상)이므로 512bit 숫자를 mod q로 줄이는 것은 아무 의미가 없음

> 상위 9bit 값이 항상 0인 값을 얻게 되며, 이러한 편향으로 인해 키 복구 공격이 가능해 짐

※ 필요한 서명의 개수는 약 60개

 

2.1.5 취약점 수정 내용 및 대응 방안

- 수정 내역: 모든 DSA 및 ECDSA 키 유형에 대해 RFC 6979를 따르도록 변경

> 이전 시스템 완전 폐기

> Ed25519와 같은 EdDSA 키는 이미 다른 시스템을 사용하고 있어 변경되지 않음

 

- 대응 방안: 영향받는 유형의 키가 있는 경우 즉시 폐기

> 모든 OpenSSH authorized_keys 파일과 다른 SSH 서버의 동일한 파일에서 이전 공개키를 제거

> 손상된 키의 서명이 더 이상 가치가 없도록한 후 새 키 쌍을 생성해 교체

 

3. 참고

[1] https://www.putty.org/
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-31497
[3] https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/vuln-p521-bias.html
[4] https://www.boannews.com/media/view.asp?idx=128945&page=6&kind=1

+ Recent posts