메뉴

Star on GitHub · 3.2k

에이전트 펜테스트

AI 에이전트가 테스터의 자리를 맡습니다. 사람처럼 대상 위에서 계획하고 탐색하며 적응한 뒤, 검증된 짧은 발견 목록을 사람에게 건넵니다. 그것이 실제로 무엇을 뜻하고 어떻게 동작하며, 루프의 어디에서 여전히 사람이 필요한지 살펴봅니다.

무엇인가

에이전트는 고정된 스크립트를 실행하는 대신 목표를 향해 추론하는 프로그램입니다. 대상과 목적——“여기서 공격자가 실제로 도달할 수 있는 것을 찾아라”——을 주면, 이미 본 것을 바탕으로 다음에 무엇을 시도할지 정합니다. 공격면을 매핑하고, 가설을 세우고, 검증하고, 응답을 읽고, 수정하고, 나아갑니다. 에이전트 펜테스트는 바로 이 루프를 공격 보안에 겨눈 것입니다.

스크립트가 아니라 추론한다: 고정된 세트가 아니라 목표를 향한 추론

그것은 오늘날 팀이 쓰는 두 가지 사이에 있습니다. 스캐너는 고정된 검사 묶음을 돌려 시그니처에 맞는 모든 것을 보고합니다——빠르지만 맥락에 눈멀고 오탐으로 시끄럽습니다. 사람 펜테스터는 특정 앱과 그 비즈니스 로직을 추론합니다——느리고 비싸며 한 주의 스냅숏입니다. 에이전트는 스캐너에 가까운 도달 범위로 펜테스터의 추론을 지향하고, 판단이 필요한 결정은 사람에게 맡깁니다.

공격 보안이 정체된 이유

보안의 대부분은 현대화되었습니다——지속적 통합, 클라우드, 자동 방어. 공격 보안은 대체로 그렇지 못했습니다. 여전히 주로 수작업 서비스로 제공되며, 사라지지 않은 세 가지 문제를 안고 있습니다.

  • 시점 기반. 펜테스트는 테스트한 주의 앱을 묘사할 뿐입니다. 다음 배포가 보고서를 무효로 만들 수 있습니다.
  • 확장이 어렵다. 뛰어난 테스터는 드물고 비싸서 깊이가 배급됩니다. 많은 작업이 주니어나 외주에 기대어 품질보다 발견 수를 최적화합니다.
  • 보안보다 규정 준수. 테스트는 종종 시스템을 진짜로 깨려는 시도가 아니라 감사를 위한 체크 항목이 됩니다.

지금까지 자동화의 한계

자동화 도구는 대상이 서로 비슷한 인프라에서 이 격차의 일부를 메웠습니다. 웹 앱에서는 일관되게 모자랍니다. 이유는 라스트 마일 문제입니다. 앱은 저마다 다릅니다. 중요한 결함——깨진 접근 제어, 비즈니스 로직 결함, 연쇄 취약점——은 특정 엔드포인트가 무엇을 위한 것인지에 대한 이해에 달려 있고, 이는 시그니처로 부호화할 수 없습니다.

이것은 옛 DAST 범주가 부딪힌 것과 같은 벽입니다. 패턴을 표시할 수는 있어도, 그것이 여기서 중요한지, 다음에 무엇을 할지는 추론하지 못했습니다. 그래서 팀은 수작업 테스트에 계속 비용을 치렀습니다——도구가 돌지 않아서가 아니라, 생각하지 못해서였습니다.

에이전트가 바꾸는 것

언어 모델은 빠진 조각을 실용으로 만들었습니다. 앱의 맥락을 쥐고 그에 맞춰 테스트를 적응시키는 시스템입니다. 신중히 쓰면, 지금까지 상충하던 세 가지를 동시에 가질 수 있는 속성으로 바꿉니다.

  • 연 1회가 아니라 지속적으로. 변경마다 테스트를 돌릴 수 있어, 결과가 지난 분기 버전을 묘사하는 대신 앱을 따라갑니다.
  • 시그니처 매칭이 아니라 맥락 인식. 에이전트는 앱의 실제 동작에서 출발합니다. 어떤 객체가 있고, 어떤 역할이 그것에 도달하며, 특정 호출이 무엇을 위한 것인지.
  • 백로그가 아니라 짧은 검증 목록. 산출물은 재현 단계가 딸린, 진짜 악용 가능한 소수의 문제여야 합니다——정렬되지 않은 수천 건의 “잠재적” 발견이 아니라.

