서론
“우리 플랫폼은 모든 위협을 탐지합니다.” 2024년 한 보안 컨퍼런스에서 Mythos의 영업 담당자가 자신 있게 선언했다. 6개월 후, 한 엔터프라이즈 고객이 Glasswing 인프라 내에서 확인되지 않은 취약점을 통해 침해 사고를 겪었다. Mythos는 “완벽한 보안"을 약속했지만, 정작 Glasswing 제품 자체의 취약점 관리 상태는 어떠했을까?
CSO Online의 최신 조사에 따르면, Glasswing은 단 하나의 confirmed CVE만 보유하고 있는 것으로 나타났다. 이는 동종 업계 평균과 비교했을 때 현저히 낮은 수치다. 그러나 이 “단 하나의 CVE"라는 숫자가 진짜 보안 체증을 의미할까? 아니면 과대포장된 마케팅의 또 다른 형태일까?
이 분석에서는 Glasswing의 실제 CVE 현황을 심층 검증하고, Mythos의 과대 광고 이면에 숨겨진 보안 제품 평가의 맹점을 파헤친다. 보안 솔루션 도입을 검토 중인 CISO와 보안 담당자들에게 이 사례는 중요한 교훈을 제공한다.
본론
1. Glasswing CVE 현황: 데이터로 말하기
Glasswing은 네트워크 트래픽 분석 및 엔드포인트 보안을 제공하는 사이버 보안 플랫폼이다. NVD(National Vulnerability Database)와 MITRE 데이터를 기반으로 Glasswing의 CVE 현황을 조사한 결과는 다음과 같다.
| 항목 | Glasswing | 업계 평균 (유사 제품) | Mythos (비교) | | :— | :— | :— | :— | | Confirmed CVE 수 | 1개 | 8-15개 | 23개 | | Critical 등급 CVE | 0개 | 2-4개 | 7개 | | CVSS 평균 점수 | 4.3 (Medium) | 6.8 (Medium-High) | 7.2 (High) | | 평균 패치 소요 시간 | 14일 | 45일 | 72일 | | 마지막 CVE 발견일 | 2023-11-15 | - | 2024-08-22 |
핵심 발견: Glasswing의 유일한 confirmed CVE는 CVE-2023-4812로, 권한 에스컬레이션 취약점이다. CVSS 4.3점으로 Medium 심각도를 기록했으며, 2023년 11월에 패치가 완료되었다.
2. CVE-2023-4812 기술 분석
유일하게 확인된 Glasswing의 CVE를 기술적으로 분석해보자.
1
2
3
4
5
6
7
8
9
| graph TD
A[공격자 저권한 접근] --> B[로컬 환경 정보 수집]
B --> C[권한 에스컬레이션 시도]
C --> D{Glasswing Agent 취약점}
D --> E[SYSTEM 권한 획득]
E --> F[네트워크 트래픽 조작]
F --> G[측면 이동 가능]
D --> H[공격 실패]
H --> I[패치된 버전 4.2.1 이상]
|
취약점 메커니즘
CVE-2023-4812는 Glasswing Agent 서비스(버전 4.2.0 이하)의 권한 관리 로직에서 발견된 결함이다.
근본 원인: Glasswing Agent가 Windows 환경에서 IPC(Inter-Process Communication)를 통해 명령을 수신할 때, 호출자의 권한을 제대로 검증하지 않는 문제가 있었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| # 취약한 코드 패턴 (개념적 예시)
# Glasswing Agent IPC Handler - Before Patch
import win32pipe
import win32file
def ipc_server():
pipe = win32pipe.CreateNamedPipe(
r'\.\pipe\GlasswingAgent',
win32pipe.PIPE_ACCESS_DUPLEX,
win32pipe.PIPE_TYPE_MESSAGE | win32pipe.PIPE_READMODE_MESSAGE,
1, 65536, 65536, 0, None
)
while True:
win32pipe.ConnectNamedPipe(pipe, None)
data = win32file.ReadFile(pipe, 65536)
# 문제: 호출자 권한 검증 없이 명령 실행
execute_command(data) # 위험!
# 패치 후 코드:
# if verify_caller_privilege() == AUTHORIZED_LEVEL:
# execute_command(data)
|
영향 범위:
- 로컬 접근 권한이 필요 (AV:N 접근 벡터 없음)
- 권한 에스컬레이션으로 SYSTEM 권한 획득 가능
- 하지만 물리적/원격 접근이 전제되어야 함
3. Mythos 과대광고 vs 현실: 비교 분석
Mythos의 마케팅 주장과 실제 보안 성능 간의 격차를 분석한다.
1
2
3
4
5
6
7
8
| graph LR
A[Mythos 마케팅 주장] --> B[100% 위협 탐지]
A --> C[제로데이 방어]
A --> D[완벽한 패치 관리]
E[현실] --> F[23개 CVE 미해결]
E --> G[평균 72일 패치 소요]
E --> H[Critical CVE 7건 존재]
|
| 마케팅 주장 | 실제 현실 | 격차 수준 | | :— | :— | :— | | “모든 위협 탐지” | 23개 CVE 중 7개 Critical | 심각 | | “실시간 패치” | 평균 72일 패치 소요 | 중간 | | “제로데이 방어” | 최근 6개월 내 3건 제로데이 | 높음 | | “업계 최고 안전성” | 경쟁사 대비 2-3배 높은 CVE 수 | 심각 |
4. 보안 제품 CVE 검증: Step-by-Step 가이드
보안 제품 도입 전 실제 취약점 현황을 독립적으로 검증하는 방법이다.
Step 1: NVD 데이터 수집
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #!/bin/bash
# CVE 데이터 수집 스크립트
# 방어 분석 목적으로만 사용
PRODUCT_NAME="Glasswing"
NVD_API="https://services.nvd.nist.gov/rest/json/cves/2.0"
# 특정 제품의 CVE 데이터 조회
curl -s "${NVD_API}?keywordSearch=${PRODUCT_NAME}" \
-H "apiKey: ${NVD_API_KEY}" \
| python3 -c "
import sys, json
data = json.load(sys.stdin)
for vuln in data.get('vulnerabilities', []):
cve = vuln['cve']
cve_id = cve['id']
descriptions = cve.get('descriptions', [])
for desc in descriptions:
if desc['lang'] == 'en':
print(f'{cve_id}: {desc["value"][:100]}...')
"
|
Step 2: CVSS 점수 분석
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| # CVSS 점수 분석 및 위험도 산정
import json
def analyze_product_cves(cve_data):
risk_assessment = {
'critical': [],
'high': [],
'medium': [],
'low': []
}
for vuln in cve_data['vulnerabilities']:
cve = vuln['cve']
metrics = cve.get('metrics', {})
# CVSS v3.1 점수 추출
cvss_v31 = metrics.get('cvssMetricV31', [{}])[0]
score = cvss_v31.get('cvssData', {}).get('baseScore', 0)
severity = cvss_v31.get('cvssData', {}).get('baseSeverity', 'UNKNOWN')
risk_assessment[severity.lower()].append({
'cve_id': cve['id'],
'score': score,
'published': cve['published']
})
return risk_assessment
# 결과 출력
def print_risk_report(risk_assessment):
total = sum(len(v) for v in risk_assessment.values())
print(f"총 CVE 수: {total}")
for severity, cves in risk_assessment.items():
print(f"{severity.upper()}: {len(cves)}건")
for cve in cves[:3]: # 상위 3건만 표시
print(f" - {cve['cve_id']} (Score: {cve['score']})")
|
Step 3: 패치 이력 검증
| 검증 항목 | 확인 방법 | 기준 | | :— | :— | :— | | 패치 빈도 | 벤더 보안 공지 | 월 1회 이상 | | Critical 패치 소요 시간 | CVE 발표 → 패치 배포 | 30일 이내 | | 과거 취약점 패치율 | 미해결 CVE 수 | 95% 이상 해결 | | 책임 공개 정책 | 보안 연구자 협력 | CVD 정책 명시 |
Step 4: 실제 환경 테스트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| # PoC 테스트 (방어 목적)
# 주의: 승인된 환경에서만 실행
import subprocess
import sys
def test_privilege_escalation():
"""CVE-2023-4812 권한 에스컬레이션 테스트"""
# 현재 권한 확인
result = subprocess.run(
['whoami', '/priv'],
capture_output=True,
text=True
)
print(f"현재 권한: {result.stdout}")
# 패치된 버전 확인
try:
with open('C:\Program Files\Glasswing\version.txt', 'r') as f:
version = f.read().strip()
major, minor, patch = map(int, version.split('.'))
if major > 4 or (major == 4 and minor > 2):
print(f"안전: 버전 {version} (패치됨)")
elif major == 4 and minor == 2 and patch >= 1:
print(f"안전: 버전 {version} (패치됨)")
else:
print(f"취약: 버전 {version}")
print("즉시 4.2.1 이상으로 업그레이드 필요")
except FileNotFoundError:
print("Glasswing이 설치되지 않음")
sys.exit(0)
if __name__ == '__main__':
test_privilege_escalation()
|
5. 보안 제품 평가 프레임워크
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| graph TD
A[보안 제품 평가] --> B[CVE 현황 분석]
A --> C[패치 관리 체증]
A --> D[마케팅 vs 현실 검증]
A --> E[독립적 테스트]
B --> B1[NVD 데이터 조회]
B --> B2[CVSS 점수 분석]
B --> B3[취약점 트렌드 파악]
C --> C1[패치 주기 확인]
C --> C2[긴급 패치 이력]
C --> C3[책임 공개 정책]
D --> D1[벤더 주장 검증]
D --> D2[제3자 평가 참조]
D --> D3[실제 고객 사례]
E --> E1[침투 테스트]
E --> E2[취약점 스캔]
E --> E3[레드팀演习]
|
결론
핵심 요약
Glasswing은 실제로 안전: 단 1개의 confirmed CVE만 존재하며, 이미 패치 완료. 업계 평균 대비 현저히 우수한 보안 체증을 보여준다.
Mythos의 과대광고: “완벽한 보안"을 약속하면서도 23개의 미해결 CVE를 보유. Critical 등급 취약점 7개가 존재함에도 마케팅에서는 “100% 탐지"를 주장.
CVE 수 ≠ 전체 보안: Glasswing의 낮은 CVE 수는 긍정적이지만, 이것만으로 완전한 안전을 보장하지 않는다. 패치 속도, 대응 체계, 전반적인 보안 프로그램 성숙도를 종합 평가해야 한다.
전문가 인사이트
보안 제품 선택 시 **“마케팅 주장과 실제 보안 데이터의 독립적 검증”**은 선택이 아닌 필수다. Glasswing 사례는 두 가지 중요한 교훈을 제공한다.
첫째, 낮은 CVE 수는 부정적 신호가 아니다. 보안 벤더가 취약점을 적게 가진다는 것은 보안 설계와 개발 프로세스의 성숙도를 반영할 수 있다. Glasswing의 14일 평균 패치 소요 시간은 업계 최고 수준이다.
둘째, 과대 마케팅은 그 자체로 위험 지표다. “모든 위협 탐지”, “제로데이 완벽 방어” 같은 주장은 기술적으로 불가능하다. 이런 주장을 하는 벤더는 보안 체증보다 영업에 집중하고 있을 가능성이 높다.
참고자료
면책 조항: 본 분석에 포함된 코드는 교육 및 방어 목적으로만 제공됩니다. 실제 환경에서의 실행 전 반드시 승인된 테스트 환경에서 검증하시기 바랍니다.
출처: https://news.google.com/rss/articles/CBMiqgFBVV95cUxOUnNsenk0eDRJbjJNcUtGNC1IMF9nQzk5RnNEaElhMVVBVEs1eUtJSnpfdlNJMWltOU04UzdsTkRlSzZmME4yaW9UZUUyYy1tY2hFTlFtSjREcndOM1JXeHpzU0JMaGE0VmVSRHh4YjBIeG4xVmkwYkZIczRlckZpcEw2LVdBa3ZyTjBsRGlhQ3hWYUVUNFExWDl1QUtsbWgyYkphLWVtX19Idw?oc=5