vulnerability-detection

2 개의 포스트

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에 적용하고, 사람의 결과 평가와 알려진 취약점 재검증을 분리해 수집하면 신뢰성과 탐지력을 함께 개선할 수 있다.

gitlab

AI는 취약점을 감지할 수 있지만, 누가 위험을 관리하는가? (새 탭에서 열림)

AI의 발전으로 취약점 탐지 및 수정 제안의 자동화가 가속화되고 있으나, 실제 기업 보안의 핵심은 탐지 그 이상인 거버넌스와 위험 관리에 있습니다. 소프트웨어가 AI에 의해 조립되고 의존성이 복잡해지는 현대적 환경에서 단순한 코드 분석만으로는 보안 책임을 다할 수 없으며, 정책 집행과 가시성을 제공하는 통합 플랫폼의 역할이 더욱 중요해지고 있습니다. 결국 AI를 통한 생산성 향상의 성패는 기술 자체보다 이를 안전하게 통제하고 신뢰할 수 있는 거버넌스 체계를 구축하느냐에 달려 있습니다. **AI 신뢰를 뒷받침하는 거버넌스 체계** * AI 시스템(예: Claude Code Security)은 취약점을 식별하고 수정을 제안하는 데 뛰어나지만, 이는 분석일 뿐 책임(Accountability)의 영역은 아닙니다. * 기업의 보안 정책이나 허용 가능한 위험 수준을 정의하는 것은 인간의 영역이며, AI 에이전트가 작동할 경계와 가드레일을 직접 설정해야 합니다. * AI에게 더 많은 자율성을 부여할수록 직무 분리, 감사 추적, 일관된 통제와 같은 강력한 거버넌스가 AI 개발 환경의 신뢰를 지탱하는 기초가 됩니다. **코드 이상의 맥락(Context) 파악의 중요성** * 거대언어모델(LLM)은 개별 코드를 격리된 상태에서 평가하지만, 보안 플랫폼은 해당 코드가 비즈니스에 미치는 영향도와 인프라 간의 상호작용 등 전체 맥락을 이해합니다. * 취약점이 실제 운영 환경에서 실행 가능한 경로에 있는지(Reachable), 혹은 외부 API 및 환경 설정에 의해 실제로 악용될 수 있는지 판단하여 보안 소음을 줄입니다. * 누가 변경을 수행했는지와 애플리케이션의 중요도를 결합한 맥락 정보가 있어야만 개발 속도를 늦추지 않고 효과적인 위험 우선순위 선정이 가능합니다. **동적 위험에 대응하는 지속적 보증** * 소프트웨어 위험은 의존성 변화와 환경 진화에 따라 끊임없이 변하므로, 배포 시점의 일회성 스캔만으로는 안전을 보장할 수 없습니다. * 개발 워크플로에 보안 제어를 직접 삽입하여 빌드, 테스트, 배포 전 과정에서 실시간으로 위험을 평가하는 지속적인 보증(Continuous Assurance) 체계가 필요합니다. * AI 생성 코드와 오픈 소스 라이브러리가 혼재된 복잡한 공급망을 관리하기 위해서는 전체 소프트웨어 수명 주기를 통합적으로 관리하는 오케스트레이션이 필수적입니다. AI 보조 도구는 개발 속도를 획기적으로 높여주지만, 기업은 이를 안전하게 확장하기 위해 거버넌스 중심의 접근 방식을 택해야 합니다. 단순히 똑똑한 AI 어시스턴트를 도입하는 것에 그치지 않고, GitLab과 같은 통합 플랫폼을 통해 정책 집행과 보안 스캔, 감사 기능을 개발 워크플로에 내재화함으로써 AI 시대에 걸맞은 보안 신뢰를 구축할 것을 권장합니다.