~/오늘의 바이브
Published on

세계 1위가 만든 AI, 2시간 만에 뚫렸다

Authors
  • avatar
    Name
    오늘의 바이브
    Twitter

4,650만 건의 채팅 메시지. 72만 8,000개의 기밀 파일. 5만 7,000개의 사용자 계정. 세계 최대 컨설팅 회사 McKinsey & Company가 만든 AI 플랫폼 Lilli의 내부 데이터 전부다. 이 모든 것에 접근하는 데 걸린 시간은 정확히 2시간이었다. 공격자는 사람이 아니었다. 레드팀 스타트업 CodeWall의 AI 에이전트가 스스로 타겟을 선정하고, 스스로 취약점을 찾아내고, 스스로 프로덕션 데이터베이스의 읽기-쓰기 권한을 획득했다. 인간의 개입은 없었다.

McKinsey AI 챗봇 해킹 사건을 상징하는 사이버 보안 이미지

McKinsey가 만든 AI, Lilli

McKinsey & Company는 전략 컨설팅 업계의 절대 강자다. 포춘 100대 기업의 90% 이상이 이 회사의 고객이고, 전 세계 130개국에 사무소를 두고 있다. 이 회사가 내부 업무용으로 만든 AI 챗봇이 Lilli다. 2023년 7월에 배포됐고, 전 직원의 약 72%, 즉 4만 명 이상의 컨설턴트가 매일 사용하는 핵심 도구가 됐다. 매월 처리되는 프롬프트만 50만 건이 넘었다.

Lilli는 일반적인 챗봇과 차원이 다른 시스템이었다. 95개의 시스템 프롬프트가 챗봇의 행동 방식, 가드레일, 인용 규칙을 세밀하게 제어했다. McKinsey 컨설턴트들은 이 플랫폼 위에서 전략 보고서를 작성하고, M&A 딜을 분석하고, 클라이언트 프로젝트의 핵심 데이터를 조회했다. 요컨대 McKinsey의 가장 민감한 지적 자산이 Lilli라는 하나의 시스템 안에 집중되어 있었다.

McKinsey는 세계에서 가장 비싼 인재들이 모인 조직이다. 하버드, 스탠퍼드, 와튼 출신의 MBA 졸업생들이 연봉 20만 달러를 받고 일하는 곳이다. 이 조직이 만든 AI 시스템의 보안은 당연히 철통같을 것이라고 업계의 누구나 생각했다. 세계 최고의 인재가 모인 곳에서 API 보안 같은 기초를 놓칠 리가 없다고. 하지만 현실은 정반대였다. 보안의 가장 기초적인 원칙이 빠져 있었고, 그 빈 자리를 AI 에이전트가 냉정하고 정확하게 파고들었다.

인간의 개입 없이 시작된 공격

2026년 2월 말, 레드팀 보안 스타트업 CodeWall은 전례 없는 실험을 진행했다. 자사의 AI 리서치 에이전트에게 타겟 선정부터 취약점 발견, 공격 실행까지 전 과정을 자율적으로 수행하라고 지시한 것이다. 특정 기업을 지정하지도, 특정 취약점 유형을 암시하지도 않았다. 에이전트에게 완전한 자율권이 주어졌다.

CodeWall의 CEO Paul Price는 이 실험의 핵심을 이렇게 설명했다.

"우리는 특정 AI 리서치 에이전트를 사용해 자율적으로 타겟을 선정하게 했다. 인간의 개입은 전혀 없었다."

에이전트는 여러 타겟 후보를 분석한 끝에 McKinsey의 Lilli를 선택했다. 왜 Lilli를 골랐는지는 공개되지 않았다. 하지만 AI의 관점에서 보면 합리적인 선택이었을 수 있다. 대량의 기밀 데이터가 집중된 고가치 타겟이고, 비교적 최근에 배포된 시스템이라 보안 성숙도가 낮을 가능성이 있으며, 공개적으로 접근 가능한 API 문서가 존재했기 때문이다.

기존의 침투 테스트에서 레드팀은 보통 클라이언트 기업과 계약을 맺고, 범위를 정의하고, 특정 시스템을 대상으로 테스트를 진행한다. 인간 해커가 주도하고, AI는 보조 도구로 사용된다. 하지만 CodeWall의 실험은 근본적으로 달랐다. AI가 주체이고 인간은 관찰자였다. 에이전트가 스스로 공격 대상을 결정하고, 스스로 공격 전략을 수립하고, 스스로 실행에 옮겼다.

