사이버보안 연구원들은 MLOps 플랫폼을 표적으로 삼아 악용될 수 있는 20개 이상의 취약점이 발견된 후, 머신 러닝(ML) 소프트웨어 공급망의 보안 위험에 대해 경고하고 있습니다.
이러한 취약점은 내재적이고 구현 기반 결함으로 설명되며, 임의 코드 실행부터 악성 데이터 세트 로딩까지 심각한 결과를 초래할 수 있습니다.
MLOps 플랫폼은 ML 모델 파이프라인을 설계하고 실행할 수 있는 기능을 제공하며, 모델 레지스트리는 ML 모델을 저장하고 버전 학습하는 데 사용되는 저장소 역할을 합니다. 그런 다음 이러한 모델을 애플리케이션에 임베드하거나 다른 클라이언트가 API(일명 모델 서비스)를 사용하여 쿼리할 수 있습니다.
JFrog 연구원들은 자세한 보고서에서 “본질적인 취약점은 대상 기술에서 사용되는 기본 형식과 프로세스로 인해 발생하는 취약점입니다.”라고 밝혔습니다.
내재적 취약성에 대한 몇 가지 예로는 ML 모델이 로딩 시 자동 코드 실행을 지원한다는 사실을 악용하여 공격자가 선택한 코드를 실행하도록 ML 모델을 악용하는 것이 있습니다(예: Pickle 모델 파일).
이러한 동작은 특정 데이터세트 형식과 라이브러리에도 확장되어 자동 코드 실행이 가능해지고, 공개적으로 사용 가능한 데이터세트를 로드하는 것만으로도 맬웨어 공격에 취약해질 수 있습니다.
내재적 취약성의 또 다른 사례는 JupyterLab(이전 명칭 Jupyter Notebook)과 관련이 있습니다. JupyterLab은 사용자가 코드 블록(또는 셀)을 실행하고 해당 결과를 볼 수 있는 웹 기반 대화형 컴퓨팅 환경입니다.
“많은 사람이 모르는 고유한 문제는 Jupyter에서 코드 블록을 실행할 때 HTML 출력을 처리하는 것입니다.” 연구원들은 지적했습니다. “Python 코드의 출력은 HTML과 (JavaScript)를 방출할 수 있으며, 이는 브라우저에서 기꺼이 렌더링됩니다.”
여기서 문제는 JavaScript 결과가 실행될 때 부모 웹 애플리케이션에서 샌드박스화되지 않고, 부모 웹 애플리케이션이 자동으로 임의의 Python 코드를 실행할 수 있다는 것입니다.
즉, 공격자는 현재 JupyterLab 노트북에 새 셀을 추가하고 Python 코드를 삽입한 다음 실행하는 악성 JavaScript 코드를 출력할 수 있습니다. 이는 특히 크로스 사이트 스크립팅(XSS) 취약성을 악용하는 경우에 해당합니다.
이를 위해 JFrog는 신뢰할 수 없는 레시피를 실행할 때 충분한 정리가 부족하여 JupyterLab에서 클라이언트 측 코드가 실행되는 MLFlow의 XSS 결함(CVE-2024-27132, CVSS 점수: 7.5)을 발견했다고 밝혔습니다.
연구원들은 “이 연구를 통해 얻은 가장 중요한 결과 중 하나는 데이터 과학자가 Jupyter Notebook과 함께 이러한 ML 라이브러리를 사용할 수 있으므로 ML 라이브러리의 모든 XSS 취약성을 잠재적인 임의 코드 실행으로 취급해야 한다는 것입니다.”라고 말했습니다.
두 번째 결함은 MLOps 플랫폼의 인증 부족과 같은 구현상의 취약점과 관련이 있으며, 네트워크 액세스 권한이 있는 위협 행위자가 ML 파이프라인 기능을 남용하여 코드 실행 기능을 얻을 가능성이 있습니다.
이러한 위협은 이론적인 것이 아니며, 재정적 동기를 가진 적대 세력이 이러한 허점을 악용하여 암호화폐 채굴자를 배포하는 경우가 있습니다. 패치가 적용되지 않은 Anyscale Ray(CVE-2023-48022, CVSS 점수: 9.8)의 사례에서 볼 수 있듯이요.
두 번째 유형의 구현 취약점은 Seldon Core를 대상으로 하는 컨테이너 이스케이프입니다. 공격자는 이를 통해 코드 실행을 넘어 클라우드 환경 전반을 수평적으로 이동하고 악성 모델을 추론 서버에 업로드하여 다른 사용자의 모델과 데이터 세트에 액세스할 수 있습니다.
이런 취약점을 연쇄적으로 공격하면 조직 내부에 침투해 확산되는 무기가 될 수 있을 뿐만 아니라 서버를 손상시킬 수도 있습니다.
“모델 제공을 허용하는 플랫폼을 배포하는 경우, 새로운 모델을 제공할 수 있는 사람은 누구나 실제로 해당 서버에서 임의의 코드를 실행할 수 있다는 사실을 알아야 합니다.” 연구자들은 말했습니다. “모델을 실행하는 환경이 완전히 격리되고 컨테이너 이스케이프에 대비하여 강화되었는지 확인하세요.”
Palo Alto Networks Unit 42에서는 오픈소스 LangChain 생성 AI 프레임워크의 현재 패치된 두 가지 취약점(CVE-2023-46229 및 CVE-2023-44467)을 자세히 설명하면서 이 취약점을 악용한 공격자가 임의 코드를 실행하고 민감한 데이터에 접근할 수 있다고 밝혔습니다.
지난달 Trail of Bits는 검색 증강 생성(RAG) 오픈소스 챗봇 애플리케이션인 Ask Astro에서 챗봇 출력 오염, 부정확한 문서 수집, 잠재적인 서비스 거부(DoS)로 이어질 수 있는 4가지 문제점을 공개했습니다.
인공 지능 기반 애플리케이션의 보안 문제가 드러나는 가운데, 대규모 언어 모델(LLM)을 속여 취약한 코드를 생성하도록 하는 궁극적인 목표로 학습 데이터 세트를 오염시키는 기술도 고안되고 있습니다.
“최근의 공격은 코드의 탐지 가능하거나 관련 없는 부분(예: 주석)에 악성 페이로드를 내장했지만, CodeBreaker는 정교한 페이로드 변환(기능에 영향을 주지 않고)을 위해 LLM(예: GPT-4)을 활용하여 미세 조정을 위한 오염된 데이터와 생성된 코드 모두 강력한 취약성 감지를 회피할 수 있도록 보장합니다.” 코네티컷 대학의 학자 그룹이 밝혔습니다.