dotsagent.io
언어:한국어
보안 · 레퍼런스

에이전트 보안

에이전트는 낯선 사람이 작성한 텍스트를 읽고 사용자의 인증 정보로 작업을 수행합니다. 이 페이지에서는 핵심 원칙, 2026년 OWASP 목록 두 가지, 지금까지 발생한 사고와 이를 막을 수 있었던 방어책을 살펴봅니다.

치명적인 삼박자

  1. 비공개 데이터에 대한 접근이메일, 저장소, 데이터베이스, 파일 등 사용자의 인증 정보로 접근할 수 있는 모든 항목입니다.
  2. 신뢰할 수 없는 콘텐츠에 노출웹페이지, 이슈, 지원 티켓, 수신 이메일, 도구 설명 등 공격자가 작성할 수 있는 모든 텍스트입니다.
  3. 외부와 통신할 수 있는 기능이메일 전송, pull request 생성, URL 가져오기, 원격 이미지 렌더링 등이 해당합니다. Simon Willison은 2025년 6월 이 세 가지의 조합을 명명했습니다.

한 에이전트가 세 가지를 모두 갖췄다면, 프롬프트 인젝션으로 인해 에이전트가 사용자의 데이터를 공격자에게 넘길 수 있다고 가정하세요. 모델이 거부할 것이라고 기대하지 말고, 모든 에이전트와 세션에서 최소 한 가지 요소를 제거하세요.

최근 사고

에이전트 애플리케이션을 위한 OWASP Top 10 2026

OWASP GenAI Security Project는 이 목록을 2025년 12월 9일에 공개했습니다. 모델이 계획을 세우고, 메모리를 유지하고, 도구를 호출하며, 다른 에이전트와 협력하기 시작할 때 발생하는 위험을 다룹니다.

  1. ASI01
    에이전트 목표 탈취

    공격자는 보통 에이전트가 읽는 콘텐츠에 숨겨진 지시를 통해 에이전트의 목표를 바꿉니다. 그러면 에이전트는 사용자의 도구와 권한으로 공격자의 목표를 수행합니다.

  2. ASI02
    도구 오용 및 악용

    에이전트가 조작당했거나 작업에 필요한 범위보다 더 광범위한 도구 권한을 가진 경우, 레코드 삭제, 메시지 전송, 호출 연쇄 실행 등 정상적인 도구를 해로운 방식으로 사용할 수 있습니다.

  3. ASI03
    신원 및 권한 악용

    에이전트는 자격 증명, 위임된 토큰, 상속된 권한을 사용해 동작합니다. 공격자는 이러한 신원이나 신원 간의 허점을 악용해 권한을 높이거나 다른 사람을 사칭합니다.

  4. ASI04
    에이전트 공급망 취약점

    빌드 시점이나 실행 시점에 로드되는 도구, MCP 서버, 스킬, 플러그인, 모델, 프롬프트는 악의적이거나 침해되었을 수 있습니다. 에이전트는 이런 구성요소를 동적으로 많이 로드하므로, 하나의 악성 구성요소가 이를 사용하는 모든 세션에 영향을 줄 수 있습니다.

  5. ASI05
    예기치 않은 코드 실행 (RCE)

    코드를 작성하고 실행하거나 모델 출력을 셸과 인터프리터에 전달하는 에이전트는 공격자가 지정한 명령을 호스트에서 실행하도록 조작될 수 있습니다.

  6. ASI06
    메모리 및 컨텍스트 오염

    공격자는 에이전트의 메모리, 검색된 문서, 저장된 컨텍스트에 거짓 정보나 지시를 심습니다. 오염된 정보는 계속 남아 있다가 원래 입력이 사라진 뒤에도 이후 세션에 영향을 줍니다.

  7. ASI07
    안전하지 않은 에이전트 간 통신

    에이전트 간 메시지에 적절한 인증, 무결성 검사, 검증이 적용되지 않으면 메시지를 위조하거나 재전송하거나 변조해 수신 에이전트를 속일 수 있습니다.

  8. ASI08
    연쇄 장애

    오염된 입력, 잘못된 도구 결과 또는 침해된 에이전트와 같은 하나의 문제가 연결된 에이전트와 자동화된 단계로 빠르게 퍼져, 사람이 알아차리기 전에 피해를 확산시킬 수 있습니다.

  9. ASI09
    사람과 에이전트 간 신뢰 악용

    에이전트는 자신감 있고 도움이 되는 듯 말하기 때문에 사람들은 에이전트의 제안을 승인하는 경향이 있습니다. 공격자는 이러한 신뢰를 악용해 사람이 유해한 작업을 확인하거나 정보를 공개하도록 유도합니다.

  10. ASI10
    통제 불능 에이전트

    침해되었거나 의도된 동작에서 벗어난 에이전트가 부여된 범위와 감독을 벗어나 계속 독자적으로 작동합니다.