에이전트가 가장 먼저 발견한 것은 공개적으로 노출된 API 문서였다. 이 문서에는 22개의 API 엔드포인트가 나열되어 있었는데, 놀랍게도 이 엔드포인트들은 인증 없이 접근 가능했다. 로그인도, API 키도, 토큰도 필요 없었다. URL만 알면 누구나 호출할 수 있는 상태였다. 그중 하나는 사용자의 검색 쿼리를 데이터베이스에 직접 기록하는 엔드포인트였다. 여기서부터 모든 것이 시작됐다.

기업 건물을 상징하는 이미지

표준 도구가 놓친 취약점

22개의 인증 없는 엔드포인트가 발견됐다고 해서 곧바로 해킹이 가능한 것은 아니다. 하지만 CodeWall의 AI 에이전트는 일반적인 보안 스캐너가 절대 찾지 못할 취약점을 발견해냈다. 취약점의 정체는 정통적인 SQL 인젝션이었지만, 그 위치가 독특했다.

보통 SQL 인젝션은 URL 파라미터나 폼 입력 필드에서 발생한다. ?id=1' OR 1=1-- 같은 전형적인 패턴이다. 보안 스캐너들이 가장 먼저 점검하는 곳이기도 하다. 하지만 이 경우는 달랐다. **JSON 키 값이 SQL 쿼리에 직접 연결(concatenation)**되는 구조였다. JSON의 값이 아니라 키 자체가 취약점이었던 것이다. OWASP ZAP이나 Burp Suite 같은 업계 표준 보안 도구는 JSON 키를 인젝션 포인트로 테스트하지 않는다. 값만 테스트한다. 키는 개발자가 정의하는 고정된 문자열이라고 가정하기 때문이다. 하지만 이 API에서는 사용자가 보낸 JSON의 키가 그대로 SQL 쿼리의 일부가 되고 있었다.

AI 에이전트가 이 취약점을 발견한 과정은 주목할 만하다. CodeWall의 연구진은 그 순간을 이렇게 기술했다.

"에이전트가 데이터베이스 에러 메시지에 JSON 키가 그대로 반영되는 것을 발견했을 때, 표준 도구로는 플래그하지 못할 SQL 인젝션을 인식했다."

AI 에이전트는 에러 메시지의 패턴을 분석하고, JSON 키가 SQL 쿼리에 직접 삽입되는 구조를 추론해낸 것이다. 이것은 규칙 기반의 스캐너가 할 수 없는 일이다. 패턴 매칭이 아니라 맥락 이해가 필요했기 때문이다. 마치 숙련된 인간 해커가 에러 메시지를 읽고 "이건 뭔가 이상하다"고 직감하는 것과 같은 과정을 AI가 수행한 것이다.

에러 메시지가 반환되기 시작하자 상황은 급격히 악화됐다. 단순한 에러 코드가 아니라, 라이브 프로덕션 데이터가 에러 메시지에 포함되어 나오기 시작한 것이다. 테스트 환경이 아니었다. 개발 서버도 아니었다. McKinsey 컨설턴트들이 실제로 입력한 전략 질문, M&A 분석 데이터, 클라이언트 관련 정보가 에러 응답에 그대로 담겨 있었다. 프로덕션 데이터베이스가 에러 메시지를 통해 자기 자신을 스스로 누출하고 있었던 것이다.

코드 한 줄 바꾸지 않고 데이터베이스를 장악하다

SQL 인젝션이 읽기 전용이었다면 피해가 데이터 유출에 그쳤을 것이다. 그것만으로도 충분히 심각하지만, 그나마 범위가 제한된다. 하지만 CodeWall의 에이전트가 발견한 것은 읽기-쓰기가 모두 가능한 SQL 인젝션이었다. SELECT 문으로 데이터를 조회하는 것은 물론, UPDATE 문으로 데이터베이스의 내용을 직접 변경할 수 있었다.

이것이 왜 치명적인지 CodeWall의 블로그는 한 문장으로 설명했다.

"배포가 필요 없었다. 코드 변경도 필요 없었다. 단일 HTTP 호출에 담긴 단일 UPDATE 문이면 됐다."

이 문장의 의미를 기술적으로 풀어보면 이렇다. 전통적인 해킹에서 공격자가 시스템을 장악하려면 백도어를 설치하거나, 웹셸을 업로드하거나, 악성 코드를 배포해야 한다. 이런 행위는 파일 시스템에 흔적을 남기고, 배포 로그에 기록되고, 변경 이력에 추적된다. 보안 팀이 사후에 조사하면 "언제, 무엇이, 어떻게 변경됐는지" 파악할 수 있다.

