컨텐츠로 건너뛰기
검색
테크42 언론사 이미지

“AI가 생성한 코드 SW 공급망에 재난”···수상한 놈 vs 안전한 놈

테크42 이재구 기자
원문보기
서울흐림 / 29.9 °
ⓒTech42

ⓒTech42


ⓒTech42

ⓒTech42


“AI가 생성한 코드는 소프트웨어 공급망에 재앙이 될 수 있다. 대규모언어모델(LLM)로 생성된 코드는 공급망 공격에 훨씬 더 취약하게 만들 수 있기 때문이다.”

아스테크니카는 지난달 29일(현지시각) AI가 생성한 코드의 공급망에 대한 위험성을 이같이 요약해 보도했다.

보도는 오는 8월 발표될 미국 텍사스대학교의 최신 연구결과를 인용, 인공지능(AI)이 생성한 컴퓨터 코드는 무엇보다도 존재하지 않는 타사 라이브러리에 대한 참조로 가득 차 있어, 데이터를 훔치고 백도어를 설치하고 기타 악의적인 행위를 수행할 수 있는 악성 패키지로 합법적인 프로그램을 감염시키는 공급망 공격에 절호의 기회를 제공한다고 전했다. 연구진은 이를 패키지 환각(package hallucination)이라고 명명했다.,

이 연구에서는 가장 널리 사용되는 대규모 언어 모델(LLM) 16개를 사용해 57만6000개의 코드 샘플을 생성했는데, 포함된 패키지 종속성(dependencies) 중 44만개가 ‘환각’, 즉 ‘존재하지 않는 것’으로 나타났다.

연구 결과 오픈소스 모델들이 가장 많이 환각을 보였으며, 종속성의 21%가 존재하지 않는 라이브러리에 연결됐다. ‘종속성’은 별도의 코드가 제대로 작동하는 데 필요한 필수적인 코드 구성 요소다. 종속성은 개발자가 코드를 다시 작성하는 번거로움을 덜어주며 현대 소프트웨어 공급망의 필수적인 부분이다.

패키지 환각의 재발

이러한 존재하지 않는 종속성은 소위 종속성 혼동 공격(dependency confusion attacks)을 악화시켜 소프트웨어(SW) 공급망에 위협이 된다.


이 공격은 소프트웨어 패키지가 잘못된 구성 요소 종속성에 접근하도록 유도하는 방식으로 작동한다. 예를 들어 악성 패키지를 게시하고 정상 패키지와 동일한 이름으로 최신 버전 스탬프를 부여하는 것이다.

패키지에 의존하는 SW는 경우에 따라 악성 패키지가 합법적 패키지보다 다 더 최신 버전으로 보이기 때문에 악성 버전을 선택한다.

‘패키지 혼동(package confusion)’으로도 불리는 이 공격은 2021년 애플, 마이크로소프트(MS), 테슬라 등이 포함된 세계 최대 기업들의 네트워크에서 위조 코드를 실행하는 개념 증명 익스플로잇(PoC exploit;보안 취약점이 어떻게 악용될 수 있는지를 보여주는 코드)을 통해 처음 시연됐다.


이는 SW 공급망 공격에 사용되는 기법 중 하나로서 SW의 근원을 감염시켜 모든 하위 사용자를 감염시키는 것을 목표로 한다.

텍사스 대학교 샌안토니오 캠퍼스 박사 과정생이자 수석 연구원인 조지프 스프랙클렌은 “공격자가 환각된 이름으로 악성 코드가 포함된 패키지를 게시하면, 의심하지 않는 사용자에게 해당 악성 코드명을 제안하는 모델에 의존한다. 사용자가 LLM의 출력을 신뢰하고 신중하게 확인하지 않고 패키지를 설치하면, 악성 패키지에 숨겨진 공격자의 페이로드가 사용자 시스템에서 실행된다”고 말했다.

오랫동안 LLM 괴롭혀 온 AI 환각···파이썬, 자바스크립트 불문

AI에서 환각은 LLM이 사실과 다르거나, 무의미하거나, 할당된 작업과 전혀 관련이 없는 결과물을 내놓을 때 발생한다. 환각은 LLM의 유용성과 신뢰성을 저하시키고 예측 및 해결이 매우 어려운 것으로 입증됨에 따라 오랫동안 LLM을 괴롭혀 왔다.


연구진은 2025 유즈닉스(USENIX) 보안 심포지엄(8.13~15,시애틀)에서 발표될 예정인 이 논문에서 이 현상을 ‘패키지 환각(package hallucination)’이라고 명명했다.

연구진은 이 연구를 위해 파이썬 프로그래밍 언어에서 16번, 자바스크립트에서 14번, 모두 합쳐 30번의 테스트를 실행해 테스트 당 1만 9200개의 코드 샘플을 생성해 총 57만6000개의 코드 샘플을 생성했다.