LLM 애플리케이션을 위한 OWASP Top 10 2026

이 버전은 2026년 8월 4일에 공개되었으며 2025년 목록을 대체합니다. Excessive Agency는 6위에서 3위로 올랐고, System Prompt Leakage는 Hidden Context Exposure로 이름이 바뀌었습니다.

  1. LLM01
    프롬프트 인젝션

    입력으로 인해 개발자가 의도하지 않은 방식으로 모델의 동작이 바뀝니다. 사용자에게서 직접 들어올 수도 있고, 모델이 읽는 문서, 웹페이지, 도구 결과를 통해 간접적으로 들어올 수도 있습니다.

  2. LLM02
    민감 정보 노출

    모델이나 애플리케이션이 학습 데이터, 컨텍스트 또는 연결된 시스템에서 가져온 개인정보, 자격 증명, 기업 비밀 또는 기타 기밀 정보를 출력으로 드러냅니다.

  3. LLM03
    과도한 자율성

    애플리케이션이 작업에 필요한 수준보다 더 많은 기능, 권한 또는 자율성을 모델에 부여해 조작되거나 잘못된 출력이 실제 피해를 일으킵니다. 이 항목은 2025년 6위에서 2026년 3위로 올라갔습니다.

  4. LLM04
    공급망

    타사 모델, 데이터셋, 어댑터, 패키지, 플러그인은 변조되거나 취약할 수 있으며, 이러한 위험이 애플리케이션으로 이어집니다.

  5. LLM05
    데이터 및 모델 오염

    공격자는 사전 학습, 파인튜닝 또는 임베딩에 사용되는 데이터를 조작해 백도어, 편향 또는 잘못된 동작을 심고, 이러한 문제가 나중에 프로덕션에서 드러나게 합니다.

  6. LLM06
    무제한 리소스 소비

    요청 수, 입력 크기 또는 컴퓨팅 리소스에 제한이 없으면 공격자는 비용을 급증시키고, 리소스를 고갈시키거나, 대량의 쿼리로 모델을 복제할 수 있습니다.

  7. LLM07
    허위 정보

    모델이 그럴듯해 보이는 허위 또는 오해를 부르는 출력을 생성하고, 사용자나 후속 시스템이 이를 검증하지 않은 채 사용합니다.

  8. LLM08
    숨겨진 컨텍스트 노출

    이전 명칭은 시스템 프롬프트 유출입니다. 사용자에게 공개해서는 안 되는 시스템 프롬프트, 숨겨진 지침 및 기타 컨텍스트를 추출해 그 안에 포함된 규칙, 로직 또는 비밀이 드러날 수 있습니다.

  9. LLM09
    벡터 및 임베딩 취약점

    임베딩 생성, 저장 및 검색 과정의 결함을 악용하면 공격자가 콘텐츠를 주입하거나, 테넌트 간 데이터를 유출하거나, 원본 텍스트를 복원할 수 있습니다. RAG 시스템이 특히 큰 영향을 받습니다.

  10. LLM10
    부적절한 출력 처리

    모델 출력이 검증되거나 인코딩되지 않은 채 브라우저, 셸, 데이터베이스 또는 다른 구성 요소로 전달되면 XSS, SQL 인젝션, 코드 실행 및 데이터 유출로 이어질 수 있습니다.

방어책

각 출처를 연결한 방어책 15가지입니다. 어느 하나만으로 모든 공격을 막을 수는 없으므로 여러 방어책을 함께 적용하세요.

