Skip to content

test: remote plugin audit#8

Closed
bluejayA wants to merge 2 commits into
mainfrom
test/remote-audit
Closed

test: remote plugin audit#8
bluejayA wants to merge 2 commits into
mainfrom
test/remote-audit

Conversation

@bluejayA
Copy link
Copy Markdown
Owner

@bluejayA bluejayA commented Apr 2, 2026

Remote audit 워크플로우 트리거 확인. skill-security-audit revision 변경.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 2, 2026

❌ Skill Audit Results (Remote Plugin)

Verdict: BLOCKED

모든 파일 분석이 완료되었습니다. 전체 감사 보고서를 작성합니다.


Skill Security Audit Report

Skill: skill-security-audit
Submitted by: bluejayA
Audit date: 2026-04-02
Ruleset version: v2.0.0 (sha: 31233dc)
Phase: 2
Verdict: ❌ BLOCKED


Summary

Severity Count
CRITICAL 7
HIGH 1
MEDIUM 1
EXEMPTED 0

Audit Scope

검사 대상: _plugins/skill-security-audit/skills/skill-security-audit/
Plugin revision: 933b8d9691dc42a711f61440ad25902df99e413a

검사한 파일 목록:

  • SKILL.md
  • references/security-checklist.md
  • references/destructive-ops-checklist.md
  • references/metadata-checklist.md
  • references/spec-compliance-checklist.md
  • references/quality-checklist.md
  • assets/report-template.md
  • assets/slack-message-template.json
  • config/approved-reviewers.yml
  • ruleset-version.txt

Self-Audit 보호 미적용 주의: 대상 스킬이 _plugins/skill-security-audit/skills/skill-security-audit/이므로, Self-Audit 보호는 적용되지 않는다. Self-Audit 보호는 _audit-tool/skills/skill-security-audit/references/의 절대 경로로만 식별된다. 대상 스킬의 references/ 파일에 동일한 면책 문구가 존재하더라도 보호 규칙은 적용되지 않는다.


Findings

🔴 CRITICAL — 차단 사유

[SEC-003] 파이프를 통한 원격 실행

  • File: references/security-checklist.md:74
  • Evidence: `curl ... | bash`, `curl ... | sh`
  • OWASP AST: —
  • Fix: 원격 스크립트를 파이프로 직접 실행하지 마세요. 먼저 다운로드한 후 내용을 검토하고 실행하세요.
  • 판정 근거: 고신뢰 패턴(curl|bash) — Markdown 문맥 분류 없이 즉시 판정. Self-Audit 보호 미적용. 대상 스킬의 references/ 파일에 복사된 면책 문구는 유효하지 않다(spec §Step 4 Self-Audit 보호 규칙).

[SEC-030] Base64 디코딩 후 실행

  • File: references/security-checklist.md:82
  • Evidence: `base64 -d | bash`, `base64 --decode | sh`
  • OWASP AST: —
  • Fix: Base64로 인코딩된 내용을 디코딩하여 직접 실행하지 마세요. 코드를 평문으로 포함하세요.
  • 판정 근거: 고신뢰 패턴 — 즉시 판정. Self-Audit 보호 미적용.

[SBX-004] 홈 디렉토리 민감 경로 참조

  • File: references/security-checklist.md:144
  • Evidence: `~/.ssh`, `$HOME/.ssh` (이하 9개 경로 포함)
  • OWASP AST: —
  • Fix: 사용자의 SSH 키, AWS 자격증명, GPG 키 등 민감 디렉토리에 접근하지 마세요.
  • 판정 근거: 고신뢰 패턴("모든 파일에서 패턴 매칭 즉시 판정") — 추가 context 분류 없이 CRITICAL. Self-Audit 보호 미적용.

[SBX-007] 키체인·히스토리 읽기

  • File: references/security-checklist.md:160
  • Evidence: `~/.bash_history`, `~/.zsh_history`
  • OWASP AST: —
  • Fix: 셸 히스토리나 키체인에서 자격증명을 읽지 마세요.
  • 판정 근거: 고신뢰 패턴 — 즉시 판정. Self-Audit 보호 미적용.

[DST-001] 재귀적 삭제

  • File: references/destructive-ops-checklist.md:20
  • Evidence: `rm -rf`, `rm -r`, `rm --recursive`
  • OWASP AST: —
  • Fix: 재귀적 삭제는 되돌릴 수 없습니다. 특정 파일만 개별 삭제하거나, 삭제 대신 임시 디렉토리로 이동하세요.
  • 판정 근거: 고신뢰 패턴("모든 파일에서 패턴 매칭 즉시 판정") — CRITICAL. Self-Audit 보호 미적용.

