AI 에이전트가 해킹당할 때까지 기다려 보세요...

MMaximilian Schwarzmüller
Computing/SoftwareBusiness NewsInternet Technology

Transcript

00:00:00매우 파괴적인 공급망 공격이 시작된 지
00:00:06몇 시간 후에 이 영상을 녹화하고 있습니다. 이 공격은 수많은 NPM과 파이썬 패키지로 확산되었습니다.
00:00:13현재 녹화 시점에서는 이 상황이 언제 어디서 끝날지 아직 불분명합니다.
00:00:19제 유튜브 채널에 이 특정 공급망 공격을 깊이 있게 다룬 별도의 영상을 올렸습니다.
00:00:25공격 방식이 상당히 정교했기 때문이죠. 그 영상에서 모든 세부 사항을 자세히 설명했는데
00:00:30내용이 꽤 흥미롭습니다. 하지만 여기서는 우리가 살고 있는 이 공급망 공격과 AI 시대의
00:00:38보안 및 AI에 관해 이야기해 보려 합니다. 상황은 분명 더 악화될 것이기 때문입니다.
00:00:45아직 많은 분이 그 위험성을 제대로 인지하지 못하고 있는 것 같아 우려됩니다. 개발자로서,
00:00:54그리고 기술과 AI의 사용자로서 우리가 해야 할 일이 더 많습니다. 솔직히 말씀드리면,
00:01:01개발자가 아니더라도 우리 모두에게 영향을 미치는 문제입니다. 시청자 대부분이 개발자라는 건 알지만,
00:01:07이제 명확히 말씀드리겠지만, 이건 단순히 코드 작성이나 여러분이 아는 공급망 공격에만
00:01:13국한된 이야기가 아닙니다. 우선 기본부터 시작하죠. 공급망 공격이란 무엇일까요?
00:01:20소프트웨어 개발 맥락에서 공급망 공격은 여러분이 사용하는 의존성이
00:01:26해킹되었음을 의미합니다. 이것이 공급망 공격의 핵심입니다. 해킹되었다는 것은
00:01:35물론 온갖 의미를 담고 있습니다. 전형적으로 나타나는 현상은 해킹된 패키지에
00:01:41자격 증명과 토큰을 탈취하는 악성 코드가 포함되는 것입니다. 하드 드라이브를 스캔해서
00:01:49.env 파일이나 AWS 자격 증명 같은 비밀 정보를 찾아내는 식이죠. 그런 다음
00:01:56탈취한 정보로 계정에 접속하고 스스로를 확산시킵니다. 즉, 다른 패키지들까지 감염시키는 거죠.
00:02:04여러분이 오픈 소스 패키지 관리자이거나, 혹은 클로즈드 소스라 해도 무언가를 작업 중이고
00:02:11다른 사람들이 그 패키지나 도구를 사용하거나 의존하고 있다면, 여러분의 컴퓨터를 해킹해
00:02:19배포 중인 패키지나 도구를 오염시키는 것은 공격자에게 매우 매력적인 일입니다. 왜냐하면
00:02:26그렇게 하면 더 많은 사람에게 영향을 줄 수 있기 때문입니다. 이번 Tanstack 패키지로 시작된
00:02:32사례를 포함해 우리가 보는 모든 공급망 공격은 다른 패키지로 퍼져나가는 웜과 같습니다.
00:02:38점점 더 많은 패키지를 감염시키고, 결국 해당 패키지가 설치되고 사용되는
00:02:44사용자의 컴퓨터까지 영향을 미칩니다. 자신을 보호하기 위해 할 수 있는 몇 가지 방법이 있는데,
00:02:51제 다른 채널인 Akatamine 채널에 별도의 영상을 만들어 두었습니다. 출시된 지
00:02:56적어도 3일 이상 지난 패키지 버전만 설치하도록 하거나,
00:03:02개발 컨테이너나 가상 머신에서 코드를 실행하는 것과 같은 방법들이죠.
00:03:08이런 조치들은 반드시 취해야 합니다. 또한 비밀 정보를 시스템에 평문으로 저장해서도 안 됩니다.
00:03:15대신 Infisical이나 Doppler 같은 서비스를 사용해 비밀 정보를 클라우드나
00:03:22암호화된 형태로 저장하세요. 그래야 공격자가 시스템을 스캔하더라도
00:03:28평문 정보를 볼 수 없습니다. 지금 당장 실천해야 할 중요한 일들입니다.
00:03:37공급망 공격이 점점 늘어나고 있기 때문인데, 왜 그런 걸까요?
00:03:42수년 전에는 이런 공격을 할 수 없었기 때문은 아닙니다. 과거에도
00:03:49가능했고 실제 발생하기도 했지만, 그 빈도가 비약적으로 증가했습니다.
00:03:56그리고 여기에는 AI가 큰 이유를 차지합니다. 이제 AI의 역할을 살펴보죠. AI는
00:04:06이런 공격을 수행하는 것을 훨씬 쉽게 만들기 때문입니다. 공격자라면
00:04:14AI를 사용해 타겟으로 삼은 온갖 패키지 저장소들을 분석할 수 있습니다.
00:04:22패키지가 어떻게 빌드되고 배포되는지 파악하기 위해서 말이죠. 예를 들어,
00:04:30최근 공급망 공격을 유발한 Tanstack 사례의 경우, 관리자들은 NPM의
00:04:38신뢰할 수 있는 퍼블리싱 프로세스를 활용해 이론적으로 안전한 방식을 사용했습니다. 이에 대한
00:04:45자세한 분석은 별도 영상에 담았지만, 그들은 특정 GitHub Actions
00:04:51이벤트 트리거를 완벽하게 보호되지 않은 방식으로 사용했습니다. 이것이 공격자에게
00:05:00캐시 포이즈닝을 통해 신뢰할 수 없는 환경에서 신뢰할 수 있는 환경으로 악성 코드를
00:05:07심을 기회를 주었고, 공격이 시작되었습니다. 자세한 내용은 다른 영상에 있습니다.
00:05:15물론 AI는 저장소와 GitHub Actions 워크플로나
00:05:22기타 CI/CD 워크플로를 분석하는 일을 훨씬 쉽게 만듭니다. 모든 워크플로 스크립트와 코드를 대량으로 분석해서
00:05:30보안 취약점을 찾아낼 수 있죠. 관리자들도 AI를 이용해 자신의 저장소를 스캔하고
00:05:38잠재적 공격 벡터를 찾을 수 있겠지만, 공격자가 태생적으로
00:05:45유리한 위치에 있습니다. 모든 것을 시도하고 찾아볼 수 있는 반면,
00:05:52관리자는 모든 것을 예측해야 하기 때문이죠. AI가 도움을 줄 순 있지만 여전히 완벽하진 않습니다.
00:05:58공격자가 유리하며 AI는 그 과정을 단순화했습니다. 또한 AI는
00:06:04악성 코드를 작성하는 과정도 간소화합니다. 모든 종류의 코드 작성을 쉽게 만들죠.
00:06:12제 다른 영상을 보셨거나 팟캐스트를 들으셨다면 아시겠지만, 저는
00:06:20코드를 직접 살피고 리뷰해야 한다고 강조해 왔습니다. AI에 모든 걸 맡겨선 안 된다고요.
00:06:27물론 AI를 생산성 향상 도구로 활용해야 한다는 점은 명확합니다. 우리 모두
00:06:33적절한 AI 사용량을 파악해 가는 과정에 있죠. 어떤 이들은 100% 의존하며
00:06:40코드를 쳐다보지도 말라고 하지만 저는 그렇게 생각하지 않습니다. 어찌 됐든
00:06:46AI는 엄청난 양의 코드를 쏟아내는 걸 도와줍니다. 만약 악성 코드를 만든다면,
00:06:53공격자에게 중요한 것은 목적을 달성하면서도
00:06:59탐지되기 어렵게 만드는 것입니다. 코드가 아름답거나 특정 모범 사례를
00:07:06따르는지는 중요하지 않죠. 공격에 성공하는 것 자체가 그들의 모범 사례니까요. AI는
00:07:13악성 코드를 작성하고 패키지를 공격할 기발한 아이디어를 내는 데 도움을 줍니다.
00:07:19하지만 과정이 쉬워진 건 이야기의 한 축일 뿐입니다. 다른 아주 중요한 면은
00:07:26그 어느 때보다 코드가 많아졌다는 것입니다. 즉, 공격 대상이 예전보다 훨씬 많아졌다는 뜻이죠.
00:07:35GitHub의 안정성 문제나 다운 타임에 관한 블로그 포스트나 소식을 접하셨을지도 모르겠네요.
00:07:43그 원인은 AI 덕분에 코드 생성이 쉬워지면서 그 어느 때보다
00:07:49많은 양의 코드가 GitHub로 푸시되고 있기 때문입니다. 전보다 훨씬 많은
00:07:55사람들이 소프트웨어를 만들고 있는데, 여기엔 자신이 짠 코드가 어떤 역할을 하는지
00:08:02전혀 모르는 사람들도 포함됩니다. '와이프 코딩'이 유행이고 분명 유용하긴 합니다.
00:08:11가령 PDF 파일 5개를 하나로 합치고 싶을 때, AI 에이전트에게 시키면
00:08:18알아서 코드를 짜서 해결해 주겠죠. 저는 그 코드가 어떻게 생겼는지 신경 쓰지 않습니다. 일회성 작업이니까요.
00:08:24하지만 그 코드를 제 시스템에서 실행한다면, 에이전트가 PDF 병합을 위해 설치한
00:08:32패키지가 공급망 공격에 감염되어 있을 수도 있습니다. 저는 그냥 PDF를 합치는 데만
00:08:37관심이 있었기 때문에 어떤 패키지가 쓰였는지조차 모를 수 있죠.
00:08:43소프트웨어 개발뿐 아니라 일회성 작업을 위해서도 그 어느 때보다 많은 코드가 작성되면서,
00:08:49패키지가 설치되는 상황이 빈번해졌습니다. 이는 공격자 입장에서
00:08:56공급망 공격을 수행하기에 더없이 매력적인 환경이 조성된 셈입니다.
00:09:01소프트웨어 보안이나 사이버 보안에 대해 전혀 모르는 타겟이 널려 있으니까요.
00:09:06솔직히 우리 개발자들도 마찬가지입니다. 특정 위험을 이론적으로는 알지만,
00:09:14일 처리가 너무 편리하다 보니 크게 신경 쓰지 않곤 하죠. 이제는 다시 생각해야 합니다.
00:09:22생각을 고쳐야 합니다. 우리 컴퓨터를 보호하고 반드시 안전한 환경에서
00:09:31개발해야 합니다. 가상 머신이나 개발 컨테이너를 사용하고, 자격 증명을 방치하지 마세요.
00:09:37우리 대부분이 사용하는 AI 에이전트를 쓸 때도 각별히 주의해야 합니다.
00:09:44위험에 처할 수 있는 두 가지 경로가 있기 때문이죠. 이에 대해 자세히 살펴보겠습니다.
00:09:53AI 에이전트가 문제가 되는 첫 번째 이유는 앞서 언급한 것과 같습니다.
00:10:00AI 에이전트를 코드 작성과 직접 관련 없는 일에 쓰거나, 혹은
00:10:08프로그램 개발을 돕는 용도로 쓸 때, 우리는 그들이 하는 모든 행동을
00:10:17일일이 확인하지 못합니다. 여러분이 'Claude Code'나 그와 비슷한 도구를 사용한다고 가정해 보죠.
00:10:23저는 이런 도구들을 반대하지 않습니다. 실제로 관련 강의도 하고 있죠. 매우 유용하니까요.
00:10:30하지만 그냥 실행시켜 두고 “이 기능을 구현해 줘”라고만 말한 뒤
00:10:35세부 사항을 신경 쓰지 않는다면, 에이전트가 어떤 패키지를 설치하는지
00:10:41조차 인지하지 못할 수 있습니다. 그렇게 패키지가 설치되고 해킹되어 영향을 받을 수 있는 거죠.
00:10:49이를 방지하는 한 가지 방법은 사용하는 패키지 수를 제한하는 것입니다.
00:10:54하지만 에이전트를 쓰다 보면 통제권을 잃을 수 있습니다. 여러분이라면 절대
00:11:00설치하지 않았을 패키지를 에이전트가 깔 수도 있으니까요. 이것이 첫 번째 위험이고, 덜 명확한 두 번째 위험이 있습니다.
00:11:07AI 에이전트 자체가 매우 매력적인 공격 대상이라는 점입니다. 무슨 뜻일까요?
00:11:15공급망 공격은 웜처럼 퍼져 온갖 종류의 패키지에 영향을 미친다고 말씀드렸습니다.
00:11:23공격자 입장에서는 'Claude Code'나 'Cody', 혹은 'Py-coding agent', 'Open code' 등
00:11:32그 어떤 AI 에이전트든 감염시키는 것이 매우 흥미로운 일일 겁니다. 왜냐하면,
00:11:42AI 에이전트 패키지나 저장소, 코드베이스를 침투하도록 최적화된 악성 코드가 있다면,
00:11:52그 코드에 '프롬프트 주입(Prompt Injection)' 요소를 포함할 수 있기 때문입니다.
00:12:00명시적으로 이런 에이전트들을 노려 코드를 수정함으로써, 단순히 데이터를 빼내는 것 이상의
00:12:08일을 시킬 수 있습니다. 즉, 주입된 악성 코드가 단지 데이터 유출만을 위한 것이 아니라,
00:12:15AI 에이전트의 코드를 살짝 비틀어 특정한 지시사항을 따르게 만드는 것이죠.
00:12:22그러면 여러분의 컴퓨터에서 사용 중인 에이전트가 여러분이 원치 않는 일을 할 수도 있습니다.
00:12:28'Claude Code'에 비밀 시스템 프롬프트가 있다고 상상해 보세요. 원래는 Anthropic 직원이
00:12:34설정해야 하지만, 이제는 악성 코드가 그 프롬프트를 설정해
00:12:39여러분의 요청을 무시하고 수행하는 척만 하거나, 혹은 요청대로 수행하되
00:12:46추가로 시스템의 비밀 정보를 스캔하라고 명령할 수 있습니다.
00:12:52스캔용 프로그램을 몰래 작성하고, 그 데이터를 원격 서버로
00:13:00전송하게 할 수도 있죠. 가능성은 무궁무진합니다. 갑자기 여러분의 시스템에
00:13:06트로이 목마가 생긴 것과 같습니다. AI 에이전트가 여러분의 시스템에서 멋대로 행동하게 되는데,
00:13:12이건 AI 자체가 악하거나 모델이 잘못되어서가 아닙니다.
00:13:20에이전트 코드 자체나 시스템 프롬프트가 해킹되고 오염되었기 때문입니다.
00:13:28이는 결코 비현실적인 시나리오가 아니며, 언젠가는 분명히 일어날 일입니다.
00:13:34AI 에이전트는 너무나도 매력적인 타겟이기 때문이죠. 분명히 발생할 것이고,
00:13:41우리는 새로운 수준의 공급망 공격을 목격하게 될 것입니다. 단순히 패키지들을 감염시키고
00:13:49자격 증명을 탈취하는 것만으로도 이미 끔찍하고 빈도도 늘고 있지만,
00:13:54악성 코드 때문에 AI 에이전트가 변질되는 사례도 보게 될 것입니다. 시간 문제일 뿐입니다.
00:14:01보시다시피 문제는 여러 층위로 얽혀 있습니다. 이것이 우리가 처한 새로운 현실입니다.
00:14:08인터넷 초기 시절처럼 무언가를 알아가는 과정에서 겪는 혼란 같은 것이죠.
00:14:14어떻게 보안을 강화하고 안전하게 작업을 수행할지 답을 찾아야 합니다.
00:14:21소프트웨어 개발뿐 아니라 AI 에이전트 실행 시에도 적용되는 명백한 해결책은
00:14:26일이 잘못되어도 괜찮은 환경에서 수행하는 것입니다. 중요한 자격 증명이나
00:14:32비밀 정보, 중요한 데이터가 저장된 환경에서 실행해선 안 됩니다.
00:14:37메인 컴퓨터에서 하지 마세요. 에이전트를 실행하거나 소프트웨어를 만들 때는
00:14:42격리된 가상 머신이나 원격 머신 등 피해 범위가 제한된 곳에서 하세요.
00:14:49거듭 말씀드리지만, 문제가 터지는 건 시간 문제입니다. 이를 깨닫는 것이
00:14:56가장 중요한 첫 걸음입니다. 상황은 급변하고 있으며 보안은 거대한 이슈가 되었고,
00:15:03AI가 가속화되면서 더욱 큰 문제가 될 것입니다. AI 모델이 똑똑해지고
00:15:11실행 중인 도구와 결합되면서 수많은 새로운 능력을 도입함과 동시에
00:15:17엄청난 편리함을 제공하기 때문입니다. 편리함은 언제나 위험을 동반합니다.
00:15:23우리를 나태하게 만들고 중요한 걸 간과하게 하죠. AI는 어디에나 있습니다.
00:15:30사이버 보안을 모르는 수많은 이들이 사용 중이고, 보안을 잘 아는 이들조차
00:15:34큰 위험에 노출되어 있습니다. 우리는 매우 험난한 여정을 앞두고 있으며,
00:15:40어디서 어떻게 에이전트를 실행하고 코드를 작업할지 다시 생각하고 주의해야 합니다.
00:15:49철저히 대비해야 합니다.