치명적인 삼박자를 끊으세요

Simon Willison의 원칙: 비공개 데이터를 읽고, 신뢰할 수 없는 콘텐츠를 접하며, 데이터를 외부로 보낼 수 있는 에이전트는 읽는 텍스트를 통해 공격당할 수 있습니다. 각 에이전트 또는 세션에서 이 세 가지 중 하나 이상을 제거하세요. 예를 들어 공개 이슈를 분류하는 에이전트에는 비밀 정보에 대한 접근 권한을 주지 않고, 비밀 정보를 다루는 에이전트에는 외부 전송 채널을 제공하지 마세요.

simonwillison.net

신뢰할 수 없는 입력을 받은 뒤 에이전트의 권한을 제한하세요

에이전트 보안 설계 패턴 연구에서 강조하는 원칙은 하나입니다. 에이전트가 신뢰할 수 없는 입력을 받아들인 뒤에는 해당 입력으로 중요한 작업을 실행할 수 없어야 합니다. 패턴으로는 action-selector, plan-then-execute, dual LLM, context minimisation이 있습니다. 워크플로마다 하나를 선택하세요. 예를 들어 에이전트가 신뢰할 수 없는 데이터를 읽기 전에 계획을 확정할 수 있습니다.

arxiv.org

CaMeL로 데이터 흐름 추적

CaMeL은 에이전트를 두 부분으로 나눕니다. 권한이 있는 플래너는 사용자 요청을 바탕으로 코드를 작성하고, 격리된 모델은 신뢰할 수 없는 데이터를 처리합니다. 격리된 쪽에서 나온 값에는 capability 태그가 붙으며, 도구를 실행하기 전에 정책이 이 태그를 확인합니다. 논문에서 CaMeL은 검증 가능한 보안을 제공하면서 AgentDojo 작업의 77%를 해결했습니다. 방어 기능이 없는 에이전트의 해결률은 84%였습니다.

arxiv.org

최소 권한 인증 정보 사용

기본적으로 에이전트에는 읽기 전용의 프로젝트 범위 접근 권한만 부여하고, Supabase에서 행 수준 보안을 우회하는 admin 또는 service_role 키는 절대 사용하지 마세요. CI 및 저장소 토큰은 해당 작업 하나에만 사용할 수 있도록 범위를 제한하세요. Amazon Q Developer 사고는 CodeBuild에서 범위가 과도하게 넓은 GitHub 토큰을 사용한 데서 비롯됐습니다.

supabase.comaws.amazon.com

중요한 작업에는 승인 요구

쓰기, 삭제, 전송 또는 결제가 수반되는 도구 호출은 사람이 확인하도록 하고, 응답이 없으면 거부하세요. Supabase는 MCP 도구 호출을 수동으로 승인하도록 권장합니다. OpenClaw에서는 tools.exec.ask를 always로 설정하고 askFallback은 deny로 유지하세요. 검토자가 실제 실행 내용을 확인할 수 있도록 전체 인수를 표시하세요.

supabase.comdocs.openclaw.ai

코드와 도구 실행을 샌드박스 처리

셸 명령과 생성된 코드는 인증 정보가 없고 작업공간에만 접근할 수 있는 컨테이너나 VM에서 실행하세요. OpenClaw는 샌드박스가 꺼져 있고 게이트웨이 호스트의 tools.exec.security가 full로 설정된 상태로 제공됩니다. 따라서 샌드박스를 켜고, exec 보안을 deny 또는 allowlist로 설정하고, fs.workspaceOnly를 true로 설정하고, elevated 모드는 꺼 두세요. openclaw sandbox explain으로 설정 결과를 확인하세요.

docs.openclaw.aidocs.openclaw.ai

아웃바운드 네트워크 접근 제한

에이전트와 MCP 서버의 아웃바운드 트래픽은 기본적으로 차단하고, 각 서비스에 필요한 호스트만 허용하세요. 누구나 콘텐츠를 게시할 수 있는 멀티테넌트 호스트로의 fetch를 자동 승인하지 마세요. CVE-2026-54316에서는 이로 인해 huggingface.co가 데이터 유출 경로로 악용됐습니다. postmark-mcp에서 확인된 것처럼 이메일 서버는 메일 API에만 연결할 수 있어야 합니다.