어떻게 동작하는가

이를 신뢰할 수 있게 만드는 것은 바로 모델이 자유롭게 즉흥하게 하지 않는 것입니다. CyberStrike에서 에이전트는 결정론적 엔진 위에서 추론하고, 엔진은 모델이 못하는 일을 합니다. 모든 요청과 응답을 받아들여 수백 개 규칙을 돌리고, 어떤 역할이 어떤 객체와 함수에 도달했는지 신원 교차 지도를 만들고, 주입 지점을 탐색하며, 엄격한 안전 한계 아래에서 요청을 재전송합니다. 이 엔진이 지상의 진실을 만듭니다.

에이전트의 일은 무엇을 추적할지——어떤 단서가 악용 가능해 보이는지, 다음에 어떤 연쇄를 시도할지——정하고 이유를 설명하는 것입니다. 증거는 모델의 상상이 아니라 엔진에서 오므로, 발견은 사람이 재전송할 수 있는 실제 트래픽에 뒷받침됩니다. 판단은 에이전트의 것이고, 사실은 결정론적입니다.

에이전트가 아직 못 하는 것

여기서는 열정보다 정직이 더 중요합니다. 기술은 완성되지 않았고, 아니라고 말하는 사람은 무언가를 팔고 있는 것입니다.

  • 모델은 환각을 일으킨다. 언어 모델은 때때로 존재하지 않는 취약점을 주장합니다. 바로 그래서 발견은 재현 가능한 증거에 묶여야 하고, 자신감 있는 서술이 진짜 버그와 같은 것은 아닙니다.
  • 출력은 결정론적이지 않다. 같은 프롬프트를 두 번 돌리면 다른 경로가 나올 수 있습니다. 재현성은 모델이 스스로 동의하는 데서가 아니라 엔진과 기록된 트래픽에서 와야 합니다.
  • 안전과 인가는 사람의 결정이다. 범위, 교전 규칙, 그리고 “이 요청을 운영에 보내도 안전한가”는 자율 프로세스에 맡길 결정이 아닙니다.
에이전트가 탐색하고 사람이 결정한다: 완전 자율이 아니라 human-on-the-loop

그래서 현실적인 모델은 human-on-the-loop입니다. 에이전트가 넓이와 고된 작업을 맡고, 사람이 발견을 검증하고 위험한 결정을 책임지며 보고서를 뒷받침합니다. 완전 자율이 아니라 이 짝이야말로 오늘 제공할 수 있는 것입니다.

어디에 맞는가

에이전트 펜테스트는 사람 테스터도 감사 서명도 밀어내지 않습니다. 사람이 시간을 쓰는 곳을 바꿉니다. 분기마다 같은 면을 다시 발견하는 일은 줄고, 진짜 발견을 검증하고 책임이 필요한 결정을 내리는 일은 늘어납니다. 테스트는 지속적이 되고, 사람은 크롤러가 아니라 검토자가 됩니다.

이것이 주장의 전부이며, 의도적으로 겸손합니다. 공격 보안은 늘 실제 위험을 이해하는 가장 직접적인 방법이었습니다. 다만 너무 느리고 드물어 어디서나 쓸 수 없었을 뿐입니다. 그 격차를 좁히면서 여전히 사람이 필요한 지점을 분명히 말하는 것——그것이 이 기술의 쓸모 있는 모습입니다.

CyberStrike는 AI로 보강된 침투 테스트 플랫폼으로, 현재 얼리 액세스 중입니다. 그 뒤의 에이전트와 엔진이 궁금하세요? 플랫폼 살펴보기 또는 대기자 명단 등록.

작동 방식을 더 깊이 보시겠어요?