Numbat을 통한 Perplexity 클라이언트 엔드포인트의 에이전트 보안
Numbat은 클라이언트 엔드포인트를 위한 Perplexity의 오픈 소스 에이전트 보안 제품군입니다. macOS, Linux, Windows에서 위험한 AI 에이전트 행동을 탐지, 방지 및 조사합니다.
AI 에이전트가 유용하려면 보안이 확보되어야 합니다. 모델 및 시스템 기능이 발전함에 따라 사용자를 보호하기 위한 경계 수준도 높아져야 합니다.
초기 에이전트 보안 연구는 프롬프트 인젝션 및 기타 형태의 적대적 입력에 초점을 맞추었습니다. 그러나 최근 에이전트 자율성의 발전으로 인해 적대적 입력이나 인간 공격자의 존재를 가정할 필요가 없는 보안 사고가 발생하고 있습니다.
오히려 이러한 목표를 달성하는 방법에 대한 처방적 지침 없이 상위 수준의 목표를 추구하도록 지시받은 에이전트는 적대자로 변할 수 있습니다. 이는 에이전트가 사용자가 지정한 목표에 대응하여 사용자가 의도하지 않았고 승인하지 않았을 행동 방침을 선택할 때 발생합니다. 이러한 사고는 불과 몇 달 전까지만 해도 이론적인 수준에 불과했지만, 빠르게 실질적인 우려 사항이 되었습니다.
이러한 동작은 모델 계층 내에서 완전히 패치할 수 없으므로, 강력한 방어는 외부 세계에 대한 모델의 인터페이스 역할을 하는 에이전트 하네스를 포함하여 주변 시스템에 구축되어야 합니다. 당사는 에이전트 관련 사고를 방지, 탐지 및 완화하는 데 도움을 주는 에이전트 보안 제품군인 Numbat을 오픈 소스로 공개합니다. Numbat은 엔터프라이즈 클라이언트 엔드포인트에서 일반적으로 발견되는 에이전트 하네스를 식별하고 직접 통합하며 보안 규칙을 시행하고 신속한 탐지 및 대응을 가능하게 합니다.
소개
에이전트 도입은 개발자, 채택자, 방어자 모두에게 새로운 보안 문제를 제기합니다. 엔터프라이즈 시스템 및 데이터에 대한 권한 있는 액세스 권한을 가진 클라이언트 엔드포인트에 기업이 에이전트를 직접 배포할 때 특히 그렇습니다.
CLI 기반 또는 데스크톱 앱 기반 코딩 에이전트와 같은 클라이언트 엔드포인트에서의 에이전트 배포에는 다양한 수준의 샌드박스 및 격리가 수반됩니다. 사용자는 수많은 사용 사례에 이러한 에이전트를 활용하며, 각 사용 사례에는 엔드포인트 자체 또는 엔드포인트에서 액세스할 수 있는 다른 시스템에 영향을 줄 수 있는 고유한 수반 작업 공간이 있습니다. 점점 더 에이전트는 몇 시간 또는 며칠 동안 자율적으로 작동할 것으로 기대됩니다. 이러한 워크플로우의 경우 많은 사용자가 에이전트 작업 승인을 분류기에 위임하거나 --dangerously-skip-permissions 및 --yolo와 같이 우려스러운 이름의 구성 플래그를 사용하여 승인 절차를 완전히 우회하는 것을 선택합니다. 에이전트 사용 사례와 구성의 다양성, 그리고 코딩 에이전트가 권한 있는 엔드포인트에서 수행할 수 있는 작업의 범위가 결합되어 보안 팀의 사전 예방적 관리가 필요한 위험 프로필이 만들어집니다.
오늘 당사는 AI 에이전트의 위험한 활동을 탐지, 조사 및 방지하기 위해 구축한 오픈 소스 에이전트 보안 제품군인 Numbat을 출시합니다. 더 많은 기업이 프론티어 에이전트 제품을 채택함에 따라 Numbat은 보안 팀이 그에 따른 보안 문제에 발맞출 수 있도록 지원합니다. 이 제품은 가장 널리 사용되는 클라이언트 측 에이전트 하네스 각각과 통합되면서 모든 하네스에서 일관된 인터페이스를 노출합니다. 따라서 Numbat은 사용자가 의존하는 각 개별 에이전트에 대한 맞춤형 안전 장치 및 모니터링 도구를 구축해야 하는 보안 팀의 부담을 덜어줍니다. Numbat은 NVIDIA 및 기타 조직과 함께하는 Open Secure AI Alliance에 Perplexity가 멤버로 참여함에 따라 방어자 생태계에 제공됩니다.
이 문서는 Numbat을 촉발한 보안 과제에 대한 논의로 시작합니다. 이어서 Numbat의 설계 및 아키텍처를 제시하고, Perplexity의 자체 엔드포인트 수천 곳에 Numbat을 배포하며 얻은 교훈을 공유합니다.
취약성 환경 파악
AI 에이전트 보안 사고 환경은 빠르게 진화하고 있습니다. 기존 에이전트 보안 문헌의 대부분은 인젝션 공격에 초점을 맞추고 있으며, 여기서 악의적인 페이로드가 모델 프롬프트나 컨텍스트에 도입되어 에이전트가 부적절한 행동을 하도록 혼란을 줍니다. 인젝션 공격과 안전 장치는 광범위하게 연구되었으며, Perplexity를 포함한 에이전트 개발자들은 인젝션 공격에 대비해 점점 더 강력한 방어책을 고안해 왔습니다.
하지만 AI 에이전트가 보안 사고를 일으키기 위해 악의적인 페이로드가 필요한 것은 아닙니다. 사실, 공격자의 존재를 전혀 가정할 필요도 없습니다. 관리자가 승인한 도구를 사용하여 신뢰할 수 있는 환경 내에서 작동하는 신뢰할 수 있는 에이전트라도, 단지 작업을 완료하려고 너무 열심히 노력하다가 해로운 행동을 취할 수 있습니다.
연구자들은 이러한 실패 모드를 “우발적 멜트다운(accidental meltdown)”이라고 설명합니다. 즉, 적대적인 입력이 아니라 일상적인 환경 오류로 인해 트리거되는 해로운 에이전트 행동입니다. 누락된 파일, 실패한 API 요청, 만료된 자격 증명 또는 권한 거부로 인해 에이전트가 해결 방법을 찾을 수 있습니다. 원래 사용자가 지정한 목표를 추구하는 과정에서 에이전트는 무단 정찰, 액세스 제어 변경, 비밀 정보 발견 또는 데이터 반출을 통해 보안 경계를 넘어설 수 있습니다. 에이전트가 공격자에 의해 이용되는 것이 아니라 에이전트 자체가 공격자가 되는 것입니다. 더욱이 이 공격은 내부 시스템, 외부 시스템 또는 둘 모두를 대상으로 할 수 있으며, 공격이 이미 진행 중인 상태가 되기 전까지는 알 방법이 없습니다.
최초로 널리 보고된 우발적 멜트다운은 이번 달 OpenAI가 Hugging Face의 운영 인프라를 손상시킨 에이전트 주도 공격을 공개하면서 발생했습니다. 사전 릴리스 GPT 모델에 대한 평가 중, 모델은 제공된 컨텍스트로는 평가를 진행할 수 없음을 발견했습니다. 이 교착 상태를 해결하기 위해 모델은 샌드박스 테스트 환경을 벗어나 Hugging Face로부터 평가 답변을 반출할 방법을 찾았습니다. 모델은 하네스를 활용하여 의도된 네트워크 제약을 우회하고, 샌드박스 경계를 넘어 권한을 상승시키며, 비밀 정보를 획득하고, 안전한 Hugging Face 시스템에 액세스하는 등 모든 작업을 오직 평가를 해결한다는 좁은 목표를 달성하기 위해 수행했습니다.
멜트다운에는 의도하지 않은 시스템 변형 및 삭제도 포함됩니다. 외부 시스템을 침해하는 것보다는 덜 심각할 수 있지만, 이러한 현상은 코딩 에이전트의 파워 유저에게 더 빈번하고 두드러지게 나타납니다. 프로덕션 데이터베이스나 홈 디렉토리를 삭제하는 것은 모든 개발자의 최악의 악몽이며, 에이전트는 실행 전반에 걸쳐 이러한 행동을 피할 수 있어야 합니다.
AI 연구자들은 모델 자체 내에서 이러한 행동을 완화하기 위해 노력하고 있습니다. 이러한 노력은 확실히 가치가 있지만, 연구 커뮤니티의 많은 사람들은 강력한 보안 속성을 위해 모델을 훈련시키는 것과 점점 더 복잡한 작업을 수행하도록 동일한 모델을 훈련시키는 것 사이의 근본적인 긴장을 인식하고 있습니다. 모델 계층에만 초점을 맞춘 방어책이 멜트다운 위험을 허용 가능한 수준으로 줄일 가능성은 낮다고 봅니다.
네이티브 하네스 통합을 통한 코딩 에이전트 보안
결론적으로 에이전트 보안은 모델, 사용자 또는 작업 수준의 안전 장치에만 의존할 수 없습니다. 오히려 보안 팀은 에이전트가 클라이언트 엔드포인트에서 실제로 무엇을 하는지에 대한 가시성과 위험한 작업이 실행되기 전에 이를 중지할 수 있는 제어 기능이 필요합니다. 이것들은 에이전트 하네스와 긴밀하게 통합되어야 하는 시스템 수준의 제어 기능입니다.
Numbat은 주요 클라이언트 측 에이전트 하네스에 원활하게 연결되는 가벼운 정적 Go 바이너리 형태로 이러한 제어 기능을 제공합니다. 이 제품은 에이전트 하네스 및 실행 환경 전반에 걸쳐 실시간 모니터링, 정책 시행 및 포렌식 복구를 제공합니다.
Numbat과 에이전트 하네스 간의 핵심 통합 지점은 후크, 세션 아티팩트 및 OTLP 텔레메트리입니다. 각각에 대해 차례로 논의하겠습니다.
후크
거의 모든 코딩 에이전트는 후크 하위 시스템을 보유하고 있습니다. 후크를 사용하면 에이전트가 에이전트 실행 수명 주기 내의 사전 지정된 지점에서 서브루틴을 결정론적으로 실행할 수 있습니다. 에이전트 사용자는 일반적으로 모델에 예측 가능한 방식으로 추가 컨텍스트를 제공하고, 테스트 및 검증 루프를 구현하며, 에이전트 기능에 대한 기타 향상을 수행하도록 후크를 구성합니다.
이러한 목적으로 후크를 매력적으로 만드는 동일한 결정론적 속성이 탐지 및 대응에도 유용하게 만듭니다. 잠재적으로 우려되는 이벤트의 대부분을 포착하는 것으로는 대개 충분하지 않습니다. 오히려 탐지 및 대응을 위해서는 모든 발생 사례를 커버해야 합니다. Numbat은 여러 유형의 후크를 구성하여 보안 팀과 IT 관리자가 풍부한 탐지 로직을 구현할 수 있도록 합니다.
대부분의 코딩 에이전트에서 특정 유형의 후크(“사전 작업” 후크라고도 함)는 에이전트의 다음 작업 실행을 차단할 수도 있습니다. 이러한 사전 작업 후크를 사용하여 Numbat은 탐지 로직뿐만 아니라 멜트다운이 애초에 발생하는 것을 막기 위한 예방적 보안 규칙도 구현할 수 있습니다.
세션 아티팩트
후크는 실시간으로 탐지 및 예방 로직을 구현하는 강력한 수단입니다. 하지만 이 로직은 코드로 지정할 수 있어야 합니다. 종종 에이전트 보안 사고는 소스 코드로 축소하기는커녕 사전에 예측할 수 없었던 형태를 띱니다. 따라서 Numbat은 세션 아티팩트를 소급하여 액세스하고 분석하는 기능도 갖추고 있습니다.
세션 아티팩트에는 다양한 유형의 로그 및 진단 정보가 포함됩니다. 아마도 가장 중요한 로그 유형은 에이전트의 작업 순서를 결정하는 LLM 대화를 기록하는 세션 성적표(transcript)일 것입니다. 코딩 에이전트의 파워 유저는 하네스에서 제공하는 명령을 통해 추가 분석을 위해 세션 성적표를 내보내는 데 이미 익숙합니다. 그러나 이러한 내보내기는 일반적으로 평문 형식이며, 일관되고 예측 가능한 스키마를 갖춘 기계 판독 가능한 로그를 필요로 하는 보안 팀에는 적합하지 않습니다.
따라서 Numbat은 파일 시스템 자체에서 세션 아티팩트를 직접 검색합니다. 대부분의 클라이언트 측 에이전트 하네스는 파일 시스템($HOME 아래의 에이전트별 점 디렉토리 내)에 원본 아티팩트를 저장하므로, 파일 시스템을 활용하는 것이 가장 사용하기 쉽고 원본 상태의 데이터에 도달하는 가장 직접적인 경로입니다. Numbat을 사용하는 보안 팀은 numbat scan을 통해 클라이언트 엔드포인트에서의 로컬 처리 또는 비동기식 원격 분석을 위해 이러한 아티팩트를 정규화된 NDJSON 타임라인 형식으로 수집할 수 있습니다. 세션 아티팩트는 정적이고 독립적인 기록이므로, Numbat은 Numbat이 설치되기 훨씬 전에 발생한 세션에 대해서도 이러한 타임라인을 재구성할 수 있습니다.
OTLP 텔레메트리
대부분의 클라이언트 측 에이전트 하네스는 OpenTelemetry 프로토콜(OTLP)을 통해 광범위한 텔레메트리를 제공합니다. 이 텔레메트리는 일반적으로 후크나 세션 아티팩트를 통해 사용할 수 있는 것 이상의 많은 신호를 제공합니다.
Numbat은 numbat collect 명령을 통해 OTLP 수신기로 기능할 수 있습니다. 이 명령은 코딩 에이전트가 다운스트림 분석을 위해 OTLP 텔레메트리를 보내는 서버를 시작합니다. 중요하게도, 이 서버는 로컬이며 기본적으로 localhost에서만 수신하므로 모든 텔레메트리가 기본적으로 장치에 남아 있습니다. 그런 다음 보안 관리자는 기록된 텔레메트리를 어떻게 처리할지 결정할 수 있으며, 여기에는 가벼운 장치 내 처리 구현, numbat ship을 통한 원격 처리, 또는 ClickHouse와 같은 분석 플랫폼에서의 더 심층적인 분석이 포함될 수 있습니다.
Perplexity 내 Numbat 배포
Perplexity 내부에서 우리는 Claude Code, Codex, OpenCode 및 Pi를 포함한 클라이언트 측 코딩 에이전트에 대한 엔지니어의 사용을 보호하기 위해 Numbat을 사용합니다.
우리의 예방 및 탐지 노력 모두 각 에이전트의 후크 하위 시스템을 통해 구현되는 Numbat 규칙을 광범위하게 사용합니다. 우리는 우리 자신의 필요에 맞는 여러 가지 기본적인 규칙을 공식화했으며, 그중 다수를 Numbat의 52개 내장 규칙의 일부로 배포했습니다. 이러한 규칙은 11개의 행동 범주와 비밀 액세스, 반출, 권한 상승 및 측면 이동과 같은 일련의 다단계 시퀀스 탐지로 구성됩니다. 규칙은 정규화된 이벤트에 대해 CEL 표현식을 사용하며, 운영자는 Numbat의 코드를 변경하지 않고도 자신의 규칙과 테스트를 추가할 수 있습니다.
예를 들어, 내장된 privilege.sudoers_tamper 규칙은 sudoers 정책에 대한 쓰기, visudo 사용 및 NOPASSWD 부여 설치 시도를 탐지합니다. 이는 제한된 에이전트 프로세스를 영구적인 루트 액세스 권한으로 바꿀 수 있는 고신호 작업입니다.
# privilege.sudoers_tamper (simplified for readability)
id: privilege.sudoers_tamper
severity: high
expr: |
(
event.event_type == "file.write" &&
event.file_path.matches("(^|/)etc/sudoers$|(^|/)etc/sudoers\\.d/[^/]+$")
) || (
event.event_type == "command.exec" &&
event.command.matches("\\bvisudo\\b|\\bNOPASSWD\\s*:")
)개별 명령이 그 자체로 악의적으로 보이지 않는 경우도 있으므로 Numbat은 에이전트 세션 내의 시퀀스를 상관관계로 분석하기도 합니다. 내장된 chain.secret_manager_read_then_egress 규칙은 에이전트가 일반적인 비밀 관리 도구에서 값을 읽고 나중에 데이터가 포함된 curl 또는 wget 요청을 시도하는 경우를 탐지합니다. 비밀 읽기는 합법적일 수 있습니다. 아웃바운드 요청도 합법적일 수 있습니다. 하지만 이 둘이 순차적으로 결합되면 조사가 필요합니다.
# chain.secret_manager_read_then_egress (simplified for readability)
id: chain.secret_manager_read_then_egress
severity: high
sequence:
within_events: 64
steps:
- expr: |
event.event_type == "command.exec" &&
event.command.matches("secretsmanager|get-secret|vault read")
- expr: |
event.event_type == "command.exec" &&
event.command.matches("curl.*(--data|--upload-file)|wget.*--post")전체 플릿(fleet) 전반의 Numbat 관리 및 모니터링
개발자 엔드포인트의 공급망 노출에 대한 오픈 소스 스캐너인 Bumblebee와 마찬가지로, Numbat은 MDM을 통해 당사 플릿 전체에 배포됩니다. 각 Numbat은 에이전트 활동을 로컬에 기록하고 구조화된 텔레메트리를 중앙 집중식 보안 시스템으로 전송합니다.
거기에서 Perplexity Computer는 정기적인 일정에 따라 의심스럽거나 악의적인 행동에 대해 최근 Numbat 결과와 감사 로그를 검토합니다. 탐지 내용을 조사하고, 관련 에이전트 세션을 재구성하며, Numbat이 차단한 작업에 대해 추가적인 면밀한 조사를 수행합니다.
또한 Computer는 당사 커버리지의 격차를 찾습니다. 새로운 행동을 분석하고, Numbat의 탐지 개선 사항을 제안하고, 해당 변경 사항을 테스트하며, 인간의 검토를 위해 풀 리퀘스트를 엽니다. 일단 승인 및 배포되면, 이러한 규칙은 전체 플릿에 대한 모니터링을 개선하고 다음 조사를 위한 더 나은 증거를 생성합니다.
이는 자체 개선되는 보안 플라이휠을 만듭니다. 에이전트는 활동을 생성하고, Numbat은 그 활동을 정규화된 타임라인과 텔레메트리로 변환하며, Computer는 규칙을 조사 및 개선하고, 인간이 검토한 업데이트는 향후 에이전트 세션을 보호하는 제어 기능을 강화합니다.
결론
Perplexity는 AI 에이전트가 로컬, 클라우드, 하이브리드 등 모든 유형의 환경에서 실행될 것이라고 믿습니다. 에이전트 하네스와 실행 환경의 각 조합은 고유한 보안 문제를 제기하며, 조합적 복잡성은 대역폭이 부족한 보안 팀을 압도할 위협이 됩니다. 에이전트 멜트다운 및 기타 새로운 취약점은 보안 상황을 훨씬 더 복잡하게 만듭니다.
에이전트 시스템 자체에 상주하는 방어책은 에이전트가 어디에서 실행되든 사용자의 보안 태세를 개선할 수 있습니다. 이것이 바로 Numbat이 제공하는 것입니다. 즉, 방어자가 실시간으로 우려스러운 행동을 방지, 탐지 및 대응할 수 있도록 하는 긴밀하게 통합된 에이전트 안전 장치입니다. Numbat과 Perplexity Computer를 결합하면 방어자가 앞서 나갈 수 있도록 지원하는 강력한 에이전트 보안 플랫폼이 구축됩니다.
Numbat은 오늘부터 macOS, Linux 및 Windows용 오픈 소스 프로젝트로 제공됩니다. 당사의 자체 클라이언트 엔드포인트는 Numbat으로 보호되어, Perplexity 팀 구성원들이 광범위한 작업과 긴 기간에 걸쳐 에이전트를 자신 있게 사용할 수 있도록 합니다. 모든 곳의 보안 팀이 에이전트 배포를 보호하고 보호하기 위한 Numbat의 시스템 수준 접근 방식을 활용하시길 바랍니다.
인용
@online{perplexity2026SecuringAgentsAcrossPerplexitySClientEndpointsWithNumbat,
author = {{Perplexity} and Adel Karimishiraz and Bex Brooker and Phi Hoang and Jerry Ma},
title = {{Securing agents across Perplexity's client endpoints with Numbat}},
date = {2026-07-29},
url = {https://perplexity.coolkeypoint.com/hub/blog/securing-agents-across-perplexity-s-client-endpoints-with-numbat}
}