nvd.nist.govkoi.ai

제어 플레인을 인터넷에 노출하지 않기

에이전트 게이트웨이, 대시보드, 디버그 프록시는 loopback에 바인딩하고, 최소 24자 길이의 토큰을 요구하세요. 예를 들어 openssl rand -hex 32로 토큰을 생성할 수 있습니다. 원격 접속에는 SSH 터널이나 Tailscale Serve를 사용하고, Tailscale Funnel은 비밀번호 인증을 사용할 때만 쓰세요. openclaw security audit --deep를 정기적으로 실행하세요.

docs.openclaw.aidocs.openclaw.aidocs.openclaw.ai

MCP 토큰 대상 확인

MCP 권한 부여 사양에 따르면 서버는 자신을 대상으로 발급되지 않은 액세스 토큰을 거부해야 하며, 클라이언트의 토큰을 업스트림 API에 전달해서는 안 됩니다. 클라이언트는 RFC 8707 리소스 표시자를 보내 토큰이 서버 하나에만 연결되도록 합니다. 프록시 서버는 각 클라이언트의 동의를 받아야 합니다. 그렇지 않으면 confused deputy가 될 수 있습니다.

modelcontextprotocol.iomodelcontextprotocol.io

MCP 세션과 테넌트 격리

클라이언트 간에 서버와 전송 인스턴스를 공유하지 말고, 세션마다 별도의 인스턴스를 만드세요. 각 세션과 작업을 이를 생성한 인증된 주체에 연결하고, 모든 요청에서 이 연결을 확인하세요. 2026년 MCP SDK 권고 2건은 모두 상태를 공유하거나 주체에 연결하지 않은 데서 비롯됐습니다.

github.comgithub.com

스킬, 플러그인, MCP 서버 검증

정확한 버전을 고정하고, 업데이트할 때마다 diff를 확인하고, VirusTotal 및 ClawHub 보안 감사 상태와 같은 스캐너 판정을 확인하세요. 서버를 승인할 때 도구 설명의 해시를 저장하고, 설명이 바뀌면 알림을 보내도록 설정하세요. 이렇게 하면 rug pull을 감지할 수 있습니다. OpenClaw는 설치 시 기본 차단 기능을 제공하지 않으므로 security.installPolicy를 직접 설정하세요.

openclaw.aidocs.openclaw.aiinvariantlabs.aidocs.openclaw.ai

에이전트에 메시지를 보낼 수 있는 사용자 제어

DM 접근은 페어링이나 허용 목록으로 제한하고, 그룹 채팅에서는 에이전트가 동작하기 전에 멘션을 요구하세요. 발신자끼리 컨텍스트를 공유하지 않도록 session.dmScope를 per-channel-peer로 설정하세요. 에이전트에 메시지를 보낼 수 있는 사람은 누구나 지시를 시도할 수 있으므로 발신자 목록도 공격 표면의 일부입니다.

docs.openclaw.aidocs.openclaw.ai

신뢰할 수 없는 CI 실행에서 비밀 정보 보호

외부 사용자가 pull request, 이슈 또는 댓글로 트리거할 수 있는 워크플로에서는 저장소 비밀 정보를 사용하는 에이전트를 실행하지 마세요. 이러한 이벤트의 제목, 설명, 댓글은 모두 악의적일 수 있는 입력으로 취급하세요. 단계에 비밀 정보가 꼭 필요하다면 유지 관리자가 실행을 승인한 뒤에만 실행하세요.

oddguan.com

모델 출력을 신뢰할 수 없는 데이터로 취급

모델 출력을 렌더링하기 전에 인코딩하거나 정제하고, 셸, SQL 쿼리 또는 브라우저에 검증 없이 전달하지 마세요. Markdown 이미지와 외부 도메인 링크의 자동 로드를 차단하고, 엄격한 Content Security Policy를 설정하세요. EchoLeak은 자동으로 로드되는 URL을 통해 데이터를 유출했습니다.

genai.owasp.orgnvd.nist.gov

에이전트 서명을 확인한 뒤 권한 부여