Key Takeaway

AI가 가속화하는 공급망 공격으로부터 시스템을 보호하려면 모든 AI 에이전트 작업과 코드 실행을 격리된 가상 머신(VM)이나 컨테이너 환경에서 수행해야 한다.

Highlights

  • NPM 및 파이썬 패키지로 확산된 공급망 공격은 탈취한 자격 증명으로 다른 패키지를 감염시키는 웜 방식을 취한다.

  • Tanstack 사례에서는 GitHub Actions의 특정 이벤트 트리거 취약점을 악용해 캐시 포이즈닝으로 악성 코드를 주입했다.

  • Infisical이나 Doppler와 같은 보안 서비스를 활용하면 시스템에 평문으로 자격 증명을 저장하는 위험을 방지한다.

  • AI 에이전트가 생성한 코드를 로컬 환경에서 그대로 실행할 경우 사용자는 어떤 외부 패키지가 설치되는지조차 인지하지 못한다.

  • 공격자는 AI 에이전트의 시스템 프롬프트를 변질시켜 사용자 몰래 시스템 정보를 스캔하고 원격 서버로 전송하도록 조종할 수 있다.

  • 출시된 지 최소 3일이 지난 패키지 버전만 설치하는 방식은 즉각적인 공급망 공격 피해를 줄이는 효과적인 예방법이다.