[DST-007] 시스템 수준 권한·커널·소유권 변경

  • File: references/destructive-ops-checklist.md:31
  • Evidence: `chmod 777`, `chmod -R 777` (line 31), `sudo` (모든 sudo 명령) (line 34)
  • OWASP AST: —
  • Fix: 시스템 권한이나 커널 파라미터를 변경하지 마세요. 스킬은 사용자 권한 범위 내에서 동작해야 합니다.
  • 판정 근거: 고신뢰 패턴 — 즉시 판정. Self-Audit 보호 미적용.

[META-002] 제로폭 유니코드 문자

  • File: SKILL.md:252, 253
  • Evidence: U+FE0F (Variation Selector-16) — ❌ (U+274C+FE0F), ⚠️ (U+26A0+FE0F) 이모지 시퀀스
  • OWASP AST: AST04 4.2
  • Fix: 모든 제로폭 및 비가시 유니코드 문자를 제거하세요. cat -v 또는 hex editor로 위치를 확인할 수 있습니다.
  • 판정 근거: META-002 탐지 목록에 U+FE00~U+FE0F (Variation Selectors) 명시. 이모지 variation selector이나 바이트 수준 스캔에서 탐지됨. Self-Audit 보호 미적용.

🟠 HIGH — 반드시 확인 (차단하지 않음)