사이트나 API를 호출하는 에이전트를 식별하려면 운영자가 /.well-known/http-message-signatures-directory에 게시한 키를 사용해 Web Bot Auth 서명을 확인하세요. ChatGPT agent의 서명은 Signature-Agent https://chatgpt.com입니다. 유효한 서명으로 확인할 수 있는 것은 에이전트의 운영자뿐입니다. 어떤 사용자가 요청했는지, 그 사용자가 무엇을 할 수 있는지는 알 수 없으므로 요청마다 별도로 권한을 부여하세요.

datatracker.ietf.orghelp.openai.com

에이전트 보안 관련 질문

AI 에이전트의 프롬프트 인젝션이란 무엇인가요?

프롬프트 인젝션은 웹페이지, 이메일, 도구 설명 등 데이터로 전달된 텍스트를 모델이 지시로 받아들이는 현상입니다. 에이전트에서는 이런 지시로 인해 사용자의 자격 증명으로 실행되는 도구 호출이 발생할 수 있습니다. OWASP는 이를 LLM01:2026으로 분류하며, Agent Goal Hijack (ASI01)은 에이전트 환경에서의 프롬프트 인젝션을 다룹니다.

AI 에이전트의 치명적인 삼요소란 무엇인가요?

Simon Willison이 만든 용어로, 비공개 데이터에 접근할 수 있고, 신뢰할 수 없는 콘텐츠에 노출되며, 외부와 통신할 수 있는 에이전트를 뜻합니다. 이 세 가지가 모두 있으면 프롬프트 인젝션으로 데이터를 읽어 외부로 전송할 수 있습니다. 2025년 Supabase MCP 토큰 유출은 대표적인 사례입니다.

MCP 서버를 안전하게 보호하려면 어떻게 해야 하나요?

서버용으로 발급되지 않은 액세스 토큰은 거부하고, 클라이언트의 토큰을 업스트림 API로 전달하지 마세요. 세션마다 서버와 전송 인스턴스를 별도로 만들고, 세션과 작업을 인증된 사용자에 연결하세요. TypeScript SDK는 1.26.0 이상, Python SDK는 1.27.2 이상을 사용하세요. 이 버전부터 클라이언트 간 응답 유출과 세션 하이재킹 문제가 수정되었습니다.

더 나은 시스템 프롬프트로 프롬프트 인젝션을 막을 수 있나요?

시스템 프롬프트에 의존하지 마세요. 에이전트 설계 패턴 연구에 따르면, 에이전트가 신뢰할 수 없는 입력을 받아들인 뒤에는 그 입력이 중대한 작업을 유발하지 못하도록 제한해야 합니다. 기능 추적으로 이를 강제하는 CaMeL은 입증 가능한 보안을 유지하면서 AgentDojo 작업의 77%를 해결했습니다. 방어 기능이 없는 에이전트의 해결률은 84%였습니다.

OWASP LLM Top 10과 Agentic Top 10은 어떻게 다른가요?

2026년판이 4 August 2026에 발표된 OWASP Top 10 for LLM Applications는 언어 모델 기반 애플리케이션 전반의 위험을 다룹니다. 9 December 2025에 발표된 OWASP Top 10 for Agentic Applications는 모델이 계획을 세우고, 도구를 사용하고, 메모리를 유지하고, 다른 에이전트와 통신할 때 추가되는 위험을 다룹니다. 에이전트를 만드는 개발자는 대개 두 가지 모두를 참고해야 합니다.

OpenClaw 게이트웨이를 인터넷에 공개해도 안전한가요?

아니요. gateway.bind의 기본값인 loopback을 유지하고, 원격 액세스가 필요하면 SSH 터널이나 Tailscale Serve를 사용하세요. OpenA2A는 1 September 2026 기준으로 인터넷에 노출된 게이트웨이 192,492개를 집계했습니다. CVE-2026-25253은 loopback 전용으로 설치해도 신속한 패치가 필요하다는 점을 보여 줬습니다.

출처

  1. genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/
  2. genai.owasp.org/download/52117
  3. genai.owasp.org/resource/owasp-genai-llm-top-10-2026/
  4. github.com/GenAI-Security-Project/GenAI-LLM-Top10