Timeline

공급망 공격의 메커니즘과 확산 방식

  • 공급망 공격은 개발자가 의존하는 외부 패키지를 해킹하여 시스템 전체를 오염시킨다.
  • 해킹된 패키지는 하드 드라이브의 .env 파일이나 AWS 자격 증명 같은 기밀 정보를 스캔하여 탈취한다.
  • 탈취한 정보를 이용해 공격자는 다른 패키지 관리자의 계정에 접속하여 악성 코드를 추가로 확산시킨다.

NPM과 파이썬 패키지 생태계에서 발생하는 공급망 공격은 전염성이 강한 웜과 유사한 형태를 띤다. Tanstack 패키지 사례에서 보듯, 한 번 감염된 패키지는 해당 오픈 소스에 의존하는 수많은 사용자 컴퓨터로 빠르게 퍼져나간다. 공격자의 주요 목표는 시스템에 저장된 토큰과 자격 증명을 확보하여 더 넓은 범위의 인프라를 장악하는 것이다.

보안 강화를 위한 즉각적인 실천 수칙

  • 패키지를 설치할 때는 출시 후 최소 3일이 경과한 버전만 선택하여 안정성을 검증한다.
  • 비밀 정보를 로컬 파일에 평문으로 두지 말고 암호화 기반의 클라우드 자격 증명 관리 도구를 사용한다.
  • 모든 코드 실행과 개발 작업은 가상 머신이나 개발 전용 컨테이너 내에서 독립적으로 진행한다.

