1. 개요
- 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
4. 참고
[1] https://www.databricks.com/glossary/mlops
[2] https://jaemunbro.medium.com/mlops%EA%B0%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B3%A0-84f68e4690be
[3] https://nvd.nist.gov/vuln/detail/CVE-2023-6831
[4] https://huntr.com/bounties/0acdd745-0167-4912-9d5c-02035fe5b314/
[5] https://huntr.com/bounties/93e470d7-b6f0-409b-af63-49d3e2a26dbc/
[6] https://nvd.nist.gov/vuln/detail/CVE-2023-6977
[7] https://huntr.com/bounties/fe53bf71-3687-4711-90df-c26172880aaf/
[8] https://nvd.nist.gov/vuln/detail/CVE-2023-6709
[9] https://huntr.com/bounties/9e4cc07b-6fff-421b-89bd-9445ef61d34d/
[10] https://nvd.nist.gov/vuln/detail/CVE-2023-6778
[11] https://huntr.com/bounties/5f3fffac-0358-48e6-a500-81bac13e0e2b/
[12] https://nvd.nist.gov/vuln/detail/CVE-2023-7018
[13] https://huntr.com/bounties/e1a3e548-e53a-48df-b708-9ee62140963c/