Lagune은 내장 전문 지식을 13개 카테고리로 묶습니다. 프로젝트가 사용하는 카테고리에 따라 어떤 내장 전문 지식이 프로젝트의 카탈로그에 들어갈지 정해지며, 카테고리는 시스템이 하는 일과 시스템을 작성한 언어, 두 가지로 나뉩니다.
기록된 카테고리가 없으면 프로젝트는 owasp 카테고리만 사용합니다. /lagune-charter 명령어는 프로젝트를 살펴보고 근거가 확인된 카테고리를 모두 기록하며, 카테고리는 언제든 직접 바꿀 수 있습니다.
시스템이 하는 일
| 카테고리 | 키 | 보안 강화 대상 |
|---|---|---|
| OWASP | owasp | OWASP가 추적하는 애플리케이션 보안 위험: 인젝션, 취약한 접근 통제, 인증 실패, 암호화 실패 |
| 인프라 | infra | 컨테이너, 워크로드, 서버리스 설정: Dockerfile, Compose, Pod 보안, FaaS IAM과 트리거 |
| AI / LLM | ai | 프롬프트 인젝션과 도구, 에이전트, 검색, MCP의 안전하지 않은 연결로부터 AI와 LLM 연동 보호 |
| Lovable | lovable | AI가 생성한 Supabase 앱(Lovable 등): RLS 누락, 유출된 service_role 키, 안전하지 않은 기본값 |
시스템을 작성한 언어
| 카테고리 | 키 | 보안 강화 대상 |
|---|---|---|
| JavaScript | javascript | 런타임 전반의 eval 및 child_process 기반 RCE, 경로 탐색(path traversal), 프로토타입 오염 |
| Python | python | pickle 및 YAML 역직렬화 RCE, str.format 문자열 탐색(traversal), 클래스 오염 |
| Rust | rust | 건전하지 않은(unsound) unsafe API, transmute 오용, 정수 오버플로, FFI 경계의 정의되지 않은 동작 |
| C / C++ | c-cpp | 코드 실행으로 이어지는 포맷 문자열 버그, 버퍼 오버플로, 경계 밖 쓰기(out-of-bounds write) |
| PHP | php | 타입 저글링을 이용한 인증 우회, 객체 인젝션 가젯 체인, 안전하지 않은 기본 설정 |
| Go | go | typed nil 인터페이스 버그, 고루틴 데이터 레이스, 보안 관련 코드 경로의 안전하지 않은 동시성 |
| Java | java | 원격 코드 실행으로 이어지는 ObjectInputStream 역직렬화 가젯 체인 |
| Ruby | ruby | 원격 코드 실행에 이르는 Marshal.load 및 YAML 역직렬화 가젯 체인 |
| .NET / C# | dotnet | BinaryFormatter 역직렬화 RCE, XSS로 이어지는 인코더 우회 |
Lagune은 언어에 구애받지 않습니다. 프로젝트가 어떤 언어로 작성되었든 전체 흐름이 그대로 읽어 내며, 이 카테고리는 한 언어에만 있는 함정을 더 깊이 다룰 뿐입니다.
언제든 추가하고 제거하기
카테고리는 한번 정하면 바꿀 수 없는 약속이 아니라 출발점입니다. 지금 프로젝트에 맞는 카테고리를 사용하고, write add 및 write remove 명령어로 키를 지정해 언제든 바꾸세요. 터미널에서 --categories 옵션을 값 없이 사용하면 대화형 선택 화면이 열립니다(스페이스 키로 선택하거나 해제하고 엔터 키로 확정하며, 아무것도 선택하지 않으면 건너뜁니다). 터미널 밖에서는 옵션 뒤에 카테고리를 이어서 넘기세요.
- 추가
- 제거
npx lagune write add --categories # interactive
npx lagune write add --categories owasp
npx lagune write add --categories owasp rust
npx lagune write remove --categories # interactive
npx lagune write remove --categories owasp
npx lagune write remove --categories owasp rust
처음 실행하는 write add 또는 write remove 명령어는 owasp 카테고리에서 시작하므로, 카테고리를 모두 제거하면 기본값으로 돌아가지 않고 빈 목록이 남습니다. 모든 변경 사항은 .lagune/configs.json 파일에 기록되므로 팀 전체가 같은 카테고리 구성으로 작업합니다.
프로젝트가 사용하는 카테고리 확인하기
read list --categories 명령어는 모든 카테고리와 프로젝트의 사용 여부를 보여 줍니다.
npx lagune read list --categories
# Categories
# • owasp [used] Harden against the application security risks OWASP tracks
# • javascript [available] Harden JavaScript and its runtimes
# • php [available] Harden PHP against type-juggling auth bypass
# • go [available] Harden Go against typed-nil interface bugs
# ...
#
# No category is recorded yet, so this project uses the default: owasp.
각 카테고리에 어떤 전문 지식이 들어 있는지는 카탈로그에서 확인하세요. /lagune-specialize 명령어로 직접 만든 전문 지식은 카테고리와 관계없이 카탈로그에 포함됩니다.
자주 묻는 질문
카테고리의 키를 --categories 옵션에 넘기세요. 예를 들어 npx lagune write add --categories javascript 명령어를 실행합니다. 기록된 카테고리가 없는 동안에는 charter 단계도 프로젝트를 살펴보고 근거가 확인된 카테고리를 기록합니다.
네. 같은 줄에 하나씩 이어서 나열하세요.
기본값인 owasp 카테고리로 시작한 뒤, 사용하는 언어나 스택에 맞는 카테고리를 추가하세요. 전문 지식은 필요할 때만 불러오므로, 단계에서 그 카테고리의 전문 지식이 필요해지기 전까지는 카테고리에 드는 비용이 전혀 없습니다.