시스템 보안을 위해 Infisical이나 Doppler와 같은 서비스를 도입하면 공격자가 하드 드라이브를 스캔하더라도 유의미한 정보를 얻지 못하게 차단할 수 있다. 평문으로 저장된 .env 파일은 공격자의 최우선 타겟이 된다. 가상 환경을 통한 격리는 공급망 공격이 발생하더라도 피해 범위가 메인 시스템으로 번지는 것을 막는 핵심 방어선이다.

AI가 공격자에게 제공하는 기술적 우위

  • AI는 방대한 양의 저장소와 CI/CD 워크플로 스크립트를 분석하여 보안 취약점을 빠르게 찾아낸다.
  • 공격자는 AI를 활용해 탐지가 어려운 정교한 악성 코드를 대량으로 생성한다.
  • 관리자는 모든 공격 벡터를 예측해야 하는 반면 공격자는 하나만 찾아내면 되기에 AI 환경에서 공격자가 더 유리하다.

공격자는 AI를 도구 삼아 특정 타겟의 GitHub Actions 워크플로를 분석하고 취약한 트리거를 식별한다. 이를 통해 신뢰할 수 없는 환경에서 신뢰할 수 있는 배포 환경으로 악성 코드를 심는 작업이 훨씬 간소화되었다. AI는 코드의 품질보다는 오직 공격 성공이라는 목적에 최적화된 기발한 공격 아이디어를 제공하며 보안 생태계를 위협한다.