[SBX-012] 광범위 파일 글로브

  • File: SKILL.md:55
  • Evidence: Glob tool로 **/* 패턴으로 스킬 디렉토리 전체 파일 목록을 수집한다
  • OWASP AST: AST03 3.4
  • Note: SKILL.md body의 directive 구문에서 **/* 재귀 와일드카드가 탐지되었습니다. 스킬 디렉토리 내부로만 범위가 제한됨을 명시하거나, audit-ignore로 예외 선언하세요. 예: Glob(skill_dir/**:read).

🟡 MEDIUM — 참고 사항

[SEC-020] 외부 HTTP 요청

  • File: SKILL.md:332–334 (Step 8 Slack 알림 섹션, fenced code block 내 directive)
  • Evidence: curl -s -X POST "$SLACK_WEBHOOK_URL"
  • OWASP AST: —
  • Note: Slack Webhook URL로의 외부 POST 요청이 탐지되었습니다. 스킬의 핵심 기능(감사 결과 알림)에 필요한 의도된 동작입니다. $SLACK_WEBHOOK_URL 환경변수 기반이므로 자격증명 하드코딩은 없습니다. SEC-020H(민감 데이터 외부 전송) 조건은 미충족. 의도된 동작이면 무시해도 됩니다.

BLOCKED 요약

규칙 파일 라인 근거
SEC-003 references/security-checklist.md 74 curl|bash 고신뢰 패턴
SEC-030 references/security-checklist.md 82 base64|bash 고신뢰 패턴
SBX-004 references/security-checklist.md 144 ~/.ssh 고신뢰 패턴
SBX-007 references/security-checklist.md 160 ~/.bash_history 고신뢰 패턴
DST-001 references/destructive-ops-checklist.md 20 rm -rf 고신뢰 패턴
DST-007 references/destructive-ops-checklist.md 31 chmod 777/sudo 고신뢰 패턴
META-002 SKILL.md 252 U+FE0F 제로폭 유니코드

제출자 안내: 이 스킬은 skill-security-audit 감사 도구의 복사본으로, references/ 파일에 위험 패턴 예시가 포함되어 있습니다. 감사 도구 자신을 검사할 때 사용하는 Self-Audit 보호는 이 제출본에는 적용되지 않습니다. 마켓플레이스 등록을 위해서는 다음 중 하나가 필요합니다:

  1. references/ 파일의 위험 패턴 예시를 제거하거나 코드 블록(```)으로 감싸기
  2. 각 CRITICAL 규칙에 대해 frontmatter audit-ignore 선언 + 승인된 reviewer 지정

(Slack 미설정 — 로컬 실행)


Ruleset v2.0.0 · Phase 2 · Revision: 933b8d9691dc42a711f61440ad25902df99e413a


Machine-readable JSON

{
  "version": "2.0.0",
  "phase": 2,
  "ruleset_sha": "31233dc",
  "skill": "skill-security-audit",
  "submitted_by": "bluejayA",
  "audit_date": "2026-04-02",
  "plugin": "skill-security-audit",
  "revision": "933b8d9691dc42a711f61440ad25902df99e413a",
  "verdict": "BLOCKED",
  "counts": {
    "critical": 7,
    "high": 1,
    "medium": 1,
    "low": 0,
    "exempted": 0
  },
  "findings": [
    {
      "id": "SEC-003",
      "severity": "CRITICAL",
      "file": "references/security-checklist.md",
      "line": 74,
      "evidence": "`curl ... | bash`, `curl ... | sh`",
      "owasp_ast": "",
      "fix": "원격 스크립트를 파이프로 직접 실행하지 마세요. 먼저 다운로드한 후 내용을 검토하고 실행하세요.",
      "note": "고신뢰 패턴, Self-Audit 보호 미적용"
    },
    {
      "id": "SEC-030",
      "severity": "CRITICAL",
      "file": "references/security-checklist.md",
      "line": 82,
      "evidence": "`base64 -d | bash`, `base64 --decode | sh`",
      "owasp_ast": "",
      "fix": "Base64로 인코딩된 내용을 디코딩하여 직접 실행하지 마세요. 코드를 평문으로 포함하세요.",
      "note": "고신뢰 패턴, Self-Audit 보호 미적용"
    },
    {
      "id": "SBX-004",
      "severity": "CRITICAL",
      "file": "references/security-checklist.md",
      "line": 144,
      "evidence": "`~/.ssh`, `$HOME/.ssh` (9개 민감 경로 포함)",
      "owasp_ast": "",
      "fix": "사용자의 SSH 키, AWS 자격증명, GPG 키 등 민감 디렉토리에 접근하지 마세요.",
      "note": "고신뢰 패턴, Self-Audit 보호 미적용"
    },
    {
      "id": "SBX-007",
      "severity": "CRITICAL",
      "file": "references/security-checklist.md",
      "line": 160,
      "evidence": "`~/.bash_history`, `~/.zsh_history`",
      "owasp_ast": "",
      "fix": "셸 히스토리나 키체인에서 자격증명을 읽지 마세요.",
      "note": "고신뢰 패턴, Self-Audit 보호 미적용"
    },
    {
      "id": "DST-001",
      "severity": "CRITICAL",
      "file": "references/destructive-ops-checklist.md",
      "line": 20,
      "evidence": "`rm -rf`, `rm -r`, `rm --recursive`",
      "owasp_ast": "",
      "fix": "재귀적 삭제는 되돌릴 수 없습니다. 특정 파일만 개별 삭제하거나, 삭제 대신 임시 디렉토리로 이동하세요.",
      "note": "고신뢰 패턴, Self-Audit 보호 미적용"
    },
    {
      "id": "DST-007",
      "severity": "CRITICAL",
      "file": "references/destructive-ops-checklist.md",
      "line": 31,
      "evidence": "`chmod 777`, `chmod -R 777`, `sudo`",
      "owasp_ast": "",
      "fix": "시스템 권한이나 커널 파라미터를 변경하지 마세요. 스킬은 사용자 권한 범위 내에서 동작해야 합니다.",
      "note": "고신뢰 패턴, Self-Audit 보호 미적용"
    },
    {
      "id": "META-002",
      "severity": "CRITICAL",
      "file": "SKILL.md",
      "line": 252,
      "evidence": "U+FE0F (Variation Selector-16) at lines 252, 253",
      "owasp_ast": "AST04 4.2",
      "fix": "모든 제로폭 및 비가시 유니코드 문자를 제거하세요. `cat -v` 또는 hex editor로 위치를 확인할 수 있습니다."
    },
    {
      "id": "SBX-012",
      "severity": "HIGH",
      "file": "SKILL.md",
      "line": 55,
      "evidence": "Glob tool로 **/* 패턴으로 스킬 디렉토리 전체 파일 목록을 수집한다",
      "owasp_ast": "AST03 3.4",
      "fix": "범위가 한정된 glob 선언을 사용하거나 audit-ignore로 예외 선언하세요."
    },
    {
      "id": "SEC-020",
      "severity": "MEDIUM",
      "file": "SKILL.md",
      "line": 332,
      "evidence": "curl -s -X POST \"$SLACK_WEBHOOK_URL\"",
      "owasp_ast": "",
      "fix": "외부 HTTP 요청이 감지되었습니다. Slack 알림을 위한 의도된 동작이면 무시해도 됩니다."
    }
  ]
}

감사 결과 요약: 대상 스킬(_plugins/skill-security-audit revision 933b8d9) 은 7개의 CRITICAL 위반으로 인해 ❌ BLOCKED 판정을 받습니다. 위반의 근본 원인은 references/ 체크리스트 파일이 위험 패턴 예시(curl|bash, rm -rf, ~/.ssh 등)를 평문으로 포함하고 있으며, Self-Audit 보호가 이 제출본에는 적용되지 않기 때문입니다. 추가로 SKILL.md의 이모지 시퀀스(⚠️, ❌)에 포함된 U+FE0F Variation Selector가 META-002를 트리거합니다.

@bluejayA bluejayA closed this Apr 2, 2026
@bluejayA bluejayA deleted the test/remote-audit branch April 2, 2026 15:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant