figma

에이전트를 활용해 취약점에 앞서가는 Figma의 방법 | Figma 블로그 (새 탭에서 열림)

Figma는 하나의 보안 정책을 기반으로 AI 에이전트를 코드 작성, 풀 리퀘스트(PR) 리뷰, 과거 코드 감사에 활용한다. 핵심은 단순히 취약점을 많이 찾는 것이 아니라, 정밀도(실제 취약점 비율)와 재현율(실제 취약점 탐지 비율)을 함께 관리해 개발자의 신뢰를 확보하는 것이다. 특히 모든 PR에 적용되는 리뷰 시스템과 사람의 피드백·기존 취약점 재검증을 통해 정책을 지속적으로 개선한다.

에이전트 보안의 세 가지 적용 단계

  • 코드 생성 단계: 개발자가 코드를 작성하는 과정에서 취약점을 예방한다.
  • PR 리뷰 단계: 변경된 코드를 검토해 배포 전에 문제를 탐지하고 수정하도록 한다.
  • 과거 코드 감사 단계: 오래된 모노레포 전체를 점검해 이미 배포된 취약점을 찾는다.
  • 세 단계 모두 다음 내용을 포함한 공통 정책을 사용한다.
    • 신뢰 경계
    • 조직이 허용한 위험
    • 과거 판단의 선례(precedent)

정밀도와 재현율을 함께 측정

  • 정밀도(precision):
    • 에이전트가 보고한 결과 중 실제 취약점의 비율이다.
    • 높을수록 오탐(false positive)이 적다.
  • 재현율(recall):
    • 실제 존재하는 취약점 중 에이전트가 찾아낸 비율이다.
    • 높을수록 미탐(false negative)이 적다.
  • 취약점을 많이 보고하는 것만으로는 충분하지 않다.
    • 오탐이 많으면 개발자가 도구의 결과를 무시하게 된다.
    • 반대로 정밀도만 높이고 탐지 범위를 줄이면 중요한 취약점을 놓칠 수 있다.

PR 리뷰를 먼저 구축한 이유

Figma는 코드 생성이나 전체 저장소 감사보다 개선 주기가 빠른 PR 리뷰부터 만들었다.

  • 보편성: 모든 PR이 리뷰 대상이 된다.
  • 셀프서비스 구조: 에이전트가 PR에 직접 댓글을 달고, 작성자가 해당 결과에 답변한다.
  • 양방향 측정:
    • 정밀도는 작성자의 thumbs up/down 평가와 설명으로 측정한다.
    • 재현율은 이미 취약점이 있었던 커밋에 리뷰어를 다시 실행해 놓친 문제를 세는 방식으로 측정한다.
  • 이렇게 수집한 피드백은 에이전트가 따르는 보안 정책 개선에 반영된다.

여러 모델을 병렬로 사용

  • Figma는 서로 다른 취약점을 놓치는 모델을 함께 사용한다.
    • Claude Code의 Opus 4.8, xhigh 노력 수준
    • Codex의 GPT-5.6 Sol, high 노력 수준
  • 어느 한 모델이라도 문제를 보고하면 결과를 상위 단계로 전달한다.
  • PR 하나의 리뷰 비용은 중앙값 약 0.50달러이며, 대부분의 PR에는 보고할 문제가 없어 비용이 크게 증가하지 않는다.
  • Figma는 이 비용이 버그 바운티 지급이나 사용자 피해를 예방하는 효과에 비해 충분히 낮다고 판단한다.

실제로 탐지한 취약점 사례

  • 복잡한 취약점:
    • 주입된 샌드박스 객체가 호스트 영역의 Function 생성자에 접근할 수 있음을 추론했다.
    • 이를 통해 데스크톱 클라이언트에서 코드 실행으로 이어지는 경로를 찾아냈다.
  • 일반적인 접근 제어 취약점:
    • 송장 조회 API가 호출자가 전달한 송장 ID만 확인하고 소속 조직을 검증하지 않았다.
    • 인증된 사용자가 ID만 알면 다른 조직의 송장을 읽을 수 있는 IDOR(Insecure Direct Object Reference) 문제였다.
    • 해결책은 송장 조회 시 인증된 사용자의 조직에 속하는지 함께 확인하는 것이다.

초기 도입과 신뢰 확보

  • Anthropic이 Claude Code Security Reviewer를 공개한 2025년 8월, Figma는 즉시 도입했다.
  • 처음에는 개발자 PR 댓글이 아닌 Slack과 Datadog로만 결과를 보내는 shadow mode로 운영했다.
  • 리뷰어는 두 단계로 동작했다.
    • 잠재적 취약점 탐색
    • 적대적 검토를 통한 오탐 필터링
  • 실제 보안 사고를 재현했을 때 근본 원인을 거의 그대로 찾아냈고, 애플리케이션 보안과 인프라 설정 오류 등 여러 영역에도 잘 일반화됐다.
  • 그러나 첫 주에는 27개 결과 중 4개만 유효해 정밀도가 약 15%에 불과했다.
  • Figma는 개발자에게 노출하기 위한 기준으로 70% 정밀도를 설정했다.
    • 10개 중 7개가 유효해야 개발자가 결과를 읽을 것이라는 실용적 기준이다.
  • 2주간의 관찰 기간 동안 정밀도가 70% 이상이고 심각한 오탐이 없을 때까지 PR 댓글을 보류했다.
  • 이를 위해 최근 8주간의 PR에 리뷰어를 다시 실행하고, 보안팀이 오탐을 직접 분류했다.
  • 과거 사례를 기반으로 에이전트가 따라야 할 정책을 작성했다.
  • 여기서 **선례(precedent)**는 특정 상황에서 어떤 보고가 유효하거나 유효하지 않은지 설명하는 구체적인 사례다.

실용적인 결론

AI 보안 에이전트를 도입할 때는 처음부터 모든 개발자에게 결과를 노출하기보다 shadow mode로 운영하며 정밀도를 먼저 확보하는 것이 좋다. 모든 PR에 적용하고, 사람의 결과 평가와 알려진 취약점 재검증을 분리해 수집하면 신뢰성과 탐지력을 함께 개선할 수 있다.