코드 폭증과 AI 에이전트 사용의 위험성

  • AI 덕분에 코드 생성이 쉬워지면서 GitHub로 푸시되는 코드의 양이 이례적인 수준으로 증가했다.
  • 내부 작동 방식을 이해하지 못한 채 실행하는 일회성 작업용 코드가 공급망 공격의 새로운 통로가 된다.
  • 에이전트에게 기능을 맡길 경우 사용자가 통제하지 않는 외부 패키지가 무분별하게 설치될 위험이 있다.

비개발자가 PDF 병합 같은 단순 작업을 AI 에이전트에게 시킬 때 에이전트는 필요한 라이브러리를 임의로 설치한다. 이 과정에서 사용자는 어떤 패키지가 시스템에 들어오는지 확인하지 않으며, 이는 보안 지식이 없는 사용자들을 손쉬운 타겟으로 만든다. 코드의 양이 기하급수적으로 늘어남에 따라 공격자가 노릴 수 있는 접점 또한 과거와 비교할 수 없이 넓어졌다.

프롬프트 주입을 통한 에이전트 탈취 시나리오

  • 공격자는 에이전트의 코드나 시스템 프롬프트를 수정하여 프롬프트 주입 공격을 수행한다.
  • 변질된 에이전트는 사용자의 명령을 수행하는 척하면서 동시에 시스템 정보를 원격지로 빼돌린다.
  • 편리함에 가려진 보안 불감증을 버리고 에이전트 실행 환경을 철저히 격리해야 한다.

AI 에이전트 자체를 감염시키는 것은 매우 매력적인 공격 목표다. 악성 코드가 에이전트의 기저 지시사항을 비틀면 에이전트는 사용자의 도구가 아닌 공격자의 트로이 목마로 돌변한다. 시스템 내부에 상주하며 지속적으로 비밀 정보를 스캔하도록 프로그래밍된 에이전트는 기존의 데이터 유출 사고보다 훨씬 파괴적인 결과를 초래할 수 있다. 따라서 편리함에 따른 위험을 인지하고 격리된 실행 환경을 구축하는 것이 필수적이다.

Community Posts

View all posts