Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
defense-as-skill — 스킬 증강 에이전트에서 스킬로 유도된 악성 공격을 탐지하고 차단하는 런타임 가드 스킬로, 롤아웃 피드백을 통해 가드 정책을 진화시키는 MCTS 루프를 갖추고 있습니다. | Kitploit
도구/GitHubGitHub/yxf203/defense-as-skill
Defensive ToolsVulnerability AnalysisMachine LearningPapers & ResearchLearning & EducationAI SecurityAnomaly Detection
GitHubyxf203/defense-as-skill

defense-as-skill

스킬 증강 에이전트에서 스킬로 유도된 악성 공격을 탐지하고 차단하는 런타임 가드 스킬로, 롤아웃 피드백을 통해 가드 정책을 진화시키는 MCTS 루프를 갖추고 있습니다.

저장소 보기
1245일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Defense-as-Skill: 스킬 증강 에이전트를 위한
런타임 가드 스킬 진화

arXivDataset

🎉 NeurIPS 2026 채택 🎉

image-20261009194017394

🔍 Defense-as-Skill이란?

Claude Code와 OpenClaw 같은 스킬 증강 에이전트(SAA)는 재사용 가능한 스킬 — 패키징된 지침, 스크립트, 워크플로 가이드 — 을 지속적인 런타임 컨텍스트로 로드합니다. 이는 에이전트를 더 유능하게 만들지만, 동시에 악성 스킬에게 향후 행동을 조종할 수 있는 지속적인 채널을 제공합니다. 악성 스킬은 구체적인 사용자 작업과 워크스페이스 상태가 안전하지 않은 행동을 유용해 보이게 만들 때까지 기다릴 수 있습니다. 따라서 사전 설치 검증만으로는 충분하지 않으며, 보호는 런타임에, 작업에 조건화되어 이루어져야 합니다.

Defense-as-Skill은 런타임 가드를 일급 스킬 아티팩트로 전환합니다:

  • 🛡️ 스킬 네이티브 — SkillSonar는 에이전트 플랫폼이 이미 노출하는 스킬 프리미티브만 사용하여 다른 스킬과 동일하게 설치되고 로드됩니다. 별도의 검열 엔드포인트, 샌드박스 패치, 플랫폼별 권한 게이트가 필요하지 않습니다. 동일한 가드가 Claude Code와 OpenClaw 모두에 변경 없이 배포됩니다.
  • 🔬 검사 및 편집 가능 — 방어 정책은 디스크상의 일반 파일입니다: 읽고, diff하고, 버전 관리하고, SAA 워크플로 간에 이전할 수 있습니다.
  • 🌱 진화 가능 — 가드가 단지 스킬이기 때문에, 그 자체로 최적화 가능한 정책 아티팩트입니다. 우리는 런타임 피드백(공격 성공률, 유용성, 확인 부담, 토큰 비용)을 탐색 신호로 사용하여 MCTS로 가드 스킬 버전을 탐색합니다.

배포 세부 사항 하나가 중요합니다: 안전 스킬은 거의 모든 작업과 관련이 있으므로, 일반적인 작업–스킬 매칭은 이를 간과하는 경향이 있습니다. 따라서 우리는 명시적 호출 지침(에이전트가 행동을 취하기 전에 skill-sonar를 참조하도록 지시)을 실험적 편의가 아닌 배포 구성의 일부로 취급합니다 — 절제 실험은 이것이 가드의 효과에 필수적임을 보여줍니다.

📦 이 저장소에 포함된 것

SCOPE-R 데이터셋 — 6개 위험군, 21개 하위 범주, 206개의 공격 확인된 악성 인스턴스와 43개의 양성 작업으로 구성된 SAA에 대한 스킬 유발 공격의 작업 조건화 데이터셋으로, 위험군별로 train / ID-test / OOD-test로 분할됨 — 은 Hugging Face에 호스팅되어 있으며 별도로 다운로드합니다(빠른 시작 0단계 참조). 이 저장소에는 가드와 이를 평가하고 진화시키는 코드가 포함되어 있습니다:

구성 요소설명
SkillSonar\런타임 가드 스킬 번들(eval/safetySkill/skill-sonar/)과 각 방어 조건에서 ASR, 작업 유용성, 확인 횟수, 토큰 비용을 측정하는 런타임 평가 프레임워크(eval/).
Guard-skill evolution\롤아웃 피드백으로부터 디스크상의 가드 스킬을 진화시키는 MCTS 루프(evolution/): 스킬 버전 트리에 대한 UCT 선택, 저비용 평가 롤아웃, claude -p를 통한 원샷 다중 변형 개선.

🚀 빠른 시작

0. 일회성 설정: 데이터셋 + 자격 증명

평가 프레임워크는 eval/ 루트에서 tasks/, injected-skills/, attack-metadata/, benign-skills/, split/을 읽습니다. Hugging Face에서 SCOPE-R을 다운로드하고 복사해 넣으세요:

git clone https://huggingface.co/datasets/fffovo/SCOPE-R /tmp/scope-r
cp -r /tmp/scope-r/dataset/{tasks,injected-skills,attack-metadata,benign-skills,split} eval/
cp eval/run/config.example.sh eval/run/config.sh   # fill in your endpoint credentials

1. 스모크 라운드 (항상 여기서 시작)

실제 평가와 실제 claude 개선기를 사용한 엔드투엔드 라운드 하나:

./run_smoke_loop.sh --max-rounds 1

2. 전체 MCTS 진화 루프

./run_mcts.sh --max-rounds 3

토큰을 소비하지 않는 정상 작동 확인

# plumbing only (no benchmark, no claude):
PYTHONPATH=. python3 -m evolution.cli --dry-run --max-rounds 1

# plumbing + analyzer + pool, with a synthetic subset instead of the benchmark:
PYTHONPATH=. python3 -m evolution.cli \
    --simulate-round tests/synthetic_smoke.jsonl --skip-refine --max-rounds 1

# bootstrap only (seed backup + active skill + deploy, then exit):
PYTHONPATH=. python3 -m evolution.cli --bootstrap-only

모든 설정값은 config/default.yaml(플랫 풀 루프)과 config/mcts.yaml(MCTS 루프)에 있습니다. 어느 것이든 CLI 플래그나 사용자 지정 --config 파일로 재정의할 수 있습니다.

🧬 작동 방식

SCOPE-R dataset (HF) ──▶ eval/ (runtime evaluation) ──▶ evolution/ (MCTS loop)
   tasks, skills,          subsets/, run/,                analyzer → refiner
   attack-metadata         scripts/ (judge, grading),     → skill tree → next round
                          safetySkill/ (SkillSonar)

각 MCTS 반복:

  1. 선택 — 저비용 평가 통계로 계산된 가장 높은 UCT 점수를 가진 확장 가능한 가드 스킬 노드를 선택합니다.
  2. 전체 평가 — 후보 가드를 eval/safetySkill/skill-sonar/에 배포하고 런타임 평가기를 실행합니다: ASR 판정, 유용성 채점, 확인 횟수, 토큰 비용, 그리고 작업별 판정자가 작성한 failure_reason / success_reason 서술과 결정론적 failure_stage 분류(guard_not_read / guard_not_triggered / guard_triggered_but_bypassed / ...).
  3. 확장 — claude -p 호출 하나가 k개의 자식 변형을 생성하며, 각각은 서로 다른 지배적 실패 패턴을 대상으로 하는 서로 다른 작고 국소적인 편집을 적용합니다.
  4. 롤아웃 — 각 새 자식은 저비용 평가를 받고, 점수는 트리를 따라 역전파됩니다.

탐색은 안전 점수가 성공 임계값(기본값: ASR ≤ 5%)에 도달하거나, 전체 평가 예산이 소진되거나, 확장 가능한 후보가 남지 않을 때 중지됩니다. 전체 평가된 최선의 후보가 최종 가드로 보고됩니다.

목적 함수는 안전 우선이며 부차적 선호를 가집니다:

s(v) = (1 − ASR_v) + ε · ( λ_b·U_benign + λ_m·U_malicious − λ_q·C̃_v − λ_t·K̃_v )

따라서 동등하게 안전한 후보들 중에서 탐색은 작업 유용성을 보존하고, 사용자를 덜 방해하며, 토큰을 덜 소비하는 가드를 선호합니다. 모든 것을 거부하는 퇴화된 가드는 설계상 낮은 점수를 받습니다.

📁 저장소 구조

.
├── README.md                    # this file
├── config/
│   ├── default.yaml             # flat-pool loop config (legacy)
│   └── mcts.yaml                # MCTS loop config (main method)
├── evolution/                   # evolution package
│   ├── loop.py / cli.py         # legacy flat-pool loop
│   ├── mcts_loop.py / mcts_cli.py / tree.py   # MCTS loop (paper's method)
│   ├── evaluator.py / instance_evaluator.py   # drives eval/subsets/run_*.sh
│   ├── analyzer.py              # per-task failure/success reasoning
│   ├── refiner.py / multi_refiner.py          # claude -p edit wrappers
│   └── skill_manager.py         # pool, lineage, deploy/retire/backup
├── eval/                        # runtime evaluation framework
│   ├── DATA.md                  # dataset wiring (HF download → eval/)
│   ├── subsets/                 # subset drivers (smoke/coverage/benign/combined)
│   ├── run/                     # config.example.sh + per-task claude runners
│   ├── scripts/                 # benchmark.py + lib_*.py (judge, grading, injection)
│   ├── safetySkill/skill-sonar/ # SkillSonar guard bundle (deploy slot)
│   └── split/                   # cheap_eval (31 rows) / full_eval (106 rows) lists
├── run_smoke_loop.sh            # smoke entry point
├── run_mcts.sh                  # MCTS entry point
└── tests/synthetic_smoke.jsonl  # canned rows for --simulate-round

실행 아티팩트는 skills/(트리 노드 + 백업 + tree.json), logs/(반복별 Markdown/JSONL, 개선기 트랜스크립트, 계보), artifacts/runs/(원시 라운드별 평가 스냅샷)에 저장됩니다.

🐳 Docker

claude -p --permission-mode bypassPermissions는 비루트 사용자로만 작동하므로, 우리는 평가 이미지(uid=1000 pinchbench 사용자, Node 20 + Claude Code CLI, Python 3.11)를 재사용합니다. 평가 프레임워크에서 한 번 빌드하세요:

cd eval && docker build -t pinchbench-skillguard .

호스트 측 일회성 소유권 설정(쓰기 가능한 마운트는 uid 1000에 속해야 함), eval/run/config.sh에 OUTPUT_BASE="/pinchbench-out" 설정:

sudo chown -R 1000:1000 . eval/subsets eval/safetySkill eval/pinchbench-out-docker

그런 다음 한 명령으로 MCTS 루프를 실행합니다(프레임워크, 읽기 전용 원본 가드 스킬, 이 저장소, 출력 디렉터리를 마운트):

docker run --rm -it \
  -v "$PWD/eval:/work" \
  -v "$PWD/safetySkill:/pristine:ro" \
  -v "$PWD:/evolution" \
  -v "$PWD/eval/pinchbench-out-docker:/pinchbench-out" \
  -v "$PWD/eval/pinchbench-out-docker/benchmark.log:/work/benchmark.log" \
  -w /evolution -e PYTHONPATH=/evolution -e ASR_MATRIX_ROOT=/pinchbench-out/matrix \
  pinchbench-skillguard \
  bash -lc 'set -a; source /work/run/config.sh; set +a; exec ./run_mcts.sh'

set -a; source ...; set +a 래퍼가 필요합니다: CC_* 자격 증명을 내보내어 인스턴스별 실행과 개선기의 claude -p 모두 동일한 엔드포인트를 상속받도록 합니다. run_mcts.sh는 /.dockerenv를 자동 감지하고 config/docker-mcts.yaml을 로드합니다. 모든 mcts_cli 플래그를 추가할 수 있습니다, 예: --k 5 --c-uct 1.0 --max-iterations 20.

⚙️ 유용한 CLI 플래그

도구 다운로드