Lagune과 Security-Driven Hardening 방법론을 이해하는 데 꼭 필요한 용어를 한곳에서 쉬운 말로 정의합니다.
Security-Driven Hardening (SDH)
Lagune이 구현하는 방법론으로, 컨텍스트를 인식하는 Blue Team 컨벤션입니다. 시스템의 컨텍스트를 탐지하고, 그 컨텍스트에 따르는 위험의 우선순위를 정하며, 수정을 안내합니다. 보안 지식은 명세와, 필요할 때만 불러오는 전문 지식에 담겨 있으므로 개발자든 아니든 같은 흐름으로 도움을 받습니다.
Lagune
SDH의 참조 구현입니다. AI 에이전트가 코드베이스의 보안을 강화하려고 실행하는 에이전트 명령어 9개로 이루어지며, 각 명령어에는 채워 넣을 템플릿이 함께 있습니다. 각 에이전트는 자체 플러그인 설치 도구나 skills.sh를 통해 명령어를 설치하며(설치 페이지 참고), 명령어는 모든 결정론적 단계에서 Lagune의 엔진을 실행합니다.
Charter(보안 원칙)
Lagune에서 모든 단계를 규율하는 계층으로, 이후의 모든 단계가 따라야 하는 보안 우선 원칙의 모음입니다. 프로젝트 보안 태세에 대한 컴파일 타임 검사라고 생각하면 됩니다. .lagune/memory/charter.md 파일에 저장됩니다.
개발 흐름
작업하는 바로 그 순간에 보안을 강화하는 범용 /lagune 명령어입니다. 어느 단계에서든 어떤 프롬프트든 받아 요청한 것을 만들고, 돌려주기 전에 안전한 기본값으로 보안을 강화합니다. 보안 원칙이 있으면 그에 따릅니다. Lagune의 추적에는 아무것도 기록하지 않으므로, 결과물은 보안이 강화된 코드뿐입니다. 앞서 정하는 보안 원칙, 뒤이어 실행하는 Blue Team 흐름과 함께, 개발하는 동안 Lagune이 프로젝트를 보호하는 방법입니다.
Blue Team 흐름
Lagune의 핵심인 5단계 감사로, charter, detect, plan, harden, verify로 이루어집니다. 각 단계는 이전 단계의 결과를 바탕으로 진행됩니다. "Blue Team"은 공격하는 Red Team과 달리 방어하는 쪽의 보안 전통을 가리킵니다.
발견 사항(Finding)
탐지된 위험 하나를 가리킵니다. 각 발견 사항에는 무엇인지, 왜 중요한지, 코드에 있는 근거가 담깁니다. 발견 사항은 plan, harden, verify 단계가 이어받아 처리하는 하나의 추적 단위이며, 모든 산출물에서 이름으로 식별됩니다.
보안 통제(Control)
위험을 해소하려고 적용하는 보안 조치입니다. harden 단계는 보안 통제를 적용하고, verify 단계는 그 통제가 실제로 효과가 있는지 증명합니다. Lagune은 프롬프트에 맞추려고 보안 통제를 약화하는 일이 절대 없습니다.
Detect
코드를 읽고 시스템이 무엇을 하는지, 위험이 어디에 있는지 파악하는 단계입니다. 핵심 규칙은 지어내지 않고 탐지하는 것으로, 코드가 뒷받침하는 내용만 기록합니다.
Harden
코드를 직접 수정하는 유일한 단계입니다. plan 단계의 수정을 하나씩 적용하고, 각각을 Applied, Partial, Blocked 중 하나로 기록합니다. Applied라고 해서 증명까지 끝난 것은 아닙니다.
Verify
코드를 읽고 harden 단계가 기록한 내용과 대조해, 적용한 각 수정이 실제로 효과가 있는지 증명하는 단계입니다. 판정은 Risk closed, Risk not closed, Cannot tell from the code 세 가지 중 하나입니다.
종결(Stand down)
verify 단계에서 위험이 해소되었음을 증명하면 해당 발견 사항을 종결합니다. 확인을 거쳐 체인 전체에서 제거하므로, 더 이상 다시 처리되지 않습니다.
종결 가능성(Closability)
보안 작업에 끝이 있다는 성질입니다. 해소가 증명된 발견 사항은 종결되므로 흐름이 안정 상태에 이를 수 있고, 코드가 바뀔 때만 다시 열립니다. SDH는 끝없는 루프가 아니라 종결할 수 있는 과정입니다.
엔진
npm에 있는 lagune 패키지로, 명령어는 모든 결정론적 단계(훅, 카탈로그, 카테고리)에서 npx 명령어를 통해 이 패키지를 실행합니다.
전문 지식(Specialization)
특정 주제에 집중한, 프로그래밍 언어와 무관한 보안 지식 모듈로, 기본으로는 불러오지 않고 필요할 때만 불러옵니다. 전문 지식은 명령어가 아닙니다. 엔진의 read catalog <name> 명령어로 어떤 프롬프트에든 불러올 수 있습니다(예: npx lagune read catalog regex).
카테고리
이름이 붙은 내장 전문 지식의 묶음으로, owasp 카테고리부터 javascript, python, go, rust 같은 언어별 카테고리까지 있습니다. 프로젝트가 사용하는 카테고리는 .lagune/configs.json 파일에 기록되며, 어떤 내장 전문 지식이 카탈로그에 들어갈지 결정합니다. 기록된 카테고리가 없으면 프로젝트는 owasp 카테고리만 사용합니다.
카탈로그
프로젝트가 사용하는 전문 지식의 모음으로, 프로젝트 카테고리의 내장 전문 지식에 /lagune-specialize 명령어로 직접 작성한 전문 지식을 더한 것입니다. 엔진의 read catalog 명령어가 카탈로그 목록을 보여 주고, 각 단계는 카탈로그를 코드와 대조합니다.
필요할 때만 불러오는 프롬프트(Prompt-on-demand)
모든 검사를 기본으로 실행하는 대신, 프로젝트의 실제 모습에 맞는 보안 지식만 불러온다는 원칙입니다.
이름 기반 식별(Identity-by-name)
Lagune의 추적 모델입니다. 각 발견 사항의 이름은 모든 산출물에서 똑같은 섹션 제목으로 쓰이며, 체인 전체에서 그 발견 사항을 식별하는 기준이 됩니다. 추적 맵(.lagune/tracking.json)은 추적 정보만 담고, 설명 글은 절대 담지 않습니다.
자주 묻는 질문
SDH는 컨텍스트를 인식하는 Blue Team 보안 방법론입니다. 시스템의 컨텍스트를 탐지하고, 그 컨텍스트에 따르는 위험의 우선순위를 정하며, 모든 발견 사항을 쉬운 말로 전달하면서 수정을 안내합니다. Lagune은 그 참조 구현입니다.
charter는 Lagune에서 모든 단계를 규율하는 계층으로, 이후의 모든 단계가 따라야 하는 보안 우선 원칙의 모음입니다. .lagune/memory/charter.md 파일에 저장됩니다.
verify 단계에서 위험이 해소되었음을 증명하면 해당 발견 사항을 종결합니다. 확인을 거쳐 체인 전체에서 제거하므로, 더 이상 다시 처리되지 않습니다.
