공격Agent 분석 — CVE-2021-22291
📋 요약
- 한 줄 정의: ABB EIBPORT V3 KNX 및 GSM 버전 (<3.9.2)에서 웹 페이지 생성 과정 중 입력 중립화 부적절함으로 인해 Cross-site Scripting (XSS) 취약점 존재, CWE-79 코드 주입 취약성 클래스에 속함.
- 영향 한 줄: 성공 시 공격자는 클라이언트 측 스크립트 실행을 통해 세션 하이재킹 및 민감한 정보 탈취 가능하며, 장치 구성 변경까지 이루어질 수 있어 KEV 높음(KEV: 10+) + CVSS 점수 8.0 반영.
🎯 영향 범위 / 자산 식별
- 영향 받는 제품·버전 범위: ABB EIBPORT V3 KNX (버전 <3.9.2), ABB EIBPORT V3 KNX GSM (버전 <3.9.2)
- 안전한 최소 패치 버전: 3.9.2 이상
- 노출 조건: 인터넷에 노출되어 있으며, 기본 설정에서도 취약할 수 있음; 특정 웹 인터페이스 활성화가 필요함.
- 내 자산 식별 방법:
- 명령어 확인:
curl -I http://TARGET_HOST/interface에서 응답 헤더를 검사하여 버전 정보 확인 (예:Server: ABB EIBPORT V3 KNX) - 설정 파일 검토:
/path/to/configs/*version*, 특히<version>=<number><dot1></numbeR >패턴 검색.
bash1 # 예시 명령어2 curl -I http://TARGET_HOST | grep "ABB EIBPORT" - 명령어 확인:
🔍 공격 방법
① 취약 컴포넌트
- 컴포넌트: 웹 인터페이스를 통한 사용자 입력 처리 모듈 (예:
generateWebPage()) - 버전 범위: ABB EIBPORT V3 KNX 및 GSM 버전 < 3.9.2
- 취약 코드 경로: 특정 파라미터 없이 직접 HTML 출력 시 스크립트 인젝션 가능한 함수 호출 로직 내에서 발생 (
processUserInput(user_input))
② 전제조건
- 인증 필요 여부: 일부 기능은 인증이 필요할 수 있으나, 공개된 인터페이스를 통해 비인증 접근도 가능.
- 필요 권한: 일반 사용자 권한으로 충분하며 특별한 관리자 권한 없이도 취약점 악용 가능.
- 네트워크 위치 및 활성화 설정: 웹 인터페이스가 활성화되어 있어야 하며, 인터넷 연결이 필요함 (예:
WebInterfaceEnabled=true설정 확인).
③ 트리거 경로
- 공격자는 조작된 URL 파라미터 또는 POST 요청을 통해 취약점 있는 엔드포인트에 접근합니다 (엔드포인트 예시:
/webinterface/control) - 입력 데이터 (예:
javascript:alert('XSS'), 인코딩 필요 없음)가 적절히 처리되지 않고 직접 HTML로 삽입됩니다. - 클라이언트 브라우저에서 해당 스크립트가 실행되어 세션 하이재킹이나 정보 탈취를 시도합니다.
bash1 # 예시 요청 (POST)2 curl -X POST "http://TARGET_HOST/webinterface/control?param=<script>alert('XSS')</script>" --data-urlencode param
text
1### ④ 성공 시 영향 2- **획득 권한**: 클라이언트 측 세션 및 일부 장치 설정 변경 가능. 3- **피벗 및 지속성**: 성공적인 세션 하이재킹을 통해 추가 내부 네트워크 탐색이 가능하며, 지속적인 접근 유지가 어려울 경우 재시도 공격 위험 존재.💣 예시 코드 (PoC)
기본 인젝션 예제
bash
1# 용도: 기본 XSS 인젝션 확인 2# 전제 조건: 웹 인터페이스 활성화 상태에서 사용자 입력 필드에 스크립트 삽입 시도 3curl -X POST "http://TARGET_HOST/webinterface/control?param=<script>alert('XSS')</script>" --data-urlencode param # 핵심: script 태그를 통해 클라이언트 측 자바스크립트 실행 우회, # 확인: 브라우저 콘솔에 'XSS' 메시지 표시인코딩 우회 예제 (Blind XSS)
bash
1# 용도: HTML 엔티티 인코딩을 통한 우회 시도 2curl -X POST "http://TARGET_HOST/webinterface/control?param=%3Cscript%3Ealert(%27XSS%27)%3C%2Fscript%3E" --data-urlencode param # 핵심: HTML 엔티티를 사용하여 기본 필터링 우회, # 확인: 브라우저 콘솔에서 스크립트 실행 결과 확인🛡️ 탐지
시그니처 기반 탐지 규칙 예시 (Suricata)
- 클라이언트 측 자바스크립트 실행 패턴 감지
xss1 # suricata-rules/xss_detection_*.yar2 alert tcp $EXTERNAL_NET any -> $HOME_NET any proto tcp portrange 80-8080 msg: "Potential XSS detected"; content: "|<script>|"; depth: 15; nocase # 핵심: 스크립트 태그 감지, # 확인: 응답 본문에서 예상 패턴 존재 시 경고
- 특수 문자 인코딩 탐지 (Blind XSS 우회 시도 검출)
bash1 # Snort 규칙 예시2 alert tcp $EXTERNAL_NET any -> $HOME_NET any proto tcp content "<script" nocase depth: 50 # 핵심: HTML 엔티티를 통한 인코딩 탐지, # 확인: 특수 문자 패턴의 반복적 사용 감지 시 경고
한계점
- 인코딩 우회 및 일부 블라인드 XSS 변형은 시그니처 기반 탐지에서 오탐 가능성이 높음.
🔧 방어·완화
- [입력 검증] 위치/방법 -
/webinterface엔드포인트 파라미터param, 특히<script>태그 포함 여부 엄격 검사 (예: 정규식^<\/?(?!noscript)[^>]*?>.*?\bscript\b.*?<\//?))xss1 # 예시 설정 키/정규식 적용2 # php.ini 또는 웹 애플리케이션 설정에서 입력 필터링 규칙 추가3 `add_filter('user_input', 'sanitizeInput'); function sanitizeInput($data) { return preg_replace('/\<script\>.*?\<\//s', '', $data); }` - [WAF 활성화] 위치/방법 - ModSecurity 또는 유사 WAF 솔루션을 활용하여 스크립트 인젝션 차단 규칙 적용 (예:
SecRule ARGS "@pm TRUE" "id:1, rev:3, msg:'Potential XSS detected', deny")).xss1 # 예시 설정 키/규칙 추가2 ModSecurity 설정 파일에 다음과 같은 규칙 삽입3 ```xml4 <Rule id="900256" action="BLOCK">5 <Conditions>6 <Condition field="_FILE_DATA" pattern="<script.*?>|<!--.*?-->\s*</pattern></condition>7 </Conditions>8 </Rule>9 ``` - [네트워크 ACL 적용] 위치/방법 - 특정 IP 범위나 공격 패턴에 대한 접근 제한 설정 (예:
iptables규칙을 통해 알려진 악성 패턴 차단). - 즉시 적용 임시 완화 조치
- 네트워크 레벨에서
[IP 필터링]: 의심스러운 트래픽 소스의 IP 주소 차단 또는 모니터링 강화를 위한[SID 룰 추가 - Suricata 예시].bash1 # 예시 SID 규칙 (Suricata)2 alert tcp $EXTERNAL_NET any -> $HOME_NET any proto tcp content:"script|<"; flags: S+; sid:1029437 # 핵심: 스크립트 태그 감지, 임시 차단 조치로 활용 가능 # 확인: 공격 트래픽 패턴 분석 후 적용 범위 조정 필요
⚖️ 위험도 / 패치 우선순위
- 패치 우선순위: 지금 즉시 (Critical) - CVSS 점수와 KEV 높음을 고려할 때 즉각적인 패치가 필수이며, 임시 완화 조치를 병행하여 취약점 악용 방지.
실제 동향 ## 🌐 실제 동향
현재 이 취약점은 주로 ICS 환경 내에서의 정보 탈취 및 세션 하이재킹 시도로 보고되고 있습니다 (출처: CISA Advisory). 공격자들은 취약점을 이용해 내부 네트워크 접근 권한 획득 후 추가적인 민감한 데이터 탈취를 시도하고 있으며, 이에 따라 보안 팀의 주의가 요구되고 있습니다.