이 샘플에 포함된 223만 개의 패키지 참조(레퍼런스) 중 44만 445개(19.7%)는 존재하지 않는 패키지를 가리켰다. 이 44만 445개의 패키지 환각 중 20만 5474개는 고유한 패키지 이름을 가지고 있었다.

패키지 환각이 공급망 공격에 잠재적으로 유용한 이유 중 하나는 패키지 환각의 43%가 10번의 쿼리에 걸쳐 반복됐다는 것이다.

연구진은 “또한, 환각 패키지는 10번의 반복 작업에서 58%의 확률로 두 번 이상 반복되는데, 이는 대부분의 환각이 단순한 무작위 오류가 아니라 여러 번의 반복 작업에 걸쳐 지속되는 반복 가능한 현상임을 보여준다. 이런 지속적인 환각현상은 패키지 취약점을 악용해 환각 공격 벡터를 더욱 실행 가능한 위협으로 만들려는 악의적인 공격자들에게 더욱 가치있다는 점에서 중요하다”고 말했다. .

즉, 많은 패키지 환각은 무작위적인 일회성 오류가 아니다. 오히려 존재하지 않는 패키지의 특정 이름이 반복적으로 반복된다. 공격자들은 반복적으로 환각되는 존재하지 않는 패키지를 식별해 이러한 패턴을 포착할 수 있다. 그러면 이들은 해당 이름을 사용해 악성코드를 게시하고 많은 개발자가 접근하기를 기다린다.

이 연구는 패키지 환각을 가장 많이 유발하는 LLM과 프로그래밍 언어 간의 차이를 발견했다.

코드라마(CodeLlama)와 딥시크 같은 오픈소스 LLM에서 발생한 패키지 환각의 평균 비율은 약 22%였으며, 이는 상용 모델의 5%를 약간 넘는 수치다.

파이썬으로 작성된 코드 환각은 평균 약 16%로서 자바스크립트로 작성된 코드의 21여%보다 적었다.

상용 모델이 오픈 소스 모델보다 환각률 적은 이유는?

연구책임자는 스프래클랜은 이같은 차이(상용 모델이 오픈 소스 모델보다 환각률 적은 점)를 보이는 이유에 대해 다음과 같이 아스테크니카에 말했다.

“대규모 언어 모델(LLM)은 매우 복잡한 시스템이기 때문에 인과관계를 직접 추적하기가 어렵기 때문에 어려운 질문이다. 하지만 상용 모델(예: 챗GPT 시리즈)과 오픈 소스 모델 간에 상당한 차이가 있는 것을 관찰했는데, 이는 상용 변형의 매개변수 수가 훨씬 더 많기 때문인 것이 거의 확실하다. 대부분의 추정에 따르면 챗GPT 모델은 우리가 테스트해 본 오픈 소스 모델보다 최소 10배 더 많은 매개변수를 가지고 있다. 물론 정확한 아키텍처와 훈련 세부 사항은 여전히 독점적이다. 흥미롭게도 오픈 소스 모델 중에서는 모델 크기와 환각률 간의 명확한 연관성을 발견하지 못했는데 이는 모두 상대적으로 더 작은 매개변수 범위 내에서 작동하기 때문일 가능성이 높다.

모델 크기 외에도 학습 데이터, 미세 조정, 명령어 학습 및 안전 조정의 차이가 모두 패키지 환각률에 영향을 미쳤을 가능성이 높다. 이러한 프로세스들은 모델 사용성을 개선하고 특정 유형의 오류를 줄이기 위한 것이지만 패키지 환각과 같은 현상에 예기치 않은 다운스트림에 대한 영향을 미칠 수 있다.

마찬가지로 파이썬에 비해 자바스크립트 패키지의 환각률이 높다는 점도 확실하게 설명하기 어렵다. 우리는 자바스크립트가 파이썬보다 생태계에 약 10배 더 많은 패키지를 가지고 있으며, 더 복잡한 네임스페이스를 가지고 있다는 사실에서 비롯된 것이라고 추측한다.

훨씬 더 크고 복잡한 패키지 환경에서는 모델들이 특정 패키지 이름을 정확하게 기억하기가 어려워져 내부 예측의 불확실성이 커지고 궁극적으로 환각된 패키지의 비율이 높아진다.”

개발자들, AI이용시 더 주의해야

이 연구 결과는 LLM 출력이 고유의 신뢰성이 없음을 보여주는 가장 최근의 결과다.

이 연구 결과는 케빈 스콧 MS 최고기술책임자(CTO)가 “5년 이내에 코드의 95%가 AI로 생성될 것”이라고 예측한 만큼, AI를 이용하는 개발자들은 이 메시지에 주의할 필요가 있다는 점을 환기시키고 있다.

이재구 기자

저작권자 © Tech42 - Tech Journalism by AI 테크42 무단전재 및 재배포 금지