[방어] 분석 — CVE-2021-30116
CVE-2021-30116 enables unauthenticated credential disclosure via the public /dl.asp download page of Kaseya VSA, allowing attackers to obtain a valid session cookie and fully compromise the management console; immediate external blocking of /dl.asp is required while patching to 9.5.7a (server) / 9.5.0.24 (agent).
📋 요약
- 심각도 critical · CVSS 10.0 · EPSS 0.85735 · 악용난이도 easy · KEV
🔍 공격 기법
Kaseya VSA(버전 < 9.5.7)는 기본적으로 https://x.x.x.x/dl.asp 에서 클라이언트 설치 파일을 제공합니다.
공격자는 이 페이지에 GET 파라미터로 un=(Agent_Guid)와 pw=(AgentPassword)를 전달하면 인증 없이 세션 ID 쿠키를 발급받습니다.
발급된 쿠키는 에이전트 전용 서비스뿐 아니라 관리 콘솔에도 사용할 수 있어, 이후 추가 명령 실행·데이터 탈취가 가능합니다.
악용 가능성: 이 취약점은 AV:N / AC:L / PR:N / UI:N 로 평가된 바와 같이, 공격자는 네트워크만 연결되면 별다른 사전 권한이나 사용자 동작 없이 바로 악용할 수 있습니다. 즉, Kaseya VSA의 기본 다운로드 페이지(예: https://x.x.x.x/dl.asp)가 외부에 노출돼 있으면 누구든지 해당 URL에 접근해 파라미터(un, pw)만 조작하면 인증을 우회하고 세션 쿠키를 획득할 수 있습니다. 이 페이지는 클라이언트 설치 시 자동 생성되는 KaseyaD.ini 파일에 포함된 Agent_Guid와 AgentPassword 값을 그대로 사용하므로, 공격 표면은 “다운로드 엔드포인트 + URL 파라미터”로 한정됩니다. EPSS 점수 0.85735(85.735%)는 실제 환경에서 이 취약점이 성공적으로 악용될 확률이 매우 높다는 것을 의미하며, KEV 리스트에 등재된 점은 이미 2021년 7월 실전 공격 사례가 존재함을 입증합니다. 따라서 공격 난이도는 ‘easy’ 로 평가되며, 별도의 사전 준비 없이 네트워크 접근만으로 바로 인증 우회와 권한 상승이 가능하다는 점에서 위험도가 크게 작용합니다.
💥 영향 분석
- Credential Disclosure:
KaseyaD.ini에 저장된 Agent_Guid와 AgentPassword가 외부에 노출됩니다. - Session Hijack: 발급받은 세션 ID 쿠키로 관리 인터페이스에 무단 로그인할 수 있습니다.
- Lateral Movement: 획득한 에이전트 자격증명으로 연결된 모든 클라이언트(Endpoint)와 서버에 접근 가능해집니다.
🔗 관련 취약점·체이닝
- 동일 제품의 과거 인증 우회(CVE‑2020‑XXXXX)와 결합하면, 초기 다운로드 페이지 차단 없이도 내부 네트워크에서 직접 에이전트를 배포하여 권한 상승을 시도할 수 있습니다.
- 공개된
/dl.aspGET 파라미터를 이용한 크리덴셜 탈취는 웹 어플리케이션 방화벽(WAF) 우회 기법과 연계될 가능성이 존재합니다.
🔎 탐지
-
로그 지표
- Web Server Access Log (IIS/Apache/Nginx):
cs-uri-stem=/dl.asp,cs-uri-query에un=와pw=포함 여부. - WAF 로그:
request_uri가/dl.asp이며 쿼리 문자열에 64자리 HEX(pw)가 존재할 때 경고. - Endpoint File Audit (Sysmon, OSSEC 등):
KaseyaD.ini파일 생성·수정 이벤트 (EventID=11/12), 경로*\Kaseya*\KaseyaD.ini.
- Web Server Access Log (IIS/Apache/Nginx):
-
SIEM 탐지 규칙 예시
- Splunk Query
1index=web sourcetype="access_combined" uri_path="/dl.asp" 2 | regex uri_query="un=\d+&pw=[a-f0-9]{64}" 3 | stats count by src_ip, uri_query, _time span=5m 4 | where count > 3- Elastic Kibana DSL
1{ 2 "bool": { 3 "must": [ 4 {"match_phrase": {"request.uri.path": "/dl.asp"}}, 5 {"regexp": {"request.uri.query": "un=\\d+&pw=[a-f0-9]{64}"}} 6 ], 7 "filter": {"range": {"@timestamp": {"gte":"now-5m"}}} 8 } 9}- OSSEC Rule (File Creation)
1<rule id="100200" level="12"> 2 <if_sid>550</if_sid> 3 <field name="filename">KaseyaD\.ini$</field> 4 <description>Kaseya agent credential file created</description> 5</rule>- 오탐 튜닝
- 내부 관리자가 정기적으로 에이전트 설치를 수행하는 경우, 해당 IP·시간대는 화이트리스트에 추가합니다.
pw=값이 64자리 HEX가 아닌 경우(예: 테스트용 짧은 문자열)는 제외하도록 정규식을 조정합니다.
🛡️ 완화 방안
- 인증 강화 – 다운로드 페이지에 기본 인증(NTLM 혹은 Basic) 또는 SSO를 적용하고, 기존 무인 접근 방식을 차단합니다.
- 네트워크 제한 –
/dl.asp를 내부 관리망(VLAN) 전용으로 이동시키고, 외부 라우터에서 해당 서브넷만 허용합니다. - 크리덴셜 회전 – 기존
Agent_Guid/AgentPassword를 즉시 재생성하고, 모든 에이전트에 새 파일(KaseyaD.ini)을 배포합니다.
- 난이도·영향: ★★☆ (인증 설정 및 네트워크 설계 변경 필요, 잠재적 서비스 재배포로 일시적인 다운타임 발생 가능).
- 검증: 인증 적용 후 정상 사용자만 200 응답을 받는지 확인하고, 크리덴셜 회전 로그(
KaseyaD.ini생성 시각)와 기존 쿠키가 무효화되는지 점검합니다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=10.0 · KEV · EPSS=0.85735 · exploit=easy · in_scope=None