trustdex 0.5.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +65 -7
- package/README.md +71 -7
- package/bin/trustdex.mjs +98 -1
- package/docs/ARCHITECTURE.ko.md +9 -2
- package/docs/ARCHITECTURE.md +11 -2
- package/docs/CLAUDE.ko.md +54 -1
- package/docs/CLAUDE.md +69 -1
- package/docs/CODEX.ko.md +50 -4
- package/docs/CODEX.md +62 -4
- package/docs/DEFENSIVE_USE_CASE.ko.md +85 -0
- package/docs/DEFENSIVE_USE_CASE.md +89 -0
- package/docs/EVALUATION.ko.md +46 -1
- package/docs/EVALUATION.md +48 -1
- package/docs/ROADMAP.ko.md +17 -2
- package/docs/ROADMAP.md +17 -2
- package/docs/SECURITY_RESEARCH.ko.md +7 -0
- package/docs/SECURITY_RESEARCH.md +7 -0
- package/docs/THREAT_MODEL.ko.md +8 -1
- package/docs/THREAT_MODEL.md +8 -1
- package/examples/adversarial/README.ko.md +31 -0
- package/examples/adversarial/README.md +31 -0
- package/examples/adversarial/drift-after.json +11 -0
- package/examples/adversarial/drift-before.json +8 -0
- package/examples/adversarial/expected.json +30 -0
- package/examples/adversarial/mcp-config.json +32 -0
- package/examples/adversarial/permissions/README.ko.md +15 -0
- package/examples/adversarial/permissions/README.md +15 -0
- package/examples/adversarial/permissions/claude-expanded.settings.json +30 -0
- package/examples/adversarial/permissions/claude-restrictive.settings.json +16 -0
- package/examples/adversarial/permissions/codex-expanded.toml +13 -0
- package/examples/adversarial/permissions/codex-restrictive.toml +13 -0
- package/examples/adversarial/permissions/expected.json +18 -0
- package/examples/adversarial/policy.json +10 -0
- package/examples/claude.mcp.json +24 -0
- package/examples/claude.policy.json +6 -0
- package/examples/claude.settings.json +26 -0
- package/examples/codex.config.toml +16 -0
- package/examples/codex.permissions.toml +13 -0
- package/examples/mcp.json +22 -0
- package/examples/trust-store.example.json +16 -0
- package/examples/trustdex.policy.json +14 -0
- package/package.json +5 -3
- package/schemas/permission-posture-diff-v1.schema.json +78 -0
- package/schemas/permission-posture-v1.schema.json +162 -0
- package/src/claude-settings.mjs +173 -0
- package/src/codex-config.mjs +9 -7
- package/src/codex-settings.mjs +247 -0
- package/src/policy-packs.mjs +38 -2
- package/src/posture.mjs +540 -0
package/docs/CLAUDE.md
CHANGED
|
@@ -10,7 +10,7 @@ upload your configuration. An ALLOW decision means the evidence matched your pol
|
|
|
10
10
|
it does not prove that server code is safe.
|
|
11
11
|
|
|
12
12
|
The Claude-specific commands are available in TrustDex 0.5.0 and later.
|
|
13
|
-
Use `npx trustdex@0.
|
|
13
|
+
Use `npx trustdex@0.7.0` in place of `node ./bin/trustdex.mjs` in the examples
|
|
14
14
|
below to run the published CLI, or use the commands directly from a source checkout.
|
|
15
15
|
|
|
16
16
|
## Supported configuration
|
|
@@ -91,6 +91,74 @@ Official references:
|
|
|
91
91
|
[Claude Code MCP](https://code.claude.com/docs/en/mcp) and
|
|
92
92
|
[CLI flags](https://code.claude.com/docs/en/cli-reference).
|
|
93
93
|
|
|
94
|
+
## Claude Code permission settings
|
|
95
|
+
|
|
96
|
+
MCP gating controls which external servers are exposed. Claude Code's own permission
|
|
97
|
+
rules separately control which agent actions run without prompting. Inspect a user,
|
|
98
|
+
project, local, or managed settings file as a separate step:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
node ./bin/trustdex.mjs inspect-claude-settings \
|
|
102
|
+
./.claude/settings.json \
|
|
103
|
+
--pack strict \
|
|
104
|
+
--json
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
The adapter validates the documented `permissions` fields `allow`, `ask`, `deny`,
|
|
108
|
+
`defaultMode`, `additionalDirectories`, `disableBypassPermissionsMode`,
|
|
109
|
+
`disableAutoMode`, and `blockReadsOutsideWorkingDirectories`. Unknown permission
|
|
110
|
+
fields, malformed rule arrays, empty rules, unsupported modes, unanchored wildcard
|
|
111
|
+
allow rules, and parenthesized MCP rules fail closed.
|
|
112
|
+
|
|
113
|
+
Automatic grants are classified by capability rather than echoing their values:
|
|
114
|
+
|
|
115
|
+
| Observed setting | Strict result |
|
|
116
|
+
| --- | --- |
|
|
117
|
+
| narrow shell auto-approval | `BLOCK` |
|
|
118
|
+
| broad shell, filesystem, network, or subagent auto-approval | `BLOCK` |
|
|
119
|
+
| filesystem, network, MCP, or subagent auto-approval | at least `ASK` |
|
|
120
|
+
| `bypassPermissions` default mode | `BLOCK` |
|
|
121
|
+
| `auto` or `acceptEdits` default mode | at least `ASK` |
|
|
122
|
+
| additional directories or explicitly unblocked outside reads | at least `ASK` |
|
|
123
|
+
| hooks or an API-key helper | `BLOCK` |
|
|
124
|
+
| environment, sandbox, plugin, or uninspected root settings | at least `ASK` |
|
|
125
|
+
|
|
126
|
+
`ask` and `deny` rules are restrictive and do not add a risk signal by themselves.
|
|
127
|
+
The report includes rule counts and capability categories, but not command patterns,
|
|
128
|
+
paths, domains, hook bodies, helper commands, directory values, environment values,
|
|
129
|
+
or plugin identifiers. For the same reason, this first adapter does not create a
|
|
130
|
+
content fingerprint or signed review record for settings files.
|
|
131
|
+
|
|
132
|
+
This command inspects one file at a time. Claude Code merges settings across scopes
|
|
133
|
+
and command-line flags can add session permissions, so the result is not the effective
|
|
134
|
+
runtime policy. Confirm loaded sources and permissions in Claude Code and use OS-level
|
|
135
|
+
sandboxing for enforcement. Official references: [settings files and precedence](https://code.claude.com/docs/en/settings),
|
|
136
|
+
[permissions](https://code.claude.com/docs/en/permissions), and
|
|
137
|
+
[security](https://code.claude.com/docs/en/security).
|
|
138
|
+
|
|
139
|
+
### Permission posture drift
|
|
140
|
+
|
|
141
|
+
Create a baseline after review and compare a later settings state:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
node ./bin/trustdex.mjs snapshot-claude-settings \
|
|
145
|
+
./.claude/settings.json \
|
|
146
|
+
--pack strict \
|
|
147
|
+
--out .trustdex/claude-posture.json
|
|
148
|
+
|
|
149
|
+
node ./bin/trustdex.mjs diff-permissions \
|
|
150
|
+
.trustdex/approved-claude-posture.json \
|
|
151
|
+
.trustdex/current-claude-posture.json
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
New automatic tool categories, added rules or directories, relaxed protective
|
|
155
|
+
switches, a riskier default mode, new risk signals, or changed policy semantics return
|
|
156
|
+
`NEEDS_REVIEW` and exit `1`. Restriction-only changes return `RESTRICTED` and exit `0`.
|
|
157
|
+
The snapshot excludes source paths and every permission, hook, directory, domain,
|
|
158
|
+
credential-helper, plugin, and environment value. Because it intentionally does not
|
|
159
|
+
fingerprint redacted rule contents, a same-count change inside one capability category
|
|
160
|
+
must still be covered by source review or runtime controls.
|
|
161
|
+
|
|
94
162
|
## Signed review and drift
|
|
95
163
|
|
|
96
164
|
Keep the Claude adapter throughout a review workflow; generic MCP commands do not
|
package/docs/CODEX.ko.md
CHANGED
|
@@ -15,7 +15,7 @@ Codex 클라이언트는 `config.toml`(기본적으로 `~/.codex/` 아래)의 `[
|
|
|
15
15
|
### 1. 현재 설정 검사
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
npx trustdex@0.
|
|
18
|
+
npx trustdex@0.7.0 inspect-codex ~/.codex/config.toml --pack strict
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
이 명령은 파일을 로컬에서 읽으며 네트워크 요청을 하지 않습니다. 출력에는 각 MCP 서버, 소스 유형, 신뢰 신호 및 ALLOW / ASK / BLOCK 결정이 표시됩니다. 환경 변수 이름은 표시될 수 있지만 값은 절대 표시되지 않습니다.
|
|
@@ -25,7 +25,7 @@ npx trustdex@0.4.4 inspect-codex ~/.codex/config.toml --pack strict
|
|
|
25
25
|
### 2. 게이트된 사본 작성
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
npx trustdex@0.
|
|
28
|
+
npx trustdex@0.7.0 gate-codex ~/.codex/config.toml \
|
|
29
29
|
--pack official-first \
|
|
30
30
|
--trust-store ./trust-store.json \
|
|
31
31
|
--out ./gated-config.toml
|
|
@@ -51,13 +51,59 @@ TrustDex는 `config.toml`을 직접 수정하지 않습니다. 원본 파일을
|
|
|
51
51
|
|
|
52
52
|
TrustDex는 Codex MCP 섹션에 사용되는 TOML 구성만 파싱합니다. 지원하지 않는 MCP 키, 중첩 하위 섹션 또는 구문은 건너뛰지 않고 오류로 보고되므로 TrustDex가 완전히 읽을 수 없는 설정이 조용히 ALLOW가 되지 않습니다.
|
|
53
53
|
|
|
54
|
+
## Codex 실행 권한 검사
|
|
55
|
+
|
|
56
|
+
MCP 게이트는 외부 도구를 제어하고 Codex 승인·샌드박스 설정은 에이전트가 로컬에서 할 수 있는 일을 제어합니다. 이 설정을 별도로 검사하세요.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
node ./bin/trustdex.mjs inspect-codex-settings \
|
|
60
|
+
./examples/codex.permissions.toml \
|
|
61
|
+
--pack strict \
|
|
62
|
+
--json
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
어댑터는 `approval_policy`, `approvals_reviewer`, `sandbox_mode`, `default_permissions`, `web_search` 및 문서화된 `sandbox_workspace_write` 키를 검증합니다. 다음을 보고합니다.
|
|
66
|
+
|
|
67
|
+
- `danger-full-access`는 `BLOCK`
|
|
68
|
+
- `workspace-write`, 외부 네트워크 접근, 추가 쓰기 가능 루트, 실시간 웹 검색, 자동 검토 및 `approval_policy = "never"`는 최소 `ASK`
|
|
69
|
+
- 명시적인 멀티 에이전트 활성화, 사용자 정의 권한 프로필, 앱/플러그인 섹션 및 완전히 검사하지 않는 설정은 `ASK`
|
|
70
|
+
|
|
71
|
+
보안 관련 값의 타입이나 열거 값이 지원되지 않으면 안전하게 실패합니다. 공식 설정 레퍼런스가 함께 사용하지 말라고 명시하므로 `default_permissions`와 기존 샌드박스 설정을 같이 사용해도 실패합니다. 쓰기 가능 루트 경로와 관련 없는 설정의 값은 보관·출력·지문화하지 않습니다.
|
|
72
|
+
|
|
73
|
+
이 첫 번째 어댑터는 한 번에 파일 하나를 검사하며 사용자, 프로젝트, 프로필, 관리형, 시스템 또는 명령줄 설정을 하나의 실제 정책으로 병합하지 않습니다. 이는 정적 증거이며 Codex 샌드박스 자체가 아닙니다. 클라이언트에서 활성 권한 프로필을 확인하세요. 공식 OpenAI 문서는 샌드박스 경계와 승인 처리를 구분하며 `workspace-write`와 `on-request` 조합을 더 낮은 위험의 로컬 자동화 구성으로 안내합니다. [설정 레퍼런스](https://developers.openai.com/codex/config-reference)와 [샌드박스 가이드](https://developers.openai.com/codex/sandboxing)를 참고하세요.
|
|
74
|
+
|
|
75
|
+
### 권한 상태 드리프트
|
|
76
|
+
|
|
77
|
+
검토한 구조적 기준 상태를 생성해 커밋한 뒤 CI에서 현재 스냅샷을 만들고
|
|
78
|
+
비교하세요.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
node ./bin/trustdex.mjs snapshot-codex-settings \
|
|
82
|
+
~/.codex/config.toml \
|
|
83
|
+
--pack strict \
|
|
84
|
+
--out .trustdex/codex-posture.json
|
|
85
|
+
|
|
86
|
+
node ./bin/trustdex.mjs diff-permissions \
|
|
87
|
+
.trustdex/approved-codex-posture.json \
|
|
88
|
+
.trustdex/current-codex-posture.json \
|
|
89
|
+
--json
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
네트워크 활성화, 더 넓은 쓰기 범위, 더 약한 샌드박스나 승인 상태, 실시간 검색,
|
|
93
|
+
서브에이전트 활성화, 새 위험 신호 및 정책 의미 변경은 검토를 요구하고 종료 코드
|
|
94
|
+
`1`을 반환합니다. 제한적으로만 변한 경우 종료 코드 `0`을 반환합니다. 스냅샷은
|
|
95
|
+
구조적 개수와 문서화된 열거 값만 저장하며 설정 파일 경로, 쓰기 가능 루트 경로,
|
|
96
|
+
사용자 정의 프로필 값 또는 관련 없는 설정은 저장하지 않습니다. 다이제스트는
|
|
97
|
+
우발적이거나 조정되지 않은 편집을 감지하지만 누구나 서명되지 않은 다이제스트를
|
|
98
|
+
다시 계산할 수 있습니다. 인증이 아니며 Codex 런타임 샌드박스를 대체하지 않습니다.
|
|
99
|
+
|
|
54
100
|
### 스킬 및 플러그인
|
|
55
101
|
|
|
56
102
|
에이전트 스킬과 플러그인 매니페스트도 같은 방법으로 검사할 수 있습니다.
|
|
57
103
|
|
|
58
104
|
```bash
|
|
59
|
-
npx trustdex@0.
|
|
60
|
-
npx trustdex@0.
|
|
105
|
+
npx trustdex@0.7.0 inspect-skill ./path/to/SKILL.md --pack strict
|
|
106
|
+
npx trustdex@0.7.0 inspect-plugin ./path/to/plugin.json --pack strict
|
|
61
107
|
```
|
|
62
108
|
|
|
63
109
|
이 명령은 파이프로 연결된 셸 설치 프로그램, 민감한 경로 참조, 네트워크 URL 및 와일드카드 도구 범위와 같은 관찰 가능한 신호를 보고합니다. 스킬이나 플러그인이 안전하다는 것을 증명하지는 않습니다.
|
package/docs/CODEX.md
CHANGED
|
@@ -15,7 +15,7 @@ Codex clients read MCP server definitions from `[mcp_servers.<name>]` tables in
|
|
|
15
15
|
### 1. Inspect the current configuration
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
npx trustdex@0.
|
|
18
|
+
npx trustdex@0.7.0 inspect-codex ~/.codex/config.toml --pack strict
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
This reads the file locally and makes no network request. The output lists each MCP server, its source type, trust signals, and an ALLOW / ASK / BLOCK decision. Environment variable names may appear; their values never do.
|
|
@@ -25,7 +25,7 @@ Use `--json` for machine-readable output and `--trust-store ./trust-store.json`
|
|
|
25
25
|
### 2. Write a gated copy
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
npx trustdex@0.
|
|
28
|
+
npx trustdex@0.7.0 gate-codex ~/.codex/config.toml \
|
|
29
29
|
--pack official-first \
|
|
30
30
|
--trust-store ./trust-store.json \
|
|
31
31
|
--out ./gated-config.toml
|
|
@@ -51,13 +51,71 @@ The signed `snapshot`, `approve`, and `recheck` drift workflow in the [README](.
|
|
|
51
51
|
|
|
52
52
|
TrustDex parses only the TOML constructs used by Codex MCP sections. An unsupported MCP key, nested subsection, or syntax is reported as an error instead of being skipped, so a configuration TrustDex cannot fully read never silently becomes ALLOW.
|
|
53
53
|
|
|
54
|
+
## Inspect Codex execution permissions
|
|
55
|
+
|
|
56
|
+
MCP gating controls external tools, while Codex approval and sandbox settings control
|
|
57
|
+
what the agent can do locally. Inspect those settings separately:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
node ./bin/trustdex.mjs inspect-codex-settings \
|
|
61
|
+
./examples/codex.permissions.toml \
|
|
62
|
+
--pack strict \
|
|
63
|
+
--json
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The adapter validates `approval_policy`, `approvals_reviewer`, `sandbox_mode`,
|
|
67
|
+
`default_permissions`, `web_search`, and the documented
|
|
68
|
+
`sandbox_workspace_write` keys. It reports:
|
|
69
|
+
|
|
70
|
+
- `danger-full-access` as `BLOCK`
|
|
71
|
+
- `workspace-write`, outbound network access, additional writable roots, live web search, automatic review, and `approval_policy = "never"` as at least `ASK`
|
|
72
|
+
- explicit multi-agent enablement, custom permission profiles, app/plugin sections, and settings it does not fully inspect as `ASK`
|
|
73
|
+
|
|
74
|
+
Security-relevant values fail closed when their type or enum value is unsupported.
|
|
75
|
+
`default_permissions` also fails when combined with the legacy sandbox settings, as
|
|
76
|
+
the official configuration reference says not to combine them. Writable-root paths
|
|
77
|
+
and values from unrelated settings are not retained, printed, or fingerprinted.
|
|
78
|
+
|
|
79
|
+
This first adapter inspects one file at a time; it does not merge user, project,
|
|
80
|
+
profile, managed, system, or command-line configuration into an effective policy.
|
|
81
|
+
It is static evidence, not the Codex sandbox itself. Confirm the active permission
|
|
82
|
+
profile in the client. The official OpenAI documentation distinguishes the sandbox
|
|
83
|
+
boundary from approval handling and documents `workspace-write` plus `on-request`
|
|
84
|
+
as the lower-risk local automation combination. See the [configuration reference](https://developers.openai.com/codex/config-reference)
|
|
85
|
+
and [sandbox guide](https://developers.openai.com/codex/sandboxing).
|
|
86
|
+
|
|
87
|
+
### Permission posture drift
|
|
88
|
+
|
|
89
|
+
Create and commit a reviewed structural baseline, then generate a current snapshot in
|
|
90
|
+
CI and compare them:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
node ./bin/trustdex.mjs snapshot-codex-settings \
|
|
94
|
+
~/.codex/config.toml \
|
|
95
|
+
--pack strict \
|
|
96
|
+
--out .trustdex/codex-posture.json
|
|
97
|
+
|
|
98
|
+
node ./bin/trustdex.mjs diff-permissions \
|
|
99
|
+
.trustdex/approved-codex-posture.json \
|
|
100
|
+
.trustdex/current-codex-posture.json \
|
|
101
|
+
--json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Network enablement, broader writable scope, a weaker sandbox or approval posture,
|
|
105
|
+
live search, subagent enablement, new risk signals, and policy-semantic changes require
|
|
106
|
+
review and exit `1`. Restriction-only changes exit `0`. The snapshot stores structural
|
|
107
|
+
counts and documented enums, not the config path, writable-root paths, custom profile
|
|
108
|
+
values, or unrelated settings. Its digest detects accidental or unreconciled edits,
|
|
109
|
+
but anyone can recompute an unsigned digest; it is not authentication or a replacement
|
|
110
|
+
for the Codex runtime sandbox.
|
|
111
|
+
|
|
54
112
|
### Skills and plugins
|
|
55
113
|
|
|
56
114
|
Agent skills and plugin manifests can be inspected the same way:
|
|
57
115
|
|
|
58
116
|
```bash
|
|
59
|
-
npx trustdex@0.
|
|
60
|
-
npx trustdex@0.
|
|
117
|
+
npx trustdex@0.7.0 inspect-skill ./path/to/SKILL.md --pack strict
|
|
118
|
+
npx trustdex@0.7.0 inspect-plugin ./path/to/plugin.json --pack strict
|
|
61
119
|
```
|
|
62
120
|
|
|
63
121
|
These report observable signals such as piped shell installers, references to sensitive paths, network URLs, and wildcard tool scopes. They do not prove a skill or plugin is safe.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# 방어적 AI 에이전트 보안 사용 사례
|
|
2
|
+
|
|
3
|
+
<p align="right">
|
|
4
|
+
<a href="./DEFENSIVE_USE_CASE.md">English</a> | <strong>한국어</strong>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
이 문서는 TrustDex의 합법적인 방어 목적과 운영 경계를 쉽게 검증할 수 있도록 정리한 증거 색인입니다. Anthropic의 보증, CVP 승인 또는 특정 운영자가 계정 수준 보안 요구사항을 충족한다는 진술이 아닙니다.
|
|
8
|
+
|
|
9
|
+
## 해결하려는 문제
|
|
10
|
+
|
|
11
|
+
코딩 에이전트의 자율성이 커질수록 실제 공격 표면은 모델에만 머물지 않습니다. 에이전트가 불러올 수 있는 도구, 별도 확인 없이 받는 권한, 도구가 참조하는 자격 증명, 시간이 지나면서 접근 범위를 조용히 넓힐 수 있는 설정 변경도 공격 표면에 포함됩니다.
|
|
12
|
+
|
|
13
|
+
TrustDex는 이 표면에 대한 노출 전 통제를 연구하고 구현합니다. 현재 프로젝트는 두 가지 구체적인 질문을 다룹니다.
|
|
14
|
+
|
|
15
|
+
1. 명시적인 로컬 정책에 따라 에이전트가 특정 MCP 서버, 스킬 또는 플러그인을 보고 호출하도록 허용해야 하는가?
|
|
16
|
+
2. Claude Code 또는 Codex 설정이 자동 셸, 파일 시스템, 네트워크, MCP, 서브에이전트 또는 샌드박스 기능을 부여하여 검토나 차단이 필요한가?
|
|
17
|
+
|
|
18
|
+
## 의도한 방어 작업
|
|
19
|
+
|
|
20
|
+
이 프로젝트는 TrustDex 자체와 운영자가 소유하거나 명시적으로 테스트 허가를 받은 시스템에 대한 작업에 AI 지원을 사용합니다. 일반적인 작업은 다음과 같습니다.
|
|
21
|
+
|
|
22
|
+
- 파서와 정책 코드에서 fail-open 동작 검토
|
|
23
|
+
- 비활성 적대적 설정 픽스처 개발
|
|
24
|
+
- 보고서, 스냅샷 및 지문에 비밀 값이 남지 않는지 확인
|
|
25
|
+
- 권한 확장, 출처 대체 및 검토 드리프트 위협 모델링
|
|
26
|
+
- 방어적 발견 사항과 완화책에 대한 회귀 테스트 작성
|
|
27
|
+
- 민감 정보를 완전히 제거한 파일럿 피드백의 거짓 양성·거짓 음성 분석
|
|
28
|
+
|
|
29
|
+
이 작업은 방어적 엔지니어링입니다. 자격 증명 탈취, 지속성 확보, 파괴 행위, 데이터 유출, 악성 코드 배포, 대량 악용 또는 무단 접근을 필요로 하지 않습니다.
|
|
30
|
+
|
|
31
|
+
## 허가 및 데이터 경계
|
|
32
|
+
|
|
33
|
+
- 테스트는 운영자 소유의 저장소와 계정, 명시적으로 허가된 시스템 및 격리된 로컬 테스트 환경으로 제한합니다.
|
|
34
|
+
- 체크인된 적대적 입력은 비활성 데이터입니다. 예약된 `.invalid` 도메인, 존재하지 않는 패키지 식별자 및 자리표시자 값을 사용합니다.
|
|
35
|
+
- 일반 검사는 로컬에서만 수행하며 검사 대상 MCP 서버, Claude 권한 규칙, 스킬, 플러그인 또는 훅을 실행하지 않습니다.
|
|
36
|
+
- 명시적인 출처 명령은 공개 GitHub, npm 또는 MCP Registry 메타데이터를 조회할 수 있습니다. 별도의 사용자 작업 없이는 관찰 결과가 신뢰로 변환되지 않습니다.
|
|
37
|
+
- 실제 자격 증명, 비공개 엔드포인트, 고객 데이터, 독점 프롬프트 및 공격용 자료는 공개 픽스처나 보고서에 포함하지 않습니다.
|
|
38
|
+
|
|
39
|
+
## 이 저장소가 보여 주는 통제 증거
|
|
40
|
+
|
|
41
|
+
| 통제 목표 | 공개 증거 |
|
|
42
|
+
| --- | --- |
|
|
43
|
+
| 검토되지 않은 도구를 에이전트에서 분리 | ALLOW/ASK/BLOCK 정책 엔진과 필터링된 MCP 게이트 |
|
|
44
|
+
| 기능 범위 확장 감지 | MCP, Claude Code 및 Codex 설정 신호와 적대적 회귀 테스트 |
|
|
45
|
+
| 조용한 파서 우회 방지 | 지원하지 않는 보안 관련 구문을 거부하는 전용 어댑터 |
|
|
46
|
+
| 증거에서 비밀 값 제외 | 출력, 스냅샷 및 설정 지문에서 비밀 값을 제거하는 테스트 |
|
|
47
|
+
| 승인 상태의 드리프트 표시 | 결정론적 스냅샷, Ed25519 검토 기록 및 재검사 명령 |
|
|
48
|
+
| 공급망 모호성 감소 | 명시적 출처 관찰, 아티팩트 다이제스트 검증, 릴리스 체크섬, SBOM 및 빌드 증명 |
|
|
49
|
+
| 연구 재현성 유지 | 비활성 픽스처, 문서화된 기대 결과, 크로스 플랫폼 CI 및 CodeQL |
|
|
50
|
+
|
|
51
|
+
ALLOW 결과는 여전히 관찰된 증거에 대한 정책 결과일 뿐입니다. TrustDex는 샌드박스, 악성 코드 스캐너 또는 서드파티 코드가 안전하다는 증명이 아닙니다.
|
|
52
|
+
|
|
53
|
+
## Claude Code 및 Codex 권한 연구
|
|
54
|
+
|
|
55
|
+
`inspect-claude-settings`는 문서화된 `permissions` 객체를 검사하고 셸, 파일 시스템, 네트워크, MCP 및 서브에이전트 기능의 자동 승인을 보고합니다. 또한 훅, 자격 증명 도우미, 환경 설정, 샌드박스 설정 및 플러그인 로딩의 존재를 값은 보관하지 않은 채 드러냅니다.
|
|
56
|
+
|
|
57
|
+
이는 정적 증거이지 런타임 강제 적용이 아닙니다. 모든 Claude 설정 범위를 병합하거나, 명령줄 플래그를 검사하거나, 관리형 설정이 세션에 실제 적용되었음을 증명하거나, Claude Code 샌드박싱을 대체하지 않습니다. 운영자는 실제 런타임 설정을 별도로 확인해야 합니다.
|
|
58
|
+
|
|
59
|
+
`inspect-codex-settings`는 Codex 승인 정책, 검토자 선택, 샌드박스 종류, 네트워크 접근, 추가 쓰기 가능 루트 개수, 웹 검색 모드 및 명시적인 서브에이전트 활성화를 평가합니다. 완전히 파싱하지 않는 사용자 정의 권한, 앱 및 플러그인 표면은 값은 보관하지 않고 보고합니다. 마찬가지로 모든 Codex 설정 계층을 병합하거나 활성 Codex 샌드박스를 대체하지 않습니다.
|
|
60
|
+
|
|
61
|
+
## CVP 신청 경계
|
|
62
|
+
|
|
63
|
+
Anthropic의 현재 Cyber Verification Program 신청은 검증 가능한 개인 또는 조직 정보, 보안 작업 설명 및 요청 티어에 해당하는 통제 준수 확인을 요구합니다. 이 저장소는 보안 작업 설명을 뒷받침할 수 있지만, 저장소 변경만으로 운영자 신원을 증명하거나 계정·기기 통제를 충족할 수는 없습니다.
|
|
64
|
+
|
|
65
|
+
개인 신청자는 신청 전에 최신 요구사항을 공식 문서에서 직접 확인해야 합니다. 2026년 10월 기준 Anthropic은 개인에게 Defense Access만 제공하며, 공유 세션이 아닌 개인 접근, MFA 활성화, 공개된 기한까지 피싱 방지 MFA 전환 및 장기 자격 증명 중단을 요구한다고 안내합니다. Claude Code의 OAuth 로그인이 퍼스트파티 사용 경로입니다. 공식 [Cyber Verification Program](https://support.claude.com/en/articles/14604842-cyber-verification-program)과 [CVP 보안 요구사항](https://support.claude.com/en/articles/17202708-cyber-verification-program-security-requirements)을 확인하세요.
|
|
66
|
+
|
|
67
|
+
실제로 구현되어 있고 증거를 제시할 수 있는 통제만 신청서에 기재하세요. 내부 작업용 CVP 접근 권한은 고객 대상 보안 서비스나 제품을 자동으로 허가하지 않습니다.
|
|
68
|
+
|
|
69
|
+
## 재현 가능한 증거
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npm test
|
|
73
|
+
npm run check
|
|
74
|
+
npm run test:research
|
|
75
|
+
|
|
76
|
+
node ./bin/trustdex.mjs inspect-claude-settings \
|
|
77
|
+
./examples/claude.settings.json \
|
|
78
|
+
--pack strict
|
|
79
|
+
|
|
80
|
+
node ./bin/trustdex.mjs inspect-codex-settings \
|
|
81
|
+
./examples/codex.permissions.toml \
|
|
82
|
+
--pack strict
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Claude 명령은 예제에 셸 자동 승인 규칙이 포함되어 있어 의도적으로 종료 코드 `2`를 반환합니다. Codex 명령은 제한된 작업 공간 쓰기 기능에도 검토가 필요하므로 종료 코드 `1`을 반환합니다. 예상 결과와 한계는 [방어적 평가](EVALUATION.ko.md), [보안 연구](SECURITY_RESEARCH.ko.md) 및 [위협 모델](THREAT_MODEL.ko.md)을 참고하세요.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Defensive AI-agent security use case
|
|
2
|
+
|
|
3
|
+
<p align="right">
|
|
4
|
+
<strong>English</strong> | <a href="./DEFENSIVE_USE_CASE.ko.md">한국어</a>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
This document makes the legitimate defensive purpose and operating boundary of TrustDex easy to verify. It is an evidence index, not an Anthropic endorsement, a CVP approval, or an attestation that any particular operator satisfies account-level security requirements.
|
|
8
|
+
|
|
9
|
+
## Problem being addressed
|
|
10
|
+
|
|
11
|
+
As coding agents become more autonomous, their effective attack surface includes more than the model. It also includes the tools they can load, the permissions they receive without a prompt, the credentials those tools can reference, and the configuration changes that may silently widen access over time.
|
|
12
|
+
|
|
13
|
+
TrustDex researches and implements pre-exposure controls for that surface. The current project asks two concrete questions:
|
|
14
|
+
|
|
15
|
+
1. Should an agent be allowed to see and invoke a particular MCP server, skill, or plugin under an explicit local policy?
|
|
16
|
+
2. Do Claude Code or Codex settings grant automatic shell, filesystem, network, MCP, subagent, or sandbox capabilities that need review or blocking?
|
|
17
|
+
|
|
18
|
+
## Intended defensive work
|
|
19
|
+
|
|
20
|
+
The project uses AI assistance for work on TrustDex itself and other systems the operator owns or is explicitly authorized to test. Typical tasks include:
|
|
21
|
+
|
|
22
|
+
- reviewing parsers and policy code for fail-open behavior
|
|
23
|
+
- developing inert adversarial configuration fixtures
|
|
24
|
+
- checking that reports, snapshots, and fingerprints do not retain secret values
|
|
25
|
+
- threat modeling permission expansion, provenance substitution, and review drift
|
|
26
|
+
- writing regression tests for defensive findings and proposed mitigations
|
|
27
|
+
- analyzing false positives and false negatives from fully redacted pilot feedback
|
|
28
|
+
|
|
29
|
+
This work is defensive engineering. It does not require credential theft, persistence, destructive actions, data exfiltration, malware deployment, mass exploitation, or unauthorized access.
|
|
30
|
+
|
|
31
|
+
## Authorization and data boundary
|
|
32
|
+
|
|
33
|
+
- Testing is limited to the operator's own repositories and accounts, explicitly authorized systems, and isolated local test environments.
|
|
34
|
+
- Checked-in adversarial inputs are inert data. They use reserved `.invalid` domains, nonexistent package identities, and placeholder values.
|
|
35
|
+
- Normal inspection is local-only and does not execute inspected MCP servers, Claude permission rules, skills, plugins, or hooks.
|
|
36
|
+
- Explicit provenance commands may query public GitHub, npm, or MCP Registry metadata. Observation is never converted into trust without a separate user action.
|
|
37
|
+
- Real credentials, private endpoints, customer data, proprietary prompts, and exploit material do not belong in public fixtures or reports.
|
|
38
|
+
|
|
39
|
+
## Controls evidenced by this repository
|
|
40
|
+
|
|
41
|
+
| Control objective | Public evidence |
|
|
42
|
+
| --- | --- |
|
|
43
|
+
| Keep unreviewed tools away from the agent | ALLOW/ASK/BLOCK policy engine and filtered MCP gates |
|
|
44
|
+
| Detect capability expansion | MCP, Claude Code, and Codex settings signals plus adversarial regression tests |
|
|
45
|
+
| Avoid silent parser bypass | focused adapters reject unsupported security-relevant syntax |
|
|
46
|
+
| Keep secrets out of evidence | tests for redaction from output, snapshots, and configuration fingerprints |
|
|
47
|
+
| Make approval drift visible | deterministic snapshots, Ed25519 review records, and recheck commands |
|
|
48
|
+
| Reduce supply-chain ambiguity | explicit provenance observations, artifact digest verification, release checksums, SBOMs, and build attestations |
|
|
49
|
+
| Keep research reproducible | inert fixtures, documented expectations, cross-platform CI, and CodeQL |
|
|
50
|
+
|
|
51
|
+
An ALLOW result is still only a policy result over observed evidence. TrustDex is not a sandbox, malware scanner, or proof that third-party code is safe.
|
|
52
|
+
|
|
53
|
+
## Claude Code and Codex permission research
|
|
54
|
+
|
|
55
|
+
`inspect-claude-settings` examines the documented `permissions` object and reports automatic approval of shell, filesystem, network, MCP, and subagent capabilities. It also surfaces the presence of hooks, credential helpers, environment settings, sandbox configuration, and plugin loading without retaining their values.
|
|
56
|
+
|
|
57
|
+
This is static evidence, not runtime enforcement. It does not merge every Claude settings scope, inspect command-line flags, prove that managed settings reached a session, or replace Claude Code sandboxing. The operator must confirm the effective runtime configuration separately.
|
|
58
|
+
|
|
59
|
+
`inspect-codex-settings` evaluates Codex approval policy, reviewer choice, sandbox
|
|
60
|
+
class, network access, additional writable-root count, web-search mode, and explicit
|
|
61
|
+
subagent enablement. It reports custom permission, app, and plugin surfaces that it
|
|
62
|
+
does not fully parse without retaining their values. It likewise does not merge every
|
|
63
|
+
Codex configuration layer or replace the active Codex sandbox.
|
|
64
|
+
|
|
65
|
+
## CVP application boundary
|
|
66
|
+
|
|
67
|
+
Anthropic's current Cyber Verification Program application asks for verifiable identity or organization details, a description of security work, and an attestation to the controls for the requested tier. This repository can support the security-work description, but repository changes cannot establish the operator's identity or satisfy account and device controls by themselves.
|
|
68
|
+
|
|
69
|
+
An individual applicant should verify current requirements directly before applying. As of October 2026, Anthropic states that individuals are eligible for Defense Access only, must use personal access rather than shared sessions, must enable MFA, and must transition to phishing-resistant MFA and away from long-lived credentials by the published cutoff. Claude Code's OAuth sign-in is the intended first-party path. See the official [Cyber Verification Program](https://support.claude.com/en/articles/14604842-cyber-verification-program) and [CVP security requirements](https://support.claude.com/en/articles/17202708-cyber-verification-program-security-requirements).
|
|
70
|
+
|
|
71
|
+
Do not claim a control in an application unless it is actually implemented and can be evidenced. CVP access for internal work does not automatically authorize a customer-facing security service or product.
|
|
72
|
+
|
|
73
|
+
## Reproducible evidence
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npm test
|
|
77
|
+
npm run check
|
|
78
|
+
npm run test:research
|
|
79
|
+
|
|
80
|
+
node ./bin/trustdex.mjs inspect-claude-settings \
|
|
81
|
+
./examples/claude.settings.json \
|
|
82
|
+
--pack strict
|
|
83
|
+
|
|
84
|
+
node ./bin/trustdex.mjs inspect-codex-settings \
|
|
85
|
+
./examples/codex.permissions.toml \
|
|
86
|
+
--pack strict
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The Claude command intentionally exits with code `2` because its example contains a shell auto-approval rule. The Codex command exits with code `1` because bounded workspace-write capabilities still require review. See [Defensive evaluation](EVALUATION.md), [Security research](SECURITY_RESEARCH.md), and the [Threat model](THREAT_MODEL.md) for the expected results and limitations.
|
package/docs/EVALUATION.ko.md
CHANGED
|
@@ -32,8 +32,53 @@
|
|
|
32
32
|
|
|
33
33
|
자리표시자 값 자체는 검사 결과나 스냅샷 어디에도 나타나면 안 됩니다.
|
|
34
34
|
|
|
35
|
+
## Claude Code 권한 사례
|
|
36
|
+
|
|
37
|
+
`test/claude-settings.test.mjs`는 제한된 `settings.json` 경계를 검사합니다.
|
|
38
|
+
|
|
39
|
+
| 사례 | 필수 증거 | 예상 결정 |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| 제한적인 `ask`/`deny`, 계획 모드, 우회 비활성화 | 추가 위험 신호 없음 | 파일이 로컬 증거이므로 `ASK` |
|
|
42
|
+
| 셸/파일 시스템/네트워크/서브에이전트 전체 허용과 우회 모드 | 광범위 자동 승인 및 우회 신호 | `BLOCK` |
|
|
43
|
+
| 좁은 셸, 웹, MCP 및 서브에이전트 허용 | 기능별 자동 승인 신호 | 셸이 자동 승인되므로 `strict`에서 `BLOCK` |
|
|
44
|
+
| 훅과 자격 증명 도우미 | 실행 가능한 인접 설정 신호 | `BLOCK` |
|
|
45
|
+
| 지원하지 않는 권한 키 또는 잘못된 규칙 | 파서 오류 | 종료 코드 `2` |
|
|
46
|
+
|
|
47
|
+
테스트는 명령, 도메인, 디렉터리, 훅, 도우미, 환경, 플러그인 및 알 수 없는 설정 필드에 자리표시자 값을 넣고 어떤 값도 검사 결과에 나타나지 않도록 요구합니다. 권한 설정 지문은 생성하지 않습니다.
|
|
48
|
+
|
|
49
|
+
## Codex 권한 사례
|
|
50
|
+
|
|
51
|
+
`test/codex-settings.test.mjs`는 `config.toml`의 승인 및 샌드박스 설정을 검사합니다.
|
|
52
|
+
|
|
53
|
+
| 사례 | 필수 증거 | 예상 결정 |
|
|
54
|
+
| --- | --- | --- |
|
|
55
|
+
| `read-only`, `on-request`, 사용자 검토, 네트워크 비활성화 | 추가 위험 신호 없음 | 파일이 로컬 증거이므로 `ASK` |
|
|
56
|
+
| `danger-full-access`, `never`, 자동 검토, 실시간 웹 검색 | 제한 없는 샌드박스와 줄어든 사람 검토 | `BLOCK` |
|
|
57
|
+
| 작업 공간 쓰기, 네트워크 활성화, 추가 쓰기 가능 루트 | 제한된 기능 확장 신호 | `ASK` |
|
|
58
|
+
| 사용자 정의 권한, 플러그인 또는 검사하지 않은 섹션 | 명시적인 미검사 표면 신호 | `ASK` |
|
|
59
|
+
| 지원하지 않는 열거/타입, 혼합 권한 모델 또는 알 수 없는 샌드박스 키 | 파서 오류 | 종료 코드 `2` |
|
|
60
|
+
|
|
61
|
+
쓰기 가능 루트 경로와 관련 없는 설정 값은 결과에 나타나면 안 됩니다. Codex 설정 지문은 생성하지 않습니다.
|
|
62
|
+
|
|
63
|
+
## 권한 상태 드리프트 사례
|
|
64
|
+
|
|
65
|
+
`examples/adversarial/permissions/`에는 두 런타임의 제한적 설정과 확대된 설정이
|
|
66
|
+
쌍으로 포함됩니다. `test/posture.test.mjs`는 다음을 요구합니다.
|
|
67
|
+
|
|
68
|
+
- 제한적인 기준 상태는 안전 인증을 의미하지 않는 `ASK`로 유지
|
|
69
|
+
- 자동 셸/네트워크/서브에이전트 권한 및 더 넓은 파일 시스템 범위가 위험을 높임
|
|
70
|
+
- 자율성 확대와 정책 변경에 대해 `diff-permissions`가 `needs-review`를 반환
|
|
71
|
+
- 제한적으로만 변한 경우 실패 종료 코드 없이 `restricted`를 반환
|
|
72
|
+
- 구조적 다이제스트를 계산한 스냅샷이 소스 경로, 규칙 값, 쓰기 가능 경로,
|
|
73
|
+
도메인, 명령, 환경 변수 이름과 값 및 인접 설정 값을 제외
|
|
74
|
+
- 내용이 다이제스트와 더 이상 일치하지 않는 스냅샷은 안전하게 실패
|
|
75
|
+
|
|
76
|
+
다이제스트는 내부 일관성을 확인할 뿐 서명자 신원을 인증하지 않습니다. 값이
|
|
77
|
+
제거된 권한 규칙 안에서 개수는 같고 내용만 바뀌는 경우는 이 구조적 비교의
|
|
78
|
+
범위 밖입니다.
|
|
79
|
+
|
|
35
80
|
## 이 평가가 측정하지 않는 것
|
|
36
81
|
|
|
37
|
-
이 벤치마크는 의도적으로 범위가 좁습니다. 런타임 동작, 샌드박스 탈출, 임의의 악성 코드, 모든 형태의 프롬프트 인젝션, 게시자 신원 소유권 또는 전이 의존성의 취약점을 측정하지 않습니다. 특히 이미 실행 중인 MCP 서버가 동적으로 반환하는 도구 설명은 현재 정적 설정 경계 밖에 있습니다.
|
|
82
|
+
이 벤치마크는 의도적으로 범위가 좁습니다. 런타임 동작, 샌드박스 탈출, 임의의 악성 코드, 모든 형태의 프롬프트 인젝션, 게시자 신원 소유권 또는 전이 의존성의 취약점을 측정하지 않습니다. 모든 Claude 또는 Codex 설정 범위를 병합하거나 세션 명령줄 재정의를 검사하거나 보고된 샌드박스가 실제로 활성화되었음을 증명하지 않습니다. 특히 이미 실행 중인 MCP 서버가 동적으로 반환하는 도구 설명은 현재 정적 설정 경계 밖에 있습니다.
|
|
38
83
|
|
|
39
84
|
이 작은 픽스처 집합은 회귀 기준선이지 탐지 정확도에 대한 통계적 주장이 아닙니다. 거짓 양성과 거짓 음성 비율을 측정하려면 민감 정보를 제거한 실제 설정으로 구성되고 독립적으로 검토된 더 큰 코퍼스가 필요합니다.
|
package/docs/EVALUATION.md
CHANGED
|
@@ -32,8 +32,55 @@ The drift fixture begins with the trusted pinned package and then introduces an
|
|
|
32
32
|
|
|
33
33
|
The placeholder value itself must not appear in either inspection result or snapshot.
|
|
34
34
|
|
|
35
|
+
## Claude Code permission cases
|
|
36
|
+
|
|
37
|
+
`test/claude-settings.test.mjs` exercises a focused `settings.json` boundary.
|
|
38
|
+
|
|
39
|
+
| Case | Required evidence | Expected decision |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| restrictive `ask`/`deny`, plan mode, bypass disabled | no added risk signal | `ASK` because the file is local evidence |
|
|
42
|
+
| bare shell/filesystem/network/subagent allows plus bypass mode | broad auto-approval and bypass signals | `BLOCK` |
|
|
43
|
+
| narrow shell, web, MCP, and subagent allows | capability-specific auto-approval signals | `BLOCK` under `strict` because shell is auto-approved |
|
|
44
|
+
| hooks and credential helper | executable adjacent-setting signals | `BLOCK` |
|
|
45
|
+
| unsupported permission key or malformed rule | parser error | exit `2` |
|
|
46
|
+
|
|
47
|
+
The tests place placeholder values in command, domain, directory, hook, helper,
|
|
48
|
+
environment, plugin, and unknown settings fields and require that none appear in the
|
|
49
|
+
inspection result. No permission-settings fingerprint is created.
|
|
50
|
+
|
|
51
|
+
## Codex permission cases
|
|
52
|
+
|
|
53
|
+
`test/codex-settings.test.mjs` exercises approval and sandbox settings in `config.toml`.
|
|
54
|
+
|
|
55
|
+
| Case | Required evidence | Expected decision |
|
|
56
|
+
| --- | --- | --- |
|
|
57
|
+
| `read-only`, `on-request`, user review, network disabled | no added risk signal | `ASK` because the file is local evidence |
|
|
58
|
+
| `danger-full-access`, `never`, auto-review, live web search | unrestricted sandbox plus reduced human review | `BLOCK` |
|
|
59
|
+
| workspace write, network enabled, additional writable root | bounded capability-expansion signals | `ASK` |
|
|
60
|
+
| custom permission, plugin, or uninspected sections | explicit uninspected-surface signals | `ASK` |
|
|
61
|
+
| unsupported enum/type, mixed permission models, or unknown sandbox key | parser error | exit `2` |
|
|
62
|
+
|
|
63
|
+
Writable-root paths and unrelated setting values must not appear in results. No
|
|
64
|
+
Codex-settings fingerprint is created.
|
|
65
|
+
|
|
66
|
+
## Permission posture drift cases
|
|
67
|
+
|
|
68
|
+
`examples/adversarial/permissions/` contains paired restrictive and expanded settings
|
|
69
|
+
for both runtimes. `test/posture.test.mjs` requires:
|
|
70
|
+
|
|
71
|
+
- the restrictive baseline to remain `ASK`, without implying certification
|
|
72
|
+
- automatic shell/network/subagent grants and broader filesystem scope to raise risk
|
|
73
|
+
- `diff-permissions` to return `needs-review` for autonomy expansion and policy changes
|
|
74
|
+
- restriction-only changes to return `restricted` without a failure exit code
|
|
75
|
+
- snapshots with recomputed structural digests to omit source paths, rule values,
|
|
76
|
+
writable paths, domains, commands, environment names and values, and adjacent-setting values
|
|
77
|
+
- a snapshot whose contents no longer match its digest to fail closed
|
|
78
|
+
|
|
79
|
+
The digest checks internal consistency, not signer identity. Same-count changes inside
|
|
80
|
+
redacted permission rules remain outside this structural comparison.
|
|
81
|
+
|
|
35
82
|
## What this does not measure
|
|
36
83
|
|
|
37
|
-
This benchmark is intentionally narrow. It does not measure runtime behavior, sandbox escape, arbitrary malware, every form of prompt injection, publisher identity ownership, or vulnerabilities in transitive dependencies. In particular, tool descriptions returned dynamically by an already-running MCP server are outside the current static configuration boundary.
|
|
84
|
+
This benchmark is intentionally narrow. It does not measure runtime behavior, sandbox escape, arbitrary malware, every form of prompt injection, publisher identity ownership, or vulnerabilities in transitive dependencies. It does not merge every Claude or Codex settings scope, inspect session command-line overrides, or prove that the reported sandbox is active. In particular, tool descriptions returned dynamically by an already-running MCP server are outside the current static configuration boundary.
|
|
38
85
|
|
|
39
86
|
The small fixture set is a regression baseline, not a statistical claim about detection accuracy. False-positive and false-negative rates require a larger, independently reviewed corpus of redacted real-world configurations.
|
package/docs/ROADMAP.ko.md
CHANGED
|
@@ -6,15 +6,31 @@
|
|
|
6
6
|
|
|
7
7
|
TrustDex는 초기 단계입니다. 이 로드맵은 방향을 공유하며 릴리스를 약속하지 않습니다.
|
|
8
8
|
|
|
9
|
+
## 진행 상황
|
|
10
|
+
|
|
11
|
+
- TrustDex 0.6.0은 Claude Code와 Codex 권한의 안전한 실패 검사를 추가했습니다.
|
|
12
|
+
- TrustDex 0.7.0은 값이 제거되고 자체 일관성을 검증하는 권한 상태 스냅샷,
|
|
13
|
+
자율성 확대 검토 게이트, 버전 지정 JSON 스키마 및 공개 적대적 권한 픽스처를
|
|
14
|
+
추가합니다.
|
|
15
|
+
|
|
9
16
|
## 현재: 경계 강화
|
|
10
17
|
|
|
11
18
|
- MCP JSON, Codex TOML, 스킬 및 플러그인 매니페스트의 적대적 픽스처 확장
|
|
19
|
+
- Claude Code와 Codex 모두의 적대적 권한 픽스처를 계속 확장
|
|
12
20
|
- 사람이 읽을 수 있는 모든 출력에 비밀 값이 계속 포함되지 않는지 검증
|
|
13
21
|
- 크로스 플랫폼 소스 및 경로 정규화 개선
|
|
14
22
|
- 안정적인 정책 및 스냅샷 스키마 규칙 문서화
|
|
15
23
|
- CI, CodeQL 및 릴리스 자동화를 재현 가능하고 검토 가능한 상태로 유지
|
|
16
24
|
|
|
17
|
-
## 다음:
|
|
25
|
+
## 다음: 에이전트 행동 경계를 검토 가능하게 만들기
|
|
26
|
+
|
|
27
|
+
- 명령, 경로, 도메인 또는 자격 증명 값을 보관하지 않고 병합된 설정 소스 검사
|
|
28
|
+
- 초기 단일 파일 권한 상태 비교를 병합 설정 소스로 확장
|
|
29
|
+
- 승인된 도구 출처와 해당 도구에 부여된 행동 권한 연결
|
|
30
|
+
- 버전이 지정된 권한 상태 JSON 스키마를 추가 결정 및 런타임으로 확장
|
|
31
|
+
- 권고형 설정 검사가 런타임 및 운영체제 샌드박스와 결합되는 방식 문서화
|
|
32
|
+
|
|
33
|
+
## 그다음: 무결성 증명
|
|
18
34
|
|
|
19
35
|
- 레지스트리가 암호학적 해시를 제공할 때 변경 불가능한 패키지 아티팩트 검증
|
|
20
36
|
- 레지스트리 관찰을 정확한 패키지 버전 및 저장소 신원과 연결
|
|
@@ -26,7 +42,6 @@ TrustDex는 초기 단계입니다. 이 로드맵은 방향을 공유하며 릴
|
|
|
26
42
|
- 서명된 스냅샷, 승인 및 재검사 워크플로를 Codex `config.toml`로 확장
|
|
27
43
|
- 추가 에이전트 런타임 및 레지스트리용 어댑터 추가
|
|
28
44
|
- 테스트에 근거한 호환성 매트릭스 게시
|
|
29
|
-
- CI 및 정책 도구용 기계 판독 가능 결정 출력 정의
|
|
30
45
|
- 조직 관리형 신뢰 저장소 및 검토 키 교체 탐색
|
|
31
46
|
|
|
32
47
|
## 도입 목표
|
package/docs/ROADMAP.md
CHANGED
|
@@ -6,15 +6,31 @@
|
|
|
6
6
|
|
|
7
7
|
TrustDex is early-stage. This roadmap communicates direction and is not a release commitment.
|
|
8
8
|
|
|
9
|
+
## Progress
|
|
10
|
+
|
|
11
|
+
- TrustDex 0.6.0 added fail-closed Claude Code and Codex permission inspection.
|
|
12
|
+
- TrustDex 0.7.0 adds value-free, self-validating permission posture snapshots,
|
|
13
|
+
autonomy-expansion review gates, versioned JSON schemas, and public adversarial
|
|
14
|
+
permission fixtures.
|
|
15
|
+
|
|
9
16
|
## Now: harden the boundary
|
|
10
17
|
|
|
11
18
|
- expand adversarial fixtures for MCP JSON, Codex TOML, skills, and plugin manifests
|
|
19
|
+
- keep expanding adversarial permission fixtures for both Claude Code and Codex
|
|
12
20
|
- verify that all human-readable output remains free of secret values
|
|
13
21
|
- improve cross-platform source and path normalization
|
|
14
22
|
- document stable policy and snapshot schema rules
|
|
15
23
|
- keep CI, CodeQL, and release automation reproducible and reviewable
|
|
16
24
|
|
|
17
|
-
## Next:
|
|
25
|
+
## Next: make agent action boundaries reviewable
|
|
26
|
+
|
|
27
|
+
- inspect merged settings sources without retaining commands, paths, domains, or credential values
|
|
28
|
+
- extend the initial single-file posture comparison to merged settings sources
|
|
29
|
+
- connect approved tool provenance to the action permissions granted to that tool
|
|
30
|
+
- extend the versioned permission-posture JSON schemas to additional decisions and runtimes
|
|
31
|
+
- document how advisory settings checks compose with runtime and operating-system sandboxes
|
|
32
|
+
|
|
33
|
+
## Then: prove integrity
|
|
18
34
|
|
|
19
35
|
- verify immutable package artifacts when registries expose cryptographic hashes
|
|
20
36
|
- connect registry observations to exact package versions and repository identities
|
|
@@ -26,7 +42,6 @@ TrustDex is early-stage. This roadmap communicates direction and is not a releas
|
|
|
26
42
|
- extend signed snapshot, approval, and recheck workflows to Codex `config.toml`
|
|
27
43
|
- add adapters for additional agent runtimes and registries
|
|
28
44
|
- publish a compatibility matrix backed by tests
|
|
29
|
-
- define machine-readable decision output for CI and policy tooling
|
|
30
45
|
- explore organization-managed trust stores and review-key rotation
|
|
31
46
|
|
|
32
47
|
## Adoption goals
|