
알프레드 노벨Alfred Nobel이 다이너마이트를 발명했을 때, 그의 머릿속에 있던 것은 광산과 터널이었습니다. 맨손으로 바위를 깨던 광부들을 위험에서 꺼내주고, 산을 뚫어 철도를 놓는 일. 그는 그것이 인류를 편하게 하는 도구라고 믿었지요. 그러나 같은 폭약은 전장으로도 실려 갔습니다. 도구는 발명가의 선의를 묻지 않았습니다.
기술의 역사는 이 장면을 지치지도 않고 반복합니다. 실을 짜던 방직기는 옷값을 낮췄지만 숙련공의 일자리도 함께 지웠고, 원자를 쪼갠 힘은 도시에 전기를 밝히기도, 도시를 지우기도 했습니다. 하나의 능력이 세상에 나오면, 그 능력은 우리가 정해준 방향으로만 흐르지 않습니다. 좋은 쪽과 나쁜 쪽, 양쪽 문으로 동시에 걸어 들어오지요.
저는 지난 몇 주 이 블로그에서 'AI 에이전트가 사람의 일을 대신하는' 흐름을 이야기해 왔습니다. 목표만 던져주면 스스로 단계를 쪼개어 몇 시간을 혼자 일하는 업무 에이전트, 그 편리함과 잠금의 딜레마 같은 것들이었지요. 그런데 얼마 전, 바로 그 능력의 뒷면을 정면으로 보여주는 사건이 공개됐습니다. 일을 대신하던 그 손이, 이번엔 공격을 대신했습니다.
▸ JADEPUFFER : 사람 없이 완주한 공격
7월 초, 보안 기업 시스디그Sysdig의 위협연구팀이 하나의 랜섬웨어 사건을 공개했습니다. 연구팀은 이것을 "문서로 확인된 최초의 에이전틱 랜섬웨어agentic ransomware"라고 조심스럽게 규정했습니다. 공격자에게는 JADEPUFFER라는 이름이 붙었고요.
무엇이 '최초'였을까요. 랜섬웨어 자체는 새롭지 않습니다. 놀라운 지점은 공격의 전 과정을 사람이 아니라 대규모 언어모델LLM 에이전트가 처음부터 끝까지 혼자 수행했다는 데 있습니다. 정찰로 시작해 자격증명을 쓸어 담고, 시스템 안으로 측면 이동하며 권한을 높이고, 마지막에 데이터베이스를 암호화한 뒤 협박문을 남기기까지 — 이 사슬 전체를 에이전트가 자율로 돌렸습니다.
침투의 문은 낯설지 않았습니다. 오픈소스 AI 앱 구축 도구인 랭플로우Langflow의 인증 누락 취약점(CVE-2025-3248)이었지요. 로그인 없이 서버에서 코드를 실행할 수 있는 구멍입니다. 이미 랭플로우 1.3.0에서 패치됐고, 지난해 5월 미국 CISA의 '알려진 악용 취약점' 목록에도 올랐던, 말하자면 낡은 문입니다. 안으로 들어간 에이전트는 OpenAI·앤트로픽Anthropic·딥씨크DeepSeek·제미나이Gemini의 API 키부터 클라우드 자격증명, 암호화폐 지갑 키까지 훑었고, 나코스Nacos 설정 항목 1,342개를 암호화한 뒤 원본을 지웠습니다.
▸ 무엇이 정말 새로운가 : 정교함이 아니라 자율성
시스디그가 이 사건을 '에이전트가 한 일'이라고 판단한 근거가 흥미롭습니다. 페이로드 곳곳에 자연어 주석이 가득했거든요. 왜 이 표적을 먼저 노리는지, 어느 데이터베이스가 '가장 큰지', 각 단계의 목적이 무엇인지를 조곤조곤 설명해 두었습니다. 사람 해커라면 굳이 남기지 않을 이 수다스러운 주석은, LLM이 코드를 만들 때 반사적으로 남기는 습관에 가깝습니다. 로그인에 실패한 뒤 여러 단계를 스스로 정정해 다시 뚫기까지 걸린 시간이 31초였다는 정황도 있었고요.
여기서 저는 한 발 물러서고 싶습니다. 이 사건을 종말의 신호처럼 읽는 것은 정확하지 않기 때문입니다. 침투 경로는 이미 패치된 낡은 취약점이었고, 공격 수법 자체에 전에 없던 정교함이 있었던 것도 아닙니다. 무엇보다 표적을 고르고 방아쇠를 당긴 것은 여전히 사람이었습니다. 에이전트가 혼자 해낸 것은, 방아쇠가 당겨진 다음의 실행 과정이었지요. '무인'이라는 말은 키보드 앞에 사람이 없었다는 뜻이지, 배후에 아무도 없었다는 뜻이 아닙니다. 어떤 LLM이 이 일을 했는지조차 확정되지 않았습니다. 시스디그도 "에이전트의 시스템 프롬프트나 설정을 들여다볼 수는 없었다"고 정직하게 적었습니다.
그렇다면 무엇이 진짜 새로운가. 정교함이 아니라 자율성입니다. 지금까지 랜섬웨어를 굴리려면 사람의 손과 시간, 그리고 어느 정도의 기술이 필요했습니다. 그 기술의 문턱skill floor이 이번에 '에이전트 하나를 돌리는 비용' 수준으로 내려앉았습니다. 게다가 그 에이전트를 남의 API 키로 돌린다면 — 이른바 LLMjacking입니다 — 공격자가 치르는 비용은 0에 가까워집니다. 나쁜 일을 하는 데 드는 값이 싸질 때, 나쁜 일의 총량은 늘어납니다. 이것이 이 사건이 던지는 진짜 무게입니다.
▸ 속도의 대칭 : 방어도 자동화해야 하는 이유
이 대목에서 한국의 상황을 겹쳐 봅니다. 랭플로우도, 나코스도 우리 스타트업과 마이크로서비스 현장에서 드물지 않게 쓰는 도구들입니다. 인증 없이 사내망에 열려 있는 AI 실험 도구, 코드 어딘가에 방치된 API 키 — 이번 사건이 파고든 바로 그 틈은, 남의 이야기가 아니라 우리 조직의 점검 목록에 그대로 얹히는 항목입니다.
더 근본적인 문제는 속도입니다. 지금까지 우리의 방어는 '상대편에 사람이 있다'는 전제 위에 서 있었습니다. 사람 공격자의 속도에 맞춰 분석가가 경보를 분류하고 대응하면 됐지요. 그런데 상대가 31초 만에 실패를 복구하고 스스로 판단하는 에이전트라면, 그 산수가 무너집니다. 어떤 분석가 팀도 에이전트가 행동하는 속도보다 빠르게 사람 손으로 분류할 수는 없으니까요.
그래서 방어 진영에서도 '에이전틱 SOC'라는 말이 나오기 시작했습니다. 위협을 사람이 아니라 소프트웨어가, 위협이 움직이는 속도로 분류하고 대응하게 하자는 개념입니다. 자율 공격에는 자율 방어로 속도를 맞추자는 것이지요. 결국 노벨의 다이너마이트가 그랬듯, 같은 자율성이 공격에도 방어에도 쓰일 것입니다. 문제는 어느 쪽이 먼저, 더 성실히 채비하느냐입니다.
다만 화려한 자동화 방어를 논하기 전에, 저는 더 낮고 지루한 곳을 먼저 가리키고 싶습니다. 이번 공격이 뚫은 것은 결국 패치되지 않은 취약점과 방치된 키였습니다. 밀린 패치를 올리고, 권한을 최소로 조이고, 흩어진 API 키를 회수하는 일 — 오래된 보안 위생이 여전히 첫 번째 방벽입니다. 에이전트 시대의 방어는 거창한 새 무기가 아니라, 늘 미뤄두던 기본기에서 시작됩니다.
여러분, 우리가 편리함이라 부르며 사내망에 열어둔 그 AI 도구들, 그리고 코드 어딘가에 잠들어 있는 그 키들을 떠올려 보시기 바랍니다. 이제 그 문 앞에 서는 것은 반드시 사람의 손만은 아닙니다. 지치지 않고, 값싸고, 31초 만에 실패를 고쳐 다시 두드리는 손 — 그 손이 오늘 밤 두드릴 문은, 누구의 문일까요.
전체 사이트에서 댓글·관련 글을 함께 보시려면
이야기 공장에서 보기 →