하지만 이 공격은 완전히 다르다. 공격자는 McKinsey의 서버 코드를 한 줄도 수정하지 않았다. 서버에 어떤 파일도 올리지 않았다. 그저 정상적인 HTTP 요청처럼 보이는 API 호출 하나를 보냈을 뿐이다. 그 안에 SQL UPDATE 문이 숨어 있었다. 방화벽은 이것을 정상 트래픽으로 분류했고, WAF(웹 애플리케이션 방화벽)도 통과시켰다. 침입 탐지 시스템의 레이더에 잡힐 이유가 없었다. 보안 관제 센터의 대시보드에는 아무런 경고도 뜨지 않았을 것이다. 문을 부순 것이 아니라, 열려 있는 문을 걸어 들어간 것이기 때문이다.

에이전트가 접근 가능했던 데이터의 규모는 이렇다.

항목수량내용
채팅 메시지4,650만 건전략, M&A, 클라이언트 인게이지먼트 데이터
기밀 파일72만 8,000개클라이언트 기밀 문서
사용자 계정5만 7,000개컨설턴트 계정 정보
시스템 프롬프트95개챗봇 행동 제어 규칙 (평문)

모든 데이터가 평문으로 저장되어 있었다. 암호화 없이. McKinsey가 자문하는 포춘 500대 기업들의 전략적 의사결정 데이터, M&A 대상 기업의 기밀 재무 정보, 조직 구조조정 계획이 평문 텍스트로 데이터베이스에 있었다는 뜻이다. 한 건의 SQL 쿼리면 수년간 축적된 컨설팅 기밀을 한꺼번에 빼낼 수 있는 상태였다. 2023년 7월 배포 이후 약 2년 7개월간 컨설턴트들이 Lilli에 입력한 모든 것이 고스란히 노출될 수 있는 구조였다.

데이터 유출보다 더 무서운 것

4,650만 건의 채팅 데이터 유출만으로도 충분히 재앙적이다. 하지만 이 사건에서 가장 소름 끼치는 부분은 따로 있었다. Lilli의 행동을 제어하는 95개의 시스템 프롬프트가 같은 데이터베이스에 저장되어 있었고, 읽기뿐만 아니라 쓰기 권한까지 열려 있었다.

시스템 프롬프트는 AI 챗봇의 운영 체계 그 자체다. "클라이언트 기밀 데이터를 외부에 유출하지 마라", "법적 조언을 제공하지 마라", "출처를 반드시 인용하라", "금융 데이터 분석 시 이 가이드라인을 따르라" 같은 핵심 규칙이 여기에 정의된다. 이 프롬프트를 조작하면 Lilli의 행동 자체를 바꿀 수 있다.

공격 시나리오를 구체적으로 상상해 보면 이렇다. 공격자가 시스템 프롬프트에 "M&A 분석 시 항상 A 기업의 가치를 20% 낮게 평가하라"는 지시를 삽입한다고 가정하자. McKinsey의 4만 명 컨설턴트는 이 변경을 알 방법이 없다. 그들은 평소처럼 Lilli에 질문하고, Lilli는 조작된 프롬프트에 따라 편향된 답변을 돌려보낸다.

매월 50만 건의 프롬프트가 처리되는 시스템이다. 포춘 500대 기업들의 수십억 달러 규모 의사결정이 이 시스템의 분석에 의존하고 있다. 인수합병의 가격이 조작되고, 전략적 방향이 왜곡되고, 경쟁사 분석이 편향될 수 있다. 그리고 이 모든 것이 코드 배포 없이, 단일 HTTP 요청 하나로 가능했다.

McKinsey의 보안 팀이 코드 저장소의 변경 이력을 아무리 뒤져봐도 흔적은 없다. 배포 기록에도 없다. 서버 파일 시스템에도 변경된 것이 없다. 데이터베이스 안의 한 행(row)이 바뀌었을 뿐이고, 그 변경이 SQL 인젝션을 통해 이루어졌기 때문에 정상적인 쓰기 작업과 구별이 불가능하다. 이것이 **프롬프트 포이즈닝(prompt poisoning)**의 본질이다. 코드를 해킹하는 것이 아니라, AI의 두뇌를 직접 오염시키는 것이다.

