- 인프라를 운영하며 관련 법률에서 제정한 다양한 규정 준수 및 보안 인증 등을 위해 다양한 솔루션이 사용
- 솔루션 증가는 공격자 입장에서 더 많은 선택권이 주어지는 것이므로, 현재 사용되는 솔루션의 위험성을 인식할 필요
- 금보원은 공격자의 관점에서 모의해킹을 진행해 공급망 공격을 분석한 ‘레드아이리스 인사이트 리포트 : Campaign ThirdEye’를 발간 [1]
※ 내용의 민감성을 고려하여 요약본 게시
2. 주요 내용
2.1 3rd Party 솔루션 유형 분류
구분
설명
형태별 분류
- 단일 소프트웨어 형태 - 하드웨어와 소프트웨어가 포함된 어플라이언스 장비 형태
기능별 분류
- 업무용 솔루션: 그룹웨어 / 웹 메일 / 메신저 / 문서 편집 / 업무포탈 등 - 보안 솔루션: 통합인증 / 망분리 및 망연계 / 계정관리 / 서버접근통제 등
2.2 3rd Party 취약점 분석
구분
설명
파일 업로드 취약점
- 파일업로드 기능을 이용해 악의적인 웹쉘 파일을 업로드하는 취약점 > 웹쉘 업로드 성공시 구동하는 웹 서비스 권한으로 쉘 획득 및 후속 공격이 가능 > 게시판 모듈의 취약점을 악용한 사례가 가장 많이 발견(개발사 폐업, 지원 종료, 업데이트 미적용 등)
- 세부 사례 ① 업로드 확장자 검증 미흡 > 대부분 최신 버전 에디터는 기본적으로 JSP 등 악의적인 파일 업로드를 방지하기 위해 확장자 제한 > 일부 구버전 게시판 에디터의 경우 별도 검증 없이 파일 첨부 기능을 제공
② 관리자 페이지를 통한 파일 업로드 > 관리용 기능에서는 별도의 보안 검증을 수행하지 않는 경우가 많음 > 실질적으로 관리자 페이지 및 URL이 노출되지 않더라도 추측 및 무작위 대입을 통해 URL 식별 가능 > 원활한 관리를 위해 원격 접근을 허용하는 경우 또한 존재
2.3 써드아이(ThirdEye) 캠페인
- 3rd Party 솔루션 모의해킹 시나리오를 심층 분석해 가상의 해킹작전 (오퍼레이션)으로 재구성
> 이와 연관된 모든 활동을 써드아이(ThirdEye) 캠페인으로 명명
> 공격자 관점으로 시나리오별 세부적인 TTPs를 공유해 효율적으로 선제적 대응을 할 수 있도록 지원하는 것이 목표
[사진 1] 써드아이(ThirdEye) 캠페인
- 오퍼레이션별 TTPs 프로파일링
구분
설명
초기 침투
- 초기 침투시 공통적으로 파일 업로드 활용 - 각각 테스트 페이지, 에디터, 파일 전송 모듈을 찾아 악용
지속성 유지
- 재접속을 위해 웹쉘, SSH 많이 이용 - 비밀번호 변경 없이 SSH 키를 등록하거나, 관리자 계정을 생성하는 방법을 주로 사용
인증정보
- WAS 설정 파일을 복호화하여 DB 접속 정보, 관리자 계정 정보 등 탈취
접근 네트워크 확장
- 정상 프로토콜을 악용해 터널링 생성 - 주로 HTTP와 SSH 터널링을 활용 - 터널링을 맺게 되면 연결된 포트를 통해 패킷이 경유지를 거쳐 방화벽을 우회하여 직접 접근하지 못하던 네트워크에 접근이 가능 (=네트워크 피보팅)
측면 이동
- 더 많은 서버와 PC의 권한을 획득하는 것이 목적 - 정상 인증정보 확보 또는 솔루션 취약점 악용
2.3 대응방안
구분
설명
파일 업로드 취약점 원인 제거 및 관리
- 여러 곳에 구현된 업로드 기능을 우선적 파악 - 일반적인 기능 외에도 다양한 업로드 기능이 존재할수 있음 - 예시: 업로드 허용 확장자, 타입, 용량 제한 / 업로드 경로 실행권한 제거 / 업로드 경로 분리 등
서버 내 인증정보 관리
- 비밀번호 하드코딩 금지 - 필요시 암호화 적용 및 엄격한 파일 권한 설정
비밀번호 설정 및 점검 강화
- 유추하기 쉬운 키워드가 포함되지 않도록 설정 - 비밀번호 설정 정책, 가이드, 교육 외에도 실제 점검을 수반
솔루션 점검 및 계정 모니터
- 솔루션은 다수의 PC 및 서버와 연동되어 있으며, 높은 권한을 지님 - 솔루션 자체에 대해서도 계정, 포트, 정책 등 다양한 점검이 필요
[사진 2] 핵심 조치 필요 사항
3. 결론
- 솔루션 도입을 통해 효율적으로 관리를 시도하나, 관리 인원이 추가되지 않고 관리 요소만 증가하는 경향
- 공격자들은 이미 수년전부터 공급자인 제조사를 해킹해 소스코드 탈취해 취약점 확보 후 공격에 악용
- 패치 되지 않았거나, 계정 관리가 되지 않거나, 중앙 집중 관리 솔루션 등에 대해 접근통제 및 모니터링 필요
- 독일 아테네국립응용사이버보안연구센터에서 DNS 보안 프로토콜 DNSSEC의 설계 결함을 악용한 KeyTrap (CVE-2023-50387)발견 [1] - 단일 DNS 패킷을 전송하여 서비스 거부를 유발할 수 있음 > 취약한 DNS의 경우 최소 170초에서 최대 16시간 동안 서비스 거부 발생
2. 주요내용
2.1 DNSSEC(Domain Name System Security Extension) [2][3]
- DNS는 도메인(hxxps://example[.]com)을 IP 주소(1.1.1.1)로 변환하는 역할 > 초기 설계시 보안성을 충분히 고려하지 못해 DNS 정보 위-변조가 가능하다는 문제 존재 Ex. DNS Cache Poisoning
- 기존 DNS 보안성을 강화하기 위해 공개키 암호화 방식의 보안기능을 추가한 DNSSEC(DNS Security Extensions) 도입 > DNS를 대체하는 것이 아님
- DNSSEC 설계 결함으로 인해 DNS 서버에 서비스 거부를 유발할 수 있는 취약점 > DNSKEY 및 RRSIG 레코드가 여러개일 경우 프로토콜 사양에 따라 모든 조합에 대한 유효성 검사를 수행
- 취약점과 관련된 세 가지 DNSSEC 설계 문제 ① 여러 개의 서로 다른 DNS 키가 동일한 키 태그를 가질 수 있어 서명 유효성 검사 프로세스에 계산 부하 발생 가능 ② 서명을 성공적으로 검증하는 키를 찾거나 모든 키가 시도될 때까지 모든 키를 시도해야 하므로(가용성 보장 목적) 계산 부하 발생 가능 ③ 동일한 레코드에 여러 서명이 있는 경우 유효한 서명을 찾거나 모든 서명이 시도될 때까지 수신된 모든 서명을 검증해야 하므로, 계산 부하 발생 가능
- 영향받는 버전
[사진 2] 취약한 DNS 구성
2.2.1 SigJam (하나의 키 X 다수 서명)
- DNS Resolve가 하나의 DNS 키를 사용하여 DNS 레코드에 존재하는 다수의 유효하지 않은 서명을 검증하도록 유도 > DNS Resolve가 DNSKEY로 검증할 수 있는 서명을 찾을 때까지 모든 서명을 시도하도록 설계 됨 > 공격자는 단일 DNS 응답에 340개의 서명을 작성할 수 있음 > 340개의 서명에 대한 유효성 검증을 수행한 후 DNS Reolve는 클라이언트에 SERVFAIL를 반환
2.2.2 LockCram (다수의 키 X 하나의 서명)
- DNS Resolve가 ZSK DNSSEC키를 사용하여 DNS 레코드를 통해 하나의 서명을 검증하도록 유도 > DNS Resolve가 하나의 키가 검증되거나 모두 시도될 때까지 서명에 사용할 수 있는 모든 키를 시도하도록 설계 됨 > DNS Resolve는 서명을 검증하기 위해 모든 DNSSEC 키를 사용 > 해당 서명이 유효하지 않다고 결론을 내릴 때까지 서명이 참조하는 모든 키를 시도
2.2.3 KeySigTrap (다수의 키 X 다수의 서명)
- SigJam과 LockCram를 결합하여 검증 과정이 2배 증가하는 공격
> 모든 키와 서명 쌍이 검증될 때까지, 가능한 모든 조합에 대해 검증을 시도
Ex. 첫 번째 ZSK를 사용해 N개 서명을 검증한 후, 두 번째 ZSK를 사용해 N개 서명을 검증하여 N번째 ZSK를 사용해 N개 서명을 검증
> 모든 조합 시도 후 레코드를 검증할 수 없다는 결론을 내리고 클라이언트에 SERVFAIL를 반환
2.2.4 HashTrap (다수의 키 X 다수의 해시)
- 다수의 DS 해시 레코드에 대해 충동하는 다수의 DNSKEY를 검증하기 위해 많은 해시를 계산하도록 유도
[사진 3] KeyTrap 공격에 의한 서비스 거부 시간
3. 대응방안
- 벤더사 제공 패치 제공 > 현재까지 나온 패치는 임시 조치 > DNSSEC 설계를 처음부터 다시 해야 문제가 해결될 것
- DNSSEC 기능 비활성화시 취약점이 근본적으로 사라지나 권장하지 않음 > KeyTrap 취약점을 제외하면 DNSSEC로부터 얻는 안전의 이득이 훨씬 많음
- AI/ML 대상 버그 바운티 플랫폼 Huntr에서 AI/ML 오픈소스 플랫폼의 보안취약점발견 - 영향을 받는 플랫폼은 MLflow, ClearML, Hugging Face Transformers로, 다양한 산업에서 사용되는 AI 솔루션
> MLflow: AI 라이프 사이클 전 과정을 관리해주는 MLOps 플랫폼 > ClearML: 다양한 사용자들이 AI 서비스를 사용 및 개발할 수 있도록 해주는 E2E MLOps 플랫폼 > Hugging Face Transformers: Hugging Face社에서 제공하는 AI 개발 라이브러리
1.1 MLOps [1][2]
- ML 시스템 개발, 배포, 유지보수를 효율적이고, 지속할 수 있도록 하는 업무 방식
2. 주요내용
AI/ML 플랫폼
CVE
CVSS
설명
취약한 버전
MLflow
CVE-2023-6831 [3]
10.0
- 공격자가 유효성 검사를 우회하고 서버의 모든 파일을 삭제할 수 있음 [4] > mlflow/utils/uri.py의 verify_path_is_safe 메소드가 URL 인코딩을 올바르게 필터링하지 않아 발생 > URL 인코딩(%2E%2E)을 통해 verify_path_is_safe 메소드를 우회할 수 있음 > 악용에 성공한 공격자는 서버의 모든 파일을 삭제할 수 있음
MLflow 2.9.2 이전 버전
CVE-2024-0520
- mlflow.data 모듈의 결함으로 인해 공격자가 데이터 세트를 조작할 수 있음 [5] > 응답 헤더에 "Content-Disposition" 헤더가 설정된 경우 "filename" 값을 검증 없이 최종 파일 경로를 생성 > 악용에 성공한 공격자는 업로드한 파일을 이용해 RCE를 수행할 수 있음
CVE-2023-6977 [6]
- 공격자가 경로 유효성 검사 우회해 서버의 민감한 파일을 읽을 수 있음 [7] > mlflow/utils/uri.py의 is_local_uri 메서드에서 parsed_uri.hostname() 를 사용해 경로 확인 (hostname == "." or hostname.stratwith(127.0.0.1) or hostname.startswith("localhost")) 및 우회 > 악용에 성공한 공격자는 업로드한 민감 파일에 접근해 내용을 확인할 수 있음
CVE-2023-6709 [8]
- 악성 레시피 구성을 로드하여 원격 명령을 실행할 수 있음 [9] > MLflow는 jinja2 템플릿 엔진을 이용해 사용자가 제어할 수 있는 템플릿 구성 파일을 직접 로드하여 레시피 프레임워크를 구축하도록 함 > mlflow/utils/file_utils.py의 render_and_merge_yaml 메서드는 랜더링 및 합병에 샌드박스를 사용하지 않고 jinja2 라이브러리를 사용 > 악용에 성공한 사용자는 RCE를 수행할 수 있음
ClearML
CVE-2023-6778 [10]
5.4
- 마크다운 편집기에 저장된 XSS 취약점 > 프로젝트 설명 및 보고서 섹션에 모두 사용되는 Markdown Editor 구성 요소에서 입력값을 적절히 삭제하지 않아 발생 [11] > 악성 XSS 페이로드가 삽입되어 사용자 계정이 손상될 수 있음
ClearML Server 1.13.0 이전 버전
Hugging Face Transformers
CVE-2023-7018 [12]
9.6
- 기능에 제한이 없어 악성 파일이 자동으로 로드되어 잠재적으로 원격 코드 실행할 수 있음 [13] > pickle.load를 사용하여 원격 레포에서 vocab.pkl 파일을 아무런 제한 없이 자동으로 로드하기 위해 TransfoXLTokenizer를 구현 > 블랙리스트 및 기타 검사를 우회하여 감염된 모델이 로드되도록 함 > 악성 파일을 로드하여 RCE를 수행할 수 있음
Transformers 4.36 이전 버전
3. 조치사항
- 취약한 버전의 플랫폼 사용자의 경우 최신 패치 적용
> MLflow 2.9.2 / ClearML Server 1.13.0 / Transformers 4.36