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철저히 대비해야 합니다.