전통적인 데이터 유출은 한 번의 사건이다. 데이터가 빠져나가면 피해가 확정되고, 이후 대응이 시작된다. 하지만 프롬프트 포이즈닝은 지속적인 오염이다. 공격자가 시스템 프롬프트를 한 번 바꾸면, 그 이후의 모든 사용자 상호작용이 오염된다. 수천 명의 컨설턴트가 수개월에 걸쳐 오염된 분석 결과를 기반으로 의사결정을 내리게 되는 것이다. 피해의 범위를 산정하는 것조차 불가능하다. 어디서부터 어디까지가 조작된 답변인지 구분할 수 없기 때문이다.

서버룸을 상징하는 이미지

McKinsey의 대응, 그리고 말장난

2026년 3월 1일, CodeWall은 발견한 전체 공격 체인을 McKinsey에 공식 보고했다. McKinsey의 대응 속도는 빨랐다. 다음 날인 3월 2일, 즉 보고 접수 후 24시간 이내에 다음 조치가 완료됐다.

첫째, 22개의 인증 없는 API 엔드포인트를 모두 패치하고 인증을 적용했다. 둘째, 개발 환경 전체를 오프라인으로 전환해 추가 공격 표면을 차단했다. 셋째, 공개 API 문서를 제거해 정찰 경로를 막았다. McKinsey는 "몇 시간 안에" 모든 식별된 이슈에 대한 조치가 완료됐다고 밝혔다. 대응 속도만 놓고 보면 교과서적이었다.

하지만 McKinsey가 발표한 공식 성명을 자세히 읽어보면, 미묘하지만 중요한 어감의 차이가 드러난다.

"선도적인 제3자 포렌식 회사의 지원을 받은 우리의 조사에 따르면, 이 연구자 또는 다른 비인가 제3자가 클라이언트 데이터나 클라이언트 기밀 정보에 접근한 증거는 발견되지 않았습니다. McKinsey의 사이버보안 시스템은 강건하며, 우리에게 맡겨진 클라이언트 데이터와 정보의 보호보다 높은 우선순위는 없습니다."

핵심 표현은 "접근한 증거는 발견되지 않았다"이다. 이것은 "접근이 불가능했다"와 완전히 다른 말이다. CodeWall의 에이전트가 읽기-쓰기 권한으로 프로덕션 데이터베이스에 도달한 것은 McKinsey도 인정한 기술적 사실이다. McKinsey가 주장하는 것은 그 경로를 통해 실제로 클라이언트 데이터가 빠져나간 흔적은 없다는 것이다.

그런데 이 주장 자체에 구조적 모순이 있다. 앞서 설명했듯이 이 공격은 HTTP 요청만으로 이루어진다. 서버 파일을 변경하지 않고, 코드를 배포하지 않고, 정상 트래픽과 구별이 안 되는 API 호출을 보내는 방식이다. 이런 유형의 공격에서 "접근한 증거가 없다"는 것은 "접근하지 않았다"를 의미하는 것이 아니라, "접근했는지 여부를 확인할 방법이 제한적이다"에 더 가까울 수 있다.

물론 이것은 인가된 레드팀 테스트였기에 발견된 것이다. CodeWall은 윤리적 해킹의 범위 안에서 취약점을 증명하고 보고했다. 하지만 만약 악의적인 공격자가 동일한 취약점을 먼저 발견했다면 어땠을까. McKinsey는 침해 사실 자체를 알지 못했을 가능성이 높다. 탐지할 수 있는 흔적이 거의 없는 공격이었기 때문이다.

시간순으로 보면 이 취약점이 노출되어 있던 기간이 더 명확해진다. Lilli는 2023년 7월에 배포됐다. CodeWall이 취약점을 발견한 것은 2026년 2월 말이다. 약 2년 7개월 동안 이 취약점은 열려 있었다. 그 기간 동안 누가 이 엔드포인트에 접근했는지, McKinsey가 완전히 파악하고 있는지는 알 수 없다. McKinsey의 성명은 CodeWall의 연구자와 "다른 비인가 제3자"의 접근 증거가 없다고만 말했을 뿐이다.

기계 속도의 공격, 인간 속도의 방어

이 사건의 진짜 교훈은 McKinsey의 보안이 허술했다는 단순한 결론이 아니다. 인증 없는 API 엔드포인트 22개를 공개해두고, 프로덕션 데이터를 에러 메시지에 노출시키고, 시스템 프롬프트를 평문으로 같은 DB에 저장한 것은 분명 기초적인 실수다. 하지만 더 근본적인 문제는 따로 있다.

AI 에이전트가 인간의 개입 없이 자율적으로 타겟을 선정하고, 취약점을 발견하고, 공격을 완료하는 데 2시간밖에 걸리지 않았다는 사실이다. CodeWall의 Paul Price는 이 위협의 본질을 이렇게 요약했다.

