GitLab Duo와 Orbit을 사용하여 취약점 분석 속도를 100배 높인 AI 보안 에이전트 구축기
요약
GitLab Duo, Orbit Knowledge Graph, Claude AI를 결합하여 취약점 분석 및 수정 과정을 자동화하는 AI 보안 에이전트를 구축한 사례를 소개합니다. 수동 분석에 소요되던 4시간 이상의 작업을 45초로 단축하여 보안 병목 현상을 해결합니다.
핵심 포인트
- GitLab Duo, Orbit, Claude를 활용한 보안 워크플로우 자동화
- 취약점 분석 및 영향도 평가 시간을 4시간에서 45초로 단축
- 의존성 추적, 소유자 식별, 수정 코드 생성을 에이전트가 수행
- 보안 엔지니어의 분석 오버헤드 및 비용 절감 효과
아무도 말하지 않는 보안 병목 현상
지난달 제가 보안 엔지니어와 나누었던 대화입니다:
"우리는 일주일에 약 5~10개의 취약점을 발견합니다. 좋아 보이나요? 하지만 기다려 보세요..."
"취약점 하나당 그 영향을 분석하는 데만 4시간 이상이 걸립니다. 어떤 서비스가 영향을 받는지? 어떤 팀이 담당인지? 실제 리스크는 무엇인지? 그러고 나서 수정 코드를 작성하고, MR (Merge Request)을 생성하고, 리뷰를 받는 과정까지..."
"우리가 작업을 마칠 때쯤이면 이미 2주가 지나 있습니다. 취약점은 계속 쌓여만 갑니다."
이것은 모든 조직이 겪고 있는 이야기입니다.
업계 조사에 따르면, 식별된 취약점의 40%가 수정되지 않은 채로 남아 있습니다. 이는 팀이 관심을 두지 않아서가 아니라, 분석 과정이 마비될 정도로 느리기 때문입니다.
저는 AI로 이 문제를 해결하기로 했습니다.
문제점: 수동 취약점 분석의 한계
보안 팀이 각 발견 사항에 대해 실제로 무엇을 하는지 세부적으로 살펴보겠습니다:
1시간째: 의존성 추적 (Dependency Tracing)
"이 취약한 코드를 호출하는 서비스는 무엇인가?"
팀은 다음과 같은 사항을 수동으로 확인합니다:
- 코드 임포트 (Code imports)
- 함수 호출 (Function calls)
- 서비스 의존성 (Service dependencies)
- 리포지토리 간 사용 (Cross-repo usage)
이는 지루하고, 오류가 발생하기 쉬우며, 느립니다.
2시간째: 영향도 평가 (Impact Assessment)
"얼마나 많은 서비스가 영향을 받는가?"
팀은 다음을 이해해야 합니다:
- 직접 의존성 (Direct dependencies)
- 간접 의존성 (Indirect dependencies, 의존성의 의존성)
- 원격 의존성 (Remote dependencies, 3단계 이상의 홉(hop) 떨어진 경우)
대부분의 팀은 결국 포기하고 추측에 의존합니다.
3시간째: 소유자 식별 (Owner Identification)
"이 코드의 소유자는 누구인가?"
적절한 소유자를 찾는 데는 다음이 필요합니다:
- CODEOWNERS 파일 검색
- 팀 문서 확인
- Slack 대화 내용 확인
- 때로는 직접적인 대화
4시간 이상: 수정 코드 생성 (Fix Generation)
"어떻게 보안 코드를 작성할 것인가?"
언어마다 패턴이 다릅니다:
- Python: 매개변수화된 쿼리 (Parameterized queries) 사용
- JavaScript: 준비된 문구 (Prepared statements) 사용
- Go: database/sql 패턴 사용
- Java: PreparedStatement 사용
- C#: 매개변수화된 명령 (Parameterized commands) 사용
팀에는 보통 한 명의 전문가가 있습니다. 그 전문가가 병목 지점이 됩니다.
총합: 취약점당 4시간 이상.
연봉 15만 달러의 보안 엔지니어를 기준으로 하면, 이는 팀당 연간 15만 달러 이상의 순수 분석 오버헤드 비용이 발생함을 의미합니다.
통찰: 이는 자동화될 수 있습니다
여기 세 가지 기술이 결합됩니다:
- GitLab Duo Agent - 워크플로우 오케스트레이션 (Orchestrates workflow)
- Orbit Knowledge Graph - 코드 의존성 파악
- Claude AI - 보안 코드 작성
이들을 결합하면 4시간 이상의 작업을 45초로 단축할 수 있습니다.
Orbit Tracer Security Agent 소개
우리는 취약점 조치 (vulnerability remediation) 워크플로우 전체를 자동화하는 GitLab Duo Agent인 Orbit Tracer Security Agent를 구축했습니다.
작동 방식은 다음과 같습니다:
1단계: 취약점 탐지 (자동)
GitLab SAST가 다음을 발견합니다: database/user_service.py 내의 SQL Injection
2단계: 영향 범위 분석 (Orbit을 통한 자동화)
에이전트가 Orbit 지식 그래프 (knowledge graph)에 질의합니다:
database/user_service.py를 호출하는 것은 무엇인가?payment_service.py(직접 호출)user_api.py(직접 호출)web_app.js(간접 호출,user_api호출)mobile_app.js(간접 호출,user_api호출)
결과: 4개 서비스 영향, 12개 파일 영향
3단계: 위험 점수 산정 (Claude를 통한 자동화)
알고리즘: 심각도 (Severity) × 영향도 (Impact) × 공격 가능성 (Exploitability) + 컴플라이언스 (Compliance)
- 심각도 (Severity): 10 (SQL Injection)
- 영향도 (Impact): 10 (4개 서비스에 영향)
- 공격 가능성 (Exploitability): 9 (공격하기 매우 쉬움)
- 컴플라이언스 (Compliance): +3 (PCI-DSS 위반)
위험 점수 (Risk Score): 9/10 (CRITICAL)
4단계: 소유자 식별 (Orbit을 통한 자동화)
에이전트가 CODEOWNERS를 확인합니다:
- 기본 소유자: @database-team
- 보조 소유자: @platform-team, @security-team
알림 전송: 3개 팀 모두에게 알림
5단계: 보안 코드 생성 (Claude를 통한 자동화)
에이전트가 언어 감지: Python
수정 코드 생성:
def get_user(user_id):
cursor.execute('SELECT * FROM users WHERE id = ?', (user_id,))
return cursor.fetchone()
6단계: 사람의 승인 (선택 사항)
- CRITICAL 결과: 검토 필요
- HIGH 결과: 검토 필요
- MEDIUM/LOW 결과: 자동 승인
전체 컨텍스트가 포함된 MR (Merge Request)이 생성됩니다.
총 소요 시간: 45초. 4시간 이상과 비교했을 때: 99.8% 더 빠름.
수치 데이터
취약점당 소요 시간: 4시간 이상 → 몇 분
속도 향상: 100배 - 320배 더 빠름
팀당 절감 시간: 월 40시간 이상
...
기술적 주요 특징 (Technical Highlights)
다요소 위험 점수 산정 (Multi-Factor Risk Scoring)
CVSS 단독 사용 대신, 다음과 같이 계산합니다:
위험 점수 (Risk Score) = (심각도 (Severity) × 영향도 (Impact) × 공격 가능성 (Exploitability)) / 10 + 컴플라이언스 보너스 (Compliance Bonus)
여기서:
...
이를 통해 미세하게 차별화된 점수를 생성합니다:
- 결제 시스템의 SQL 인젝션 (SQL Injection): 10/10
- 읽기 전용 분석 시스템의 SQL 인젝션 (SQL Injection): 5/10
동일한 취약점이라도 위험도는 크게 달라집니다.
언어 중립적 수정 (Language-Agnostic Remediation)
개념과 구현을 분리합니다:
- 취약점 클래스 (Vulnerability class) (예: SQL 인젝션)
- 수정 패턴 (Remediation pattern) (예: 매개변수화된 쿼리 (Parameterized queries))
- 언어 바인딩 (Language binding) (예: Python에서 매개변수화된 쿼리를 수행하는 방법)
HITL (Human-in-the-Loop, 인간 참여형)
저희는 완전 자동화를 신뢰하지 않습니다:
낮음/중간 (LOW/MEDIUM): 자동 승인 (Auto-approve) → 자동 병합 (Auto-merge)
높음 (HIGH): 검토 필요 (Require review) → 인간 승인 (Human approval) → 병합 (Merge)
심각 (CRITICAL): 검토 필요 (Require review) → 보안 검토 필요 (Require security review) → 병합 (Merge)
이를 통해 팀은 속도와 안전성을 모두 확보할 수 있습니다.
이것이 중요한 이유
이 프로젝트는 GitLab Transcend Hackathon 기간 동안 구축되었으며 다음을 입증합니다:
- Duo Agent의 잠재력 - AI 에이전트가 실제 문제를 해결함
- Orbit의 가치 - 지식 그래프 (Knowledge graph)가 엔터프라이즈 기능을 가능하게 함
- 개발자 경험 (Developer Experience) - 보안이 빠르면서도 안전할 수 있음
- 시장 기회 - 취약점의 40%가 수정되지 않은 채 방치됨
향후 계획
1단계가 완료되었습니다. 향후 로드맵은 다음과 같습니다:
- 2단계: 실시간 취약점 추적 대시보드
- 3단계: 자동화된 정기 수정 (Automated scheduled remediation)
- 4단계: 다중 조직 엔터프라이즈 기능
- 5단계: 오픈 소스 생태계 및 SaaS 플랫폼
직접 체험해 보세요
이 프로젝트는 오픈 소스이며 프로덕션 환경에 즉시 적용 가능합니다. GitLab에서 전체 구현 코드, 테스트 케이스, 그리고 대화형 에이전트를 확인하실 수 있습니다.
피드백 환영
여러분의 의견을 듣고 싶습니다:
- 보안 팀: 이것이 여러분의 고충(pain points)을 해결해 줄 수 있습니까?
- DevOps 엔지니어: 이것을 어떻게 통합하시겠습니까?
- 개발자: 기여(contributing)에 관심이 있으신가요?
보안 속도(security velocity)가 기본값이 되도록 만듭시다. 🚀
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기