테크레시피

생성형AI 환각으로 인한 가상 패키지 악용 위험성

GPT-4나 클로드 3 같은 대규모 언어 모델은 인간이 쓴 것처럼 자연스러운 문장을 생성할 수 있지만 때론 사실과 다른 정보를 생성하는 환각 현상을 일으킨다. 보안 기업 라소시큐리티(Lasso Security) 연구원은 환각으로 인해 존재하지 않는 패키지를 포함한 소스 코드가 생성되어 실제로 사용되고 있다고 지적했다.

대규모 언어 모델은 문장을 생성할 뿐 아니라 프로그램 코드를 작성할 수도 있다. 프로그래밍 시 코드를 정리하기 위해 함수나 클래스를 정의한 모듈을 모은 패키지가 사용되는데 대규모 언어 모델이 제시하는 코드에도 공개된 패키지 설치가 지정되는 경우가 많다.

하지만 연구팀에 따르면 대규모 언어 모델이 제시하는 코드에 지정되는 패키지에는 실제로 존재하지 않는 가상 패키지가 포함되어 있는 경우가 있다고 한다. 연구팀은 파이썬, Node.js, 루비, .NET, Go 5개 언어로 프로그래밍 관련 수천 개 질문을 준비했고 이 가운데 무작위로 20개를 선택해 챗GPT-4, 챗GPT-3.5 터보, 제미나이 프로, 코랄(Coral)에 각각 100회씩 질문해 가상 패키지명 출현율과 반복율을 조사했다. 챗GPT-4의 경우 답변 중 24.2%에서 환각으로 인한 가상 패키지명이 나타났고 이 가운데 19.6%는 여러 번 코드에 사용됐다.

챗GPT-3.5 터보는 답변 22.2%에서 환상으로 인한 가상 패키지명이 보였고 반복율은 13.6%였다. 제미나이 프로의 경우 무려 답변 64.5%에서 환상이 확인됐으며 가상 패키지 반복율은 14%였다. 코랄은 답변 29.1%에서 환각이 확인됐고 반복율은 24.2%였다.

5개 언어 중에선 .NET와 Go에서 가상 패키지 출현율이 높았다고 한다. 다만 .NET와 Go는 기술적 제약으로 인해 공격자가 특정 경로나 이름을 사용하기 어려워 환각을 활용한 공격은 어렵다고 설명하고 있다. 반면 파이썬이나 Node.js는 가상 패키지명을 자유롭게 사용할 수 있어 공격이 용이하다고 한다.

따라서 연구팀은 이 가상 패키지를 활용한 공격이 가능한지 실험을 해봤다. 알리바바 그래프트랜슬레이터(GraphTranslator)에는 huggingface-cli를 설치하는 pip 명령어가 포함되어 있다. huggingface-cli는 pip install-U huggingface_hub[cli] 코드로 정상적으로 설치할 수 있지만 그래프트랜슬레이터 저장소에서는 2024년 2월까지 pip install huggingface-cli라는 명령어로 설치를 권장했다. 이 PyPI(Python Package Index)를 통한 방식으론 정상 huggingface-cli를 설치할 수 없다. 사실 이 명령어(pip install huggingface-cli)는 위 실험에서 챗GPT 답변에 나왔던 것이었다.

따라서 연구팀은 PyPI를 통해 설치할 수 있는 huggingface-cli라는 빈 패키지를 준비하자 불과 3개월 만에 1만 5,000회 다운로드가 확인됐다고 한다. 연구팀은 huggingface-cli 문제를 알리바바에 보고했고 지금은 수정됐다고 한다. 이에 따라 연구팀은 악의적인 공격자가 AI 환상으로 만들어진 가상 패키지에 멀웨어 코드를 포함시킬 가능성을 지적했다. 연구팀에 따르면 실제로 환상에 의한 가상 패키지를 활용한 공격 사례는 확인되지 않았지만 이 공격 방식은 흔적이 남기 어렵고 발견하기 힘들다고 한다.

연구팀은 대규모 언어 모델에 의존할 경우 반드시 철저한 상호 검증을 실시해 대규모 언어 모델 답변이 정확하고 신뢰할 수 있는지 확인하라고 주의를 당부했다. 또 오픈소스 소프트웨어를 사용할 때 주의를 기울이고 모르는 패키지를 만나면 해당 패키지 저장소에 접속해 커뮤니티 규모, 유지관리 기록, 알려진 취약점 등을 평가하라며 릴리스 날짜도 확인해 이상한 점이 없는지 주의하라며 패키지를 운영 환경에 통합하기 전 포괄적인 보안 스캔 수행 경고했다. 관련 내용은 이곳에서 확인할 수 있다.

추천기사