vibe-security-skill: vibe-coded 앱의 보안 취약점 방지를 위한 에이전트 스킬
요약
AI 어시스턴트를 활용해 빠르게 개발된 'vibe-coded' 앱의 보안 취약점을 방지하기 위한 에이전트 스킬입니다. 비밀값 하드코딩, RLS 누락, 클라이언트 측 데이터 신뢰 문제 등 AI가 자주 범하는 보안 실수를 배포 전에 포착하고 방지합니다.
핵심 포인트
- AI 어시스턴트가 생성하는 보안 취약점 패턴(비밀값 하드코딩, RLS 누락 등)을 전문적으로 탐지합니다.
- Claude Code, OpenAI Codex 등 호환 가능한 에이전트 플랫폼에서 사용할 수 있는 에이전트 스킬 형식입니다.
- 프로젝트 기술 스택(Supabase, Stripe, React Native 등)에 맞춰 필요한 참조 파일만 로드하여 컨텍스트 낭비를 최소화합니다.
- 자연어 명령이나 특정 명령어를 통해 전체 보안 감사 및 특정 영역(인증, 결제 등) 검토가 가능합니다.
vibe-coded 앱, 혹은 솔직히 말해 어떤 앱이든 일반적인 보안 취약점 패턴으로부터 보호할 수 있도록 돕는 에이전트 스킬 (agent skill)입니다. Chris Raroque (@raroque)가 Aloa의 동료들과 협력하여 제작했습니다.
AI 어시스턴트 (AI assistants)는 기능을 빠르게 구축하는 데는 뛰어나지만, 보안 측면에서는 지속적으로 실수를 저지릅니다. 비밀값 하드코딩 (hardcoding secrets), 행 수준 보안 (row-level security, RLS) 누락, 클라이언트가 제출한 가격 신뢰, localStorage에 토큰 저장 등이 그 예입니다. 이 스킬은 이러한 패턴이 배포되기 전에 포착합니다.
AI 앱 구축, 커스텀 에이전트 (custom agents) 제작, 또는 기업 내 AI 도입에 도움이 필요하신가요? Chris 및 Aloa 팀과 함께 협업하세요.
이 스킬은 vibe-coded 애플리케이션에서 반복적으로 나타나는 보안 문제를 해결하기 위해 특별히 제작되었습니다. AI를 사용하여 빠르게 개발할 때 보안의 기본 원칙들이 생략되곤 하며, AI 어시스턴트 자체가 취약점을 유발하는 원인이 되기도 합니다. 이 스킬은 에이전트에게 이러한 패턴을 포착하고 방지할 수 있는 지식을 제공합니다.
이 스킬은 에이전트 스킬 (Agent Skills) 형식을 사용하므로 Claude Code, OpenAI Codex 및 기타 호환 가능한 에이전트와 함께 작동합니다.
보안 규칙은 프로젝트에서 사용하는 기술에 따라 에이전트가 로드하는 참조 파일 (reference files) 형태로 구성되어 있습니다. Supabase를 사용 중이라면 RLS 정책을 확인하고, Stripe를 사용 중이라면 결제 흐름을 확인하며, React Native를 사용 중이라면 JS 번들 내의 비밀값을 확인합니다. 관련 없는 체크로 인해 컨텍스트 (context)를 낭비하지 않습니다.
npx skills add https://github.com/raroque/vibe-security-skill --skill vibe-security
npx를 사용할 수 없는 경우, 먼저 Node.js를 설치하세요: brew install node (macOS) 또는 nodejs.org에서 다운로드하십시오.
npx skills add https://github.com/raroque/vibe-security-skill --skill vibe-security
에이전트 플랫폼을 묻는 프롬프트가 나타나면 "Codex"를 선택하세요.
이 리포지토리 (repo)를 클론(Clone)하고 vibe-security/ 폴더를 프로젝트 또는 글로벌 스킬 디렉토리로 복사하세요:
# 프로젝트 레벨 (하나의 프로젝트에 적용)
cp -r vibe-security/ .claude/skills/vibe-security/
# 글로벌 (모든 프로젝트에 적용)
...
Claude Code: /vibe-security를 사용하세요.
전체 보안 감사 (security audit)를 실행하려면 /vibe-security를 사용하거나, "내 코드의 보안 문제를 확인해줘", "이게 안전할까?", "이 프로젝트를 감사해줘"와 같이 자연스럽게 요청하세요.
Codex: $vibe-security를 사용하세요.
또는 필요한 내용을 설명하세요 - "취약점이 있는지 검토해줘", "내 Supabase RLS를 확인해줘".
이 스킬은 인증 (authentication), 결제 (payments), 데이터베이스 액세스 (database access), API 키 (API keys) 또는 사용자 데이터 (user data)를 처리하는 코드를 작성하거나 검토할 때 자동으로 활성화됩니다.
| 카테고리 | 탐지 항목 |
|---|---|
| 비밀 정보 및 환경 변수 (Secrets & Env Vars) | 하드코딩된 API 키, NEXT_PUBLIC_ / VITE_ / EXPO_PUBLIC_ 변수에 포함된 비밀 정보, .gitignore 누락 |
| 데이터베이스 보안 (Database Security) | 비활성화된 Supabase RLS, USING (true) 정책, WITH CHECK 누락, 노출된 민감한 필드, Firebase의 allow: if true 규칙, 인증이 누락된 Convex |
| 인증 및 인가 (Auth & Authorization) | 검증 없는 jwt.decode(), 미들웨어 전용 인증, 보호되지 않은 Server Actions, localStorage의 토큰 |
| 속도 제한 (Rate Limiting) | 인증/AI/이메일 엔드포인트의 제한 누락, 클라이언트에서 조작 가능한 속도 제한 카운터, 결제 한도(billing caps) 부재 |
| 결제 (Payments) | 클라이언트가 제출한 가격, 웹훅 서명 검증 (webhook signature verification) 누락, 만료된 구독 확인 |
| 모바일 (Mobile) | JS 번들에 포함된 API 키, 토큰 저장용 AsyncStorage, 안전하지 않은 딥 링크 (deep links), 취약한 생체 인증 (biometric auth) |
| AI / LLM | 노출된 AI API 키, 사용량 제한 부재, 프롬프트 인젝션 (prompt injection), 안전하지 않은 출력 렌더링 |
| 배포 (Deployment) | 프로덕션 환경의 디버그 모드, 노출된 소스 맵 (source maps), 보안 헤더 (security headers) 누락, .git 접근 가능 |
| 데이터 액세스 (Data Access) | SQL 인젝션 (SQL injection), Prisma 연산자 인젝션 (Prisma operator injection), $queryRawUnsafe, 대량 할당 (mass assignment) |
기여, 수정 및 개선 제안을 적극 환영합니다! 이것은 커뮤니티 리소스로 만들어졌습니다. AI 어시스턴트가 계속해서 도입하는 보안 안티 패턴 (security anti-pattern)을 발견했다면 추가해 주세요.
가이드라인은 CONTRIBUTING.md를 참조하세요.
Vibe Security는 MIT 라이선스 하에 제공됩니다. 자세한 내용은 LICENSE를 참조하세요.
Chris Raroque (@raroque) 및 Aloa 팀이 제작하였습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기