카카오, AI 보안 하네스 '아우리가' 공개…일관성·비용 잡는다
카카오 정보보안실이 if(kakao)26에서 AI 에이전트 기반 소스코드 취약점 분석 하네스 '아우리가'를 공개했다. 실행마다 결과가 달라지는 AI 분석의 일관성 문제와 들쭉날쭉한 비용을 상태 관리, 역할 분리, 정체 감지, 피드백 루프로 다룬다.
카카오가 AI 에이전트로 소스코드 보안 취약점을 찾는 사내 분석 환경 '아우리가(Auriga)'의 설계를 공개했다. 카카오 정보보안실 최진호 담당자는 10월 13~14일 열린 개발자 콘퍼런스 '이프카카오(if(kakao)26)'의 '신뢰와 안전' 트랙에서 소스코드 보안 분석 하네스 설계를 주제로 발표했다.
아우리가는 AI 모델 자체가 아니라 모델을 감싸 도구와 작업 환경을 연결하는 '하네스(harness)'다. AI에 취약점 분석을 맡길 때 생기는 들쭉날쭉한 결과와 비용을 구조로 통제하려는 시도다.
"같은 코드·같은 프롬프트인데 결과가 다르다"
AI 코딩 도구에 "취약점을 찾아달라"고 하면 그럴듯한 답이 나온다. 하지만 최 담당자는 보안 실무에 쓰기에는 한계가 뚜렷하다고 짚었다. 같은 코드와 프롬프트로 돌려도 실행할 때마다 결과가 달라지는 일관성 문제가 있다. 어디까지 분석했는지 알기 어렵고, 분석 시간과 비용도 매번 다르다.
학계에서도 같은 문제가 확인됐다. 미국 보스턴대와 IBM 리서치 연구진은 IEEE 보안·프라이버시 심포지엄(S&P) 2024에 발표한 논문에서 GPT-4 등 대형언어모델(LLM) 8종을 228개 코드 시나리오로 시험했다. 연구진은 모든 모델이 여러 번 실행하면 일부 시험에서 답을 바꿨고, 이미 패치된 코드도 취약하다고 판단하는 오탐률이 높았다고 밝혔다. 정적 분석 업체 셈그렙도 자체 연구에서 같은 스캔을 두 번 돌리면 결과가 달라질 수 있으니 AI 도구를 한 번만 평가하지 말라고 권고했다.
방대한 지침 대신 '하네스'로 추론을 분석에 집중
최 담당자는 기존 프롬프트 방식이 거대한 지침을 한꺼번에 전달하는 데서 문제가 생긴다고 봤다. AI가 취약점 분석이라는 본래 추론에 힘을 써야 하는데, 방대한 지침을 처리하는 데 상당 부분을 소모한다는 것이다. 그래서 AI가 해야 할 일과 하지 말아야 할 일을 하네스가 구조적으로 나눠 맡도록 설계했다.
아우리가는 러스트(Rust)로 만든 터미널 사용자 인터페이스(TUI) 애플리케이션이다. 추론을 맡는 AI 에이전트, 에이전트가 쓰는 분석 도구, 에이전트가 활동하는 작업 환경을 하나로 묶는다. 이름은 별자리 '마차부자리(Auriga)'에서 따왔다. 라틴어로 '마차를 모는 사람'이라는 뜻이다. 최 담당자는 추론이 말의 힘이라면 하네스는 그 말이 어디로 어떻게 갈지 설계하는 도구라는 뜻을 담았다고 설명했다.
설계의 핵심은 '상태(State)' 관리다. AI가 남긴 분석 결과는 사람이 읽기는 쉬워도 다른 AI나 도구가 이어받기 어려운 텍스트다. 아우리가는 기억은 데이터베이스에 남기고 규칙은 스키마로 강제해, 여러 에이전트가 충돌 없이 결과를 정리하게 했다. 에이전트는 앤트로픽이 공개한 표준인 MCP(모델 컨텍스트 프로토콜)로 하네스의 상태를 읽고 쓴다. 덕분에 스캔이 중단됐다가 재개돼도 대화 이력을 되살리지 않고 저장된 상태에서 분석을 이어 갈 수 있다.
역할 나눈 다중 에이전트…'앵커링' 막으려 결과도 격리
에이전트는 역할별로 나눴다. 메인 에이전트 '아우리가'는 소스코드 전반을 탐색하며 취약점을 찾는다. '헤이디'는 기존 정적 분석 도구(SAST) 결과를 검토하고, '카펠라'는 서버 쪽 지침을 처리한다. '스크라이브'는 사내 시스템 접근 권한과 정책을 확인해 분석에 필요한 정보를 정리한다. 카펠라는 마차부자리에서 가장 밝은 별의 이름이다.
편향을 줄이고 품질을 높이려고 탐지 과정의 역할도 나눴다. 취약점을 찾는 '헌터', 결과를 확장하거나 다른 취약점과 엮어 보는 '베리파이어', 적대적 관점에서 다시 검토하는 '리뷰어'다. 최 담당자는 에이전트가 취약점이 아니라고 판단한 결과도 버리지 않고 남긴다는 원칙을 소개했다.
'앵커링 효과'를 막는 장치도 눈에 띈다. 앵커링 효과는 먼저 접한 정보에 판단이 끌려가는 현상이다. 에이전트가 기존 분석 결과를 먼저 보면 거기에 매몰될 수 있어, 헤이디의 SAST 검토 결과는 다른 에이전트에게 직접 공유하지 않도록 했다.
'정체 감지'로 헛도는 AI 멈춰 비용 관리
비용은 분석 전에 묶어 둔다. 저장소 크기를 기준으로 분석 깊이와 예산, 즉 에이전트가 쓸 수 있는 활동량의 상한을 정한다. AI가 의미 없는 반복으로 자원을 낭비하지 않도록 '정체 감지' 기능도 넣었다. 찾아낸 취약 코드의 종류·파일·위치가 일정 기간 바뀌지 않으면 하네스는 AI가 헛돌고 있다고 보고 분석을 일찍 끝낸다.
이때 종료는 취약점이 없다는 뜻이 아니다. 주어진 예산 안에서 볼 수 있는 만큼 봤다는 뜻이다. AI는 왜 멈췄는지, 무엇을 더 보지 못했는지 기록으로 남긴다. 분석 범위가 불투명하다는 앞선 문제에 대한 답이기도 하다.
읽기 전용·마이크로 PoC·마스킹…"완전한 격리 아닌 실수 줄이는 장치"
안전장치도 겹겹이 뒀다. 소스코드는 미러링한 사본에서 읽기 전용으로 다루고, 커밋과 푸시는 기술적으로 막았다. 실제로 공격이 가능한지 확인할 때도 운영 서버에 직접 요청을 보내지 않는다. 대신 가설을 세워 동작 가능성을 점검하는 '마이크로 PoC(개념 증명)' 방식을 쓴다. 에이전트가 쓴 도구 결과는 모두 기록·감시하고, 보고서에는 비밀값 등이 드러나지 않도록 마스킹을 적용했다.
최 담당자는 "이 모든 것이 완전한 격리를 의미하는 것은 아니며, 실수를 줄이기 위한 장치"라고 선을 그었다. 하네스 보안은 최근 업계의 화두다. CIO 코리아는 AI 에이전트 공격의 원인이 모델보다 모델을 둘러싼 하네스 코드에 있는 경우가 많다는 해외 보안 연구들을 소개했다. 시스코의 오마르 산토스 수석 엔지니어는 하네스를 독립적인 공격 표면으로 다뤄야 한다고 강조했다.
사람·도구·에이전트를 잇는 3중 피드백 루프
아우리가는 분석이 일회성에 그치지 않도록 세 가지 피드백 루프를 갖췄다. 첫째는 '사람의 판정' 루프다. 엔지니어의 최종 판단과 AI 결과를 비교해 하네스 설계를 고친다. 특히 아우리가가 찾았지만 사람이 버린 것과 사람이 추가로 찾아낸 것을 따로 살핀다.
둘째는 '도구' 루프다. 특이한 취약점이나 외부 제보 이슈를 전용 에이전트가 스캔 규칙(패턴)으로 바꿔 다음 분석에 반영한다. 한 번 잡은 특이 사례를 매번 반복해 잡을 수 있게 하는 구조다.
셋째는 '에이전트' 루프다. 에이전트도 하네스의 사용자로서 MCP를 쓰며 겪은 불편이나 지침의 모호함을 서버에 제보한다. 제보는 개발자가 고칠 수 있는 '기대 이슈'로 바뀐다. 최 담당자는 "피드백의 입구뿐만 아니라 바꾸는 대상까지 설계했다"며 이런 순환 구조로 고위험 취약점 탐지 등 정량·정성 성과를 거두고 있다고 밝혔다. 다만 탐지 건수나 오탐률 같은 구체적 수치는 공개하지 않았다.
카카오는 이번 if(kakao)26에서 AI 에이전트 위험을 관리하는 새 AI 윤리 원칙 'SPIRIT'과 이행 체계 'NORMA'도 내놨다. 이투데이에 따르면 카카오는 이를 연내 적용할 계획이다. 에이전트 서비스를 넓히는 만큼 안전 설계를 함께 공개하는 흐름으로 풀이된다.
참고 자료
- 카카오, 'if(kakao)26' 컨퍼런스 개최..."모든 연결에 지능을" — 카카오 보도자료(2026-09-07)
- if(kakao)26 — 행사 세션 안내(신뢰와 안전 트랙)
- LLMs Cannot Reliably Identify and Reason About Security Vulnerabilities (Yet?): A Comprehensive Evaluation, Framework, and Benchmarks — Ullah 외, IEEE S&P 2024
- LLMs Cannot Reliably Identify and Reason About Security Vulnerabilities (Yet?) — IBM Research
- Evaluating AI Vulnerability Detection: How Reliable Are LLMs for Secure Coding? — DZone(Semgrep)
- The Harness Dilemma: Why Model Guardrails Aren't Enough for Agent Security — Island(2026-08-31)
0댓글