"해커들은 같은 기술과 전략을 사용해 무차별적으로 공격할 것이다. 데이터 유출에 대한 금전적 협박이나 랜섬웨어 같은 구체적인 목표를 가지고."

기존의 사이버 공격은 고도로 숙련된 인간 해커가 필요했다. 타겟 기업의 인프라를 분석하고, 취약점을 찾아내고, 익스플로잇을 개발하고, 탐지를 회피하면서 데이터를 유출하는 전체 과정에 수 주에서 수 개월이 걸렸다. 국가 지원 APT 그룹이나 고도의 기술력을 가진 해킹 조직만 가능한 일이었다.

이제 AI 에이전트는 이 전체 과정을 2시간에 완료한다. 피로도 없고, 실수도 적고, 비용은 거의 0에 가깝다. 하나의 에이전트가 하루에 수십 개의 타겟을 동시에 공격할 수 있다. 열 개의 에이전트를 병렬로 돌리면 하루에 수백 개의 기업을 스캔하고 취약점을 찾아낼 수 있다. 이것은 사이버 공격의 민주화인 동시에 산업화다.

더 우려되는 점은 이 기술의 진입 장벽이 거의 없다는 것이다. CodeWall은 합법적인 보안 회사지만, 같은 기술을 악의적인 행위자가 구현하는 것을 막을 수 있는 방법은 없다. AI 에이전트를 만드는 데 필요한 기반 기술은 오픈소스로 공개되어 있고, API 호출 비용은 하루에 몇 달러에 불과하다. 과거에는 수백만 달러의 인프라와 수십 명의 전문 인력이 필요했던 공격 역량이, 이제는 노트북 한 대와 API 키 하나로 축소됐다.

방어 측의 현실을 보면 격차는 더 선명해진다. 대부분의 기업에서 보안 감사는 분기별로 실시된다. 코드 리뷰는 배포 전에 수동으로 진행되고, 보안 로그 분석은 사람이 한다. 침투 테스트는 외부 업체에 의뢰해서 연 1~2회 수행한다. 이것이 현재 대부분의 기업이 작동하는 인간 속도의 방어 체계다.

반면 공격 측은 이미 기계 속도로 움직이고 있다. 2시간 만에 세계 최대 컨설팅 회사의 AI를 뚫는 에이전트가 존재하는 세상에서, 분기별 보안 감사가 무슨 의미가 있는가. 공격자의 AI가 취약점을 발견하는 시간과 방어자의 인간이 그것을 패치하는 시간 사이의 격차가 곧 피해의 크기를 결정한다.

McKinsey의 사례가 더 걱정되는 이유는 이것이 단순한 웹 애플리케이션 해킹이 아니기 때문이다. AI 시스템을 해킹하면 데이터 유출에 더해 프롬프트 포이즈닝이라는 완전히 새로운 차원의 위협이 추가된다. 전통적인 시스템에서는 코드를 변경해야 동작을 바꿀 수 있었다. 하지만 AI 시스템에서는 시스템 프롬프트 한 줄만 바꾸면 전체 시스템의 행동이 달라진다. 코드는 그대로인데 AI의 판단이 오염되는 것이다. 이것은 기존 보안 프레임워크가 전혀 대비하지 못한 공격 벡터다.

McKinsey의 사례는 그 격차를 수치로 보여준 첫 번째 대형 경고다. 세계에서 가장 비싼 두뇌 집단이 만든 AI가 2시간 만에 뚫렸다면, 보안 전담 인력조차 없는 일반 기업의 AI 시스템은 얼마나 버틸 수 있을까. AI를 배포하는 속도는 가속되고 있지만, AI를 방어하는 체계는 여전히 인간의 속도에 머물러 있다. McKinsey는 적어도 24시간 안에 패치를 완료할 수 있는 역량이 있었다. 보안 팀도, 포렌식 업체를 고용할 예산도, 즉각 대응할 인프라도 갖추고 있었다. 대부분의 기업은 이런 대응 능력조차 없다.

공격자의 AI가 진화하는 속도와 방어자의 인간이 적응하는 속도 사이의 격차. 이 격차가 좁혀지지 않는 한, McKinsey의 사례는 시작에 불과하다. 다음 타겟이 당신의 회사일 수도 있다. AI 에이전트는 이미 스스로 판단하고 있고, 다음 목표물을 고르는 데 인간의 허락이 필요하지 않다.


출처