opena2a-cli 0.1.0 → 0.1.2
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.md +280 -0
- package/dist/adapters/registry.js +1 -1
- package/dist/adapters/registry.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +78 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/protect.d.ts +2 -0
- package/dist/commands/protect.d.ts.map +1 -1
- package/dist/commands/protect.js +56 -10
- package/dist/commands/protect.js.map +1 -1
- package/dist/commands/runtime.d.ts +1 -1
- package/dist/commands/runtime.js +5 -5
- package/dist/commands/runtime.js.map +1 -1
- package/dist/commands/self-register.js +6 -6
- package/dist/commands/self-register.js.map +1 -1
- package/dist/commands/shield.d.ts +36 -0
- package/dist/commands/shield.d.ts.map +1 -0
- package/dist/commands/shield.js +834 -0
- package/dist/commands/shield.js.map +1 -0
- package/dist/commands/verify.js +1 -1
- package/dist/commands/verify.js.map +1 -1
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -1
- package/dist/shield/detect.d.ts +18 -0
- package/dist/shield/detect.d.ts.map +1 -0
- package/dist/shield/detect.js +402 -0
- package/dist/shield/detect.js.map +1 -0
- package/dist/shield/events.d.ts +65 -0
- package/dist/shield/events.d.ts.map +1 -0
- package/dist/shield/events.js +342 -0
- package/dist/shield/events.js.map +1 -0
- package/dist/shield/init.d.ts +22 -0
- package/dist/shield/init.d.ts.map +1 -0
- package/dist/shield/init.js +290 -0
- package/dist/shield/init.js.map +1 -0
- package/dist/shield/integrity.d.ts +75 -0
- package/dist/shield/integrity.d.ts.map +1 -0
- package/dist/shield/integrity.js +435 -0
- package/dist/shield/integrity.js.map +1 -0
- package/dist/shield/llm-backend.d.ts +36 -0
- package/dist/shield/llm-backend.d.ts.map +1 -0
- package/dist/shield/llm-backend.js +145 -0
- package/dist/shield/llm-backend.js.map +1 -0
- package/dist/shield/llm.d.ts +116 -0
- package/dist/shield/llm.d.ts.map +1 -0
- package/dist/shield/llm.js +536 -0
- package/dist/shield/llm.js.map +1 -0
- package/dist/shield/policy.d.ts +70 -0
- package/dist/shield/policy.d.ts.map +1 -0
- package/dist/shield/policy.js +399 -0
- package/dist/shield/policy.js.map +1 -0
- package/dist/shield/session.d.ts +63 -0
- package/dist/shield/session.d.ts.map +1 -0
- package/dist/shield/session.js +242 -0
- package/dist/shield/session.js.map +1 -0
- package/dist/shield/signing.d.ts +41 -0
- package/dist/shield/signing.d.ts.map +1 -0
- package/dist/shield/signing.js +161 -0
- package/dist/shield/signing.js.map +1 -0
- package/dist/shield/status.d.ts +4 -0
- package/dist/shield/status.d.ts.map +1 -0
- package/dist/shield/status.js +241 -0
- package/dist/shield/status.js.map +1 -0
- package/dist/shield/types.d.ts +398 -0
- package/dist/shield/types.d.ts.map +1 -0
- package/dist/shield/types.js +31 -0
- package/dist/shield/types.js.map +1 -0
- package/dist/util/drift-liveness.d.ts +37 -0
- package/dist/util/drift-liveness.d.ts.map +1 -0
- package/dist/util/drift-liveness.js +114 -0
- package/dist/util/drift-liveness.js.map +1 -0
- package/dist/util/drift-verification.d.ts +60 -0
- package/dist/util/drift-verification.d.ts.map +1 -0
- package/dist/util/drift-verification.js +457 -0
- package/dist/util/drift-verification.js.map +1 -0
- package/package.json +4 -2
package/README.md
ADDED
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# opena2a-cli
|
|
4
|
+
|
|
5
|
+
**Open-source security platform for AI agents**
|
|
6
|
+
|
|
7
|
+
Credential detection, scope drift analysis, config integrity, runtime monitoring, and supply chain verification -- one CLI.
|
|
8
|
+
|
|
9
|
+
[](https://github.com/opena2a-org/opena2a/blob/main/LICENSE)
|
|
10
|
+
[]()
|
|
11
|
+
[](https://www.npmjs.com/package/opena2a-cli)
|
|
12
|
+
|
|
13
|
+
[Website](https://opena2a.org) | [Docs](https://opena2a.org/docs) | [Registry](https://registry.opena2a.org) | [Discord](https://discord.gg/uRZa3KXgEn) | [GitHub](https://github.com/opena2a-org/opena2a)
|
|
14
|
+
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Install
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Try without installing
|
|
23
|
+
npx opena2a-cli init
|
|
24
|
+
|
|
25
|
+
# Install globally
|
|
26
|
+
npm install -g opena2a-cli
|
|
27
|
+
|
|
28
|
+
# Homebrew (macOS/Linux)
|
|
29
|
+
brew tap opena2a-org/tap && brew install opena2a
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
No configuration required. Works with Node.js, Python, Go, and MCP server projects.
|
|
33
|
+
|
|
34
|
+
## What It Does
|
|
35
|
+
|
|
36
|
+
Run `opena2a init` in any project directory to get an instant security assessment:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
OpenA2A Security Initialization v0.1.0
|
|
40
|
+
|
|
41
|
+
Project myapp v2.1.0
|
|
42
|
+
Type Node.js + MCP server
|
|
43
|
+
Directory /home/user/myapp
|
|
44
|
+
|
|
45
|
+
Security Posture
|
|
46
|
+
-----------------------------------------------
|
|
47
|
+
Credential scan 3 findings
|
|
48
|
+
.gitignore present
|
|
49
|
+
.env protection NOT in .gitignore
|
|
50
|
+
Lock file package-lock.json
|
|
51
|
+
Security config none
|
|
52
|
+
MCP config found
|
|
53
|
+
-----------------------------------------------
|
|
54
|
+
Trust Score 30 / 100 [Grade: F]
|
|
55
|
+
|
|
56
|
+
Next Steps
|
|
57
|
+
-----------------------------------------------
|
|
58
|
+
[CRITICAL] Migrate 3 hardcoded credentials
|
|
59
|
+
opena2a protect
|
|
60
|
+
|
|
61
|
+
[HIGH] Add .env to .gitignore
|
|
62
|
+
echo '.env' >> .gitignore
|
|
63
|
+
|
|
64
|
+
[MEDIUM] Sign config files for integrity
|
|
65
|
+
opena2a guard sign
|
|
66
|
+
-----------------------------------------------
|
|
67
|
+
|
|
68
|
+
Scope Drift Detected
|
|
69
|
+
-----------------------------------------------
|
|
70
|
+
DRIFT-001 Google Maps key may access Gemini AI
|
|
71
|
+
src/config.js:5
|
|
72
|
+
|
|
73
|
+
Scope drift: keys provisioned for one service silently
|
|
74
|
+
gain access to AI services, expanding attack surface.
|
|
75
|
+
Run: opena2a protect
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Then fix what it finds:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
opena2a protect # Migrate credentials to env vars + vault
|
|
82
|
+
opena2a guard sign # Sign config files for tamper detection
|
|
83
|
+
opena2a init # Re-assess -- watch your score improve
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Scope Drift Detection
|
|
87
|
+
|
|
88
|
+
API keys provisioned for one service often silently grant access to others. A Google Maps key can call Gemini. An AWS S3 key may reach Bedrock.
|
|
89
|
+
|
|
90
|
+
OpenA2A detects these cross-service privilege escalations:
|
|
91
|
+
|
|
92
|
+
| Finding | What It Means |
|
|
93
|
+
|---------|---------------|
|
|
94
|
+
| **DRIFT-001** | Google API key can access Gemini AI models beyond intended Maps/Places scope |
|
|
95
|
+
| **DRIFT-002** | AWS access key can invoke Bedrock LLM models beyond intended S3/EC2 scope |
|
|
96
|
+
|
|
97
|
+
When drift is detected, `opena2a protect` migrates the key to environment variables and creates a deny-all broker policy so you can explicitly control which services each key is allowed to reach.
|
|
98
|
+
|
|
99
|
+
## Core Commands
|
|
100
|
+
|
|
101
|
+
### `opena2a init`
|
|
102
|
+
|
|
103
|
+
Assess your project's security posture. Detects project type, scans for credentials, checks hygiene (`.gitignore`, `.env` protection, lock file, security config), calculates a trust score (0-100), and provides prioritized next steps.
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
opena2a init # Assess current directory
|
|
107
|
+
opena2a init --dir ./my-agent # Assess specific directory
|
|
108
|
+
opena2a init --verbose # Show individual credential details
|
|
109
|
+
opena2a init --format json # Machine-readable output for CI
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### `opena2a protect`
|
|
113
|
+
|
|
114
|
+
Detect hardcoded credentials and migrate them to environment variables. Supports Anthropic, OpenAI, Google, AWS, GitHub, and generic API key patterns. Language-aware replacements for JS/TS, Python, Go, Ruby, Java, and Rust.
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
opena2a protect # Scan and migrate credentials
|
|
118
|
+
opena2a protect --dry-run # Preview changes without modifying files
|
|
119
|
+
opena2a protect --report out.html # Generate interactive HTML report
|
|
120
|
+
opena2a protect --format json # JSON output for CI pipelines
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Migration flow:
|
|
124
|
+
1. **Detect** -- Regex-based pattern matching across all source files
|
|
125
|
+
2. **Store** -- Save credential values in Secretless vault (or `.env` fallback with 0600 permissions)
|
|
126
|
+
3. **Replace** -- Swap hardcoded values with language-appropriate env var references
|
|
127
|
+
4. **Verify** -- Re-scan to confirm all credentials are removed from source
|
|
128
|
+
|
|
129
|
+
### `opena2a guard`
|
|
130
|
+
|
|
131
|
+
Config file integrity protection. Sign your config files and detect unauthorized modifications.
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
opena2a guard sign # Sign all detected config files (SHA-256)
|
|
135
|
+
opena2a guard verify # Check for tampering or unsigned files
|
|
136
|
+
opena2a guard status # Show signature summary
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Default files: `mcp.json`, `package.json`, `tsconfig.json`, `arp.yaml`, `go.mod`, `Dockerfile`, and more.
|
|
140
|
+
|
|
141
|
+
### `opena2a runtime`
|
|
142
|
+
|
|
143
|
+
Agent Runtime Protection (ARP) wrapper. Monitor process, network, and filesystem activity.
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
opena2a runtime init # Generate arp.yaml for your project
|
|
147
|
+
opena2a runtime start # Start monitoring
|
|
148
|
+
opena2a runtime status # Show monitor/interceptor status
|
|
149
|
+
opena2a runtime tail # View recent security events
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### `opena2a verify`
|
|
153
|
+
|
|
154
|
+
Binary integrity verification. Compares installed package hashes against the OpenA2A Trust Registry to detect supply chain tampering.
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
opena2a verify # Check all OpenA2A packages
|
|
158
|
+
opena2a verify --package hackmyagent # Check specific package
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### `opena2a self-register`
|
|
162
|
+
|
|
163
|
+
Register OpenA2A tools in the public Trust Registry with security scan results.
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
opena2a self-register --dry-run # Preview what would be registered
|
|
167
|
+
opena2a self-register # Register all 13 tools
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### `opena2a config`
|
|
171
|
+
|
|
172
|
+
Manage user preferences and feature toggles.
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
opena2a config show # Display current configuration
|
|
176
|
+
opena2a config contribute on # Enable community data sharing
|
|
177
|
+
opena2a config llm on # Enable LLM-powered command matching
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Smart Input Modes
|
|
181
|
+
|
|
182
|
+
The CLI includes built-in intelligence for command discovery:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
opena2a # Interactive guided wizard
|
|
186
|
+
opena2a ~drift # Semantic search (finds protect, init)
|
|
187
|
+
opena2a ~api keys # Semantic search with domain expansion
|
|
188
|
+
opena2a ? # Context-aware recommendations
|
|
189
|
+
opena2a "find leaked credentials" # Natural language matching
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Semantic search uses a weighted index of tags, synonyms, and domains -- no API calls required. Natural language mode falls back to Claude Haiku when static matching is insufficient (opt-in, costs ~$0.0002 per query).
|
|
193
|
+
|
|
194
|
+
## Adapter Commands
|
|
195
|
+
|
|
196
|
+
The CLI orchestrates these specialized tools through a unified interface:
|
|
197
|
+
|
|
198
|
+
| Command | Tool | Description |
|
|
199
|
+
|---------|------|-------------|
|
|
200
|
+
| `opena2a scan` | [HackMyAgent](https://github.com/opena2a-org/hackmyagent) | 150+ security checks, attack simulation, auto-fix |
|
|
201
|
+
| `opena2a secrets` | [Secretless AI](https://github.com/opena2a-org/secretless-ai) | Credential management for AI coding tools |
|
|
202
|
+
| `opena2a benchmark` | [OASB](https://github.com/opena2a-org/oasb) | 222 attack scenarios, compliance scoring |
|
|
203
|
+
| `opena2a registry` | [AI Trust](https://github.com/opena2a-org/ai-trust) | Trust Registry queries, package verification |
|
|
204
|
+
| `opena2a train` | [DVAA](https://github.com/opena2a-org/damn-vulnerable-ai-agent) | Vulnerable AI agent for training |
|
|
205
|
+
| `opena2a crypto` | [CryptoServe](https://github.com/ecolibria/crypto-serve) | Cryptographic inventory, PQC readiness |
|
|
206
|
+
| `opena2a identity` | [AIM](https://github.com/opena2a-org/agent-identity-management) | Agent identity management |
|
|
207
|
+
| `opena2a broker` | [Secretless AI](https://github.com/opena2a-org/secretless-ai) | Identity-aware credential broker daemon |
|
|
208
|
+
| `opena2a dlp` | [Secretless AI](https://github.com/opena2a-org/secretless-ai) | Data loss prevention for AI tool transcripts |
|
|
209
|
+
|
|
210
|
+
Adapters install tools on first use. Each tool works standalone or through the CLI.
|
|
211
|
+
|
|
212
|
+
## CI/CD Integration
|
|
213
|
+
|
|
214
|
+
All commands support `--format json` and `--ci` flags for pipeline integration:
|
|
215
|
+
|
|
216
|
+
```yaml
|
|
217
|
+
# GitHub Actions example
|
|
218
|
+
- name: Security assessment
|
|
219
|
+
run: npx opena2a-cli init --ci --format json > security-report.json
|
|
220
|
+
|
|
221
|
+
- name: Credential check
|
|
222
|
+
run: |
|
|
223
|
+
npx opena2a-cli protect --dry-run --ci --format json > cred-report.json
|
|
224
|
+
# Fail if credentials found
|
|
225
|
+
jq -e '.totalFound == 0' cred-report.json
|
|
226
|
+
|
|
227
|
+
- name: Config integrity
|
|
228
|
+
run: npx opena2a-cli guard verify --ci
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Output Formats
|
|
232
|
+
|
|
233
|
+
| Format | Flag | Use Case |
|
|
234
|
+
|--------|------|----------|
|
|
235
|
+
| Text | `--format text` (default) | Human-readable terminal output |
|
|
236
|
+
| JSON | `--format json` | CI pipelines, programmatic consumption |
|
|
237
|
+
| HTML | `--report <path>` | Interactive report with filtering (protect command) |
|
|
238
|
+
|
|
239
|
+
## Credential Patterns
|
|
240
|
+
|
|
241
|
+
Detected credential types and their finding IDs:
|
|
242
|
+
|
|
243
|
+
| ID | Pattern | Severity |
|
|
244
|
+
|----|---------|----------|
|
|
245
|
+
| CRED-001 | Anthropic API Key (`sk-ant-api*`) | Critical |
|
|
246
|
+
| CRED-002 | OpenAI API Key (`sk-*`, `sk-proj-*`, `sk-test-*`) | Critical |
|
|
247
|
+
| CRED-003 | GitHub Token (`ghp_*`, `ghs_*`) | High |
|
|
248
|
+
| CRED-004 | Generic API Key in assignment | Medium |
|
|
249
|
+
| DRIFT-001 | Google API Key with Gemini drift (`AIza*`) | High |
|
|
250
|
+
| DRIFT-002 | AWS Access Key with Bedrock drift (`AKIA*`) | High |
|
|
251
|
+
|
|
252
|
+
Language-aware replacements:
|
|
253
|
+
|
|
254
|
+
| Language | Replacement |
|
|
255
|
+
|----------|-------------|
|
|
256
|
+
| JavaScript/TypeScript | `process.env.VAR_NAME` |
|
|
257
|
+
| Python | `os.environ.get('VAR_NAME')` |
|
|
258
|
+
| Go | `os.Getenv("VAR_NAME")` |
|
|
259
|
+
| Ruby | `ENV['VAR_NAME']` |
|
|
260
|
+
| Java/Kotlin | `System.getenv("VAR_NAME")` |
|
|
261
|
+
| Rust | `std::env::var("VAR_NAME").unwrap_or_default()` |
|
|
262
|
+
| YAML/TOML/JSON | `${VAR_NAME}` |
|
|
263
|
+
|
|
264
|
+
## Requirements
|
|
265
|
+
|
|
266
|
+
- Node.js >= 18
|
|
267
|
+
- Optional: Docker (for `opena2a train`)
|
|
268
|
+
- Optional: Python 3.9+ (for `opena2a crypto`)
|
|
269
|
+
|
|
270
|
+
## License
|
|
271
|
+
|
|
272
|
+
Apache-2.0
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
<div align="center">
|
|
277
|
+
|
|
278
|
+
[Report an Issue](https://github.com/opena2a-org/opena2a/issues) | [Contribute](https://github.com/opena2a-org/opena2a/blob/main/CONTRIBUTING.md)
|
|
279
|
+
|
|
280
|
+
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":";;;AAyEA,gCAEC;AAED,oCAEC;AAED,kDAEC;AAjFY,QAAA,gBAAgB,GAAkC;IAC7D,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,0DAA0D;KACxE;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,qDAAqD;KACnE;IACD,0EAA0E;IAC1E,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":";;;AAyEA,gCAEC;AAED,oCAEC;AAED,kDAEC;AAjFY,QAAA,gBAAgB,GAAkC;IAC7D,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,0DAA0D;KACxE;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,qDAAqD;KACnE;IACD,0EAA0E;IAC1E,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,gDAAgD;KAC9D;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,wDAAwD;KACtE;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,qDAAqD;KACnE;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,8CAA8C;KAC5D;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,gDAAgD;KAC9D;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,yDAAyD;KACvE;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,qCAAqC;KACnD;IACD,oFAAoF;IACpF,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,yCAAyC;KACvD;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,8CAA8C;KAC5D;CACF,CAAC;AAEF,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,wBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAqB;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAkCD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAkKhE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -47,6 +47,8 @@ const detect_js_1 = require("../util/detect.js");
|
|
|
47
47
|
const credential_patterns_js_1 = require("../util/credential-patterns.js");
|
|
48
48
|
const advisories_js_1 = require("../util/advisories.js");
|
|
49
49
|
const version_js_1 = require("../util/version.js");
|
|
50
|
+
const events_js_1 = require("../shield/events.js");
|
|
51
|
+
const status_js_1 = require("../shield/status.js");
|
|
50
52
|
// --- Core ---
|
|
51
53
|
async function init(options) {
|
|
52
54
|
const targetDir = path.resolve(options.targetDir ?? process.cwd());
|
|
@@ -76,6 +78,64 @@ async function init(options) {
|
|
|
76
78
|
const { score, grade } = calculateTrustScore(credsBySeverity, checks, targetDir);
|
|
77
79
|
// 6. Generate next steps
|
|
78
80
|
const nextSteps = generateNextSteps(credentialMatches.length, credsBySeverity, checks);
|
|
81
|
+
// 6.5. Compute posture score from Shield product detection
|
|
82
|
+
const shieldStatus = (0, status_js_1.getShieldStatus)(targetDir);
|
|
83
|
+
const activeProducts = shieldStatus.products.filter(p => p.active).length;
|
|
84
|
+
const totalProducts = shieldStatus.products.length;
|
|
85
|
+
let postureScore = 0;
|
|
86
|
+
postureScore += Math.min(activeProducts * 10, 60);
|
|
87
|
+
if (shieldStatus.policyLoaded)
|
|
88
|
+
postureScore += 10;
|
|
89
|
+
if (shieldStatus.shellIntegration)
|
|
90
|
+
postureScore += 5;
|
|
91
|
+
if (credentialMatches.length === 0)
|
|
92
|
+
postureScore += 15;
|
|
93
|
+
const sigDir = path.join(targetDir, '.opena2a', 'signatures');
|
|
94
|
+
if (fs.existsSync(sigDir))
|
|
95
|
+
postureScore += 10;
|
|
96
|
+
postureScore = Math.max(0, Math.min(100, postureScore));
|
|
97
|
+
const riskLevel = postureScore < 30 ? 'CRITICAL'
|
|
98
|
+
: postureScore < 50 ? 'HIGH'
|
|
99
|
+
: postureScore < 70 ? 'MEDIUM'
|
|
100
|
+
: postureScore < 90 ? 'LOW'
|
|
101
|
+
: 'SECURE';
|
|
102
|
+
// 6.6. Write shield events for posture and credential findings
|
|
103
|
+
try {
|
|
104
|
+
(0, events_js_1.getShieldDir)();
|
|
105
|
+
(0, events_js_1.writeEvent)({
|
|
106
|
+
source: 'shield',
|
|
107
|
+
category: 'shield.posture',
|
|
108
|
+
severity: (riskLevel === 'CRITICAL' ? 'critical' : riskLevel === 'HIGH' ? 'high' : riskLevel === 'MEDIUM' ? 'medium' : 'info'),
|
|
109
|
+
agent: null,
|
|
110
|
+
sessionId: null,
|
|
111
|
+
action: 'posture-assessment',
|
|
112
|
+
target: targetDir,
|
|
113
|
+
outcome: 'monitored',
|
|
114
|
+
detail: { score: postureScore, riskLevel, activeProducts, totalProducts, trustScore: score, grade },
|
|
115
|
+
orgId: null,
|
|
116
|
+
managed: false,
|
|
117
|
+
agentId: null,
|
|
118
|
+
});
|
|
119
|
+
for (const cred of credentialMatches) {
|
|
120
|
+
(0, events_js_1.writeEvent)({
|
|
121
|
+
source: 'shield',
|
|
122
|
+
category: 'shield.credential',
|
|
123
|
+
severity: (cred.severity === 'critical' ? 'critical' : cred.severity === 'high' ? 'high' : 'medium'),
|
|
124
|
+
agent: null,
|
|
125
|
+
sessionId: null,
|
|
126
|
+
action: 'credential-finding',
|
|
127
|
+
target: cred.filePath,
|
|
128
|
+
outcome: 'monitored',
|
|
129
|
+
detail: { findingId: cred.findingId, title: cred.title, line: cred.line },
|
|
130
|
+
orgId: null,
|
|
131
|
+
managed: false,
|
|
132
|
+
agentId: null,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// Shield event writing is best-effort
|
|
138
|
+
}
|
|
79
139
|
// 7. Build report
|
|
80
140
|
const report = {
|
|
81
141
|
projectName: project.name,
|
|
@@ -92,6 +152,10 @@ async function init(options) {
|
|
|
92
152
|
count: advisoryCheck.advisories.length,
|
|
93
153
|
matchedPackages: advisoryCheck.matchedPackages,
|
|
94
154
|
},
|
|
155
|
+
postureScore,
|
|
156
|
+
riskLevel,
|
|
157
|
+
activeProducts,
|
|
158
|
+
totalProducts,
|
|
95
159
|
};
|
|
96
160
|
// 8. Output
|
|
97
161
|
if (options.format === 'json') {
|
|
@@ -330,6 +394,16 @@ function printReport(report, _verbose) {
|
|
|
330
394
|
: report.trustScore >= 60 ? colors_js_1.yellow
|
|
331
395
|
: colors_js_1.red;
|
|
332
396
|
process.stdout.write(` ${(0, colors_js_1.dim)('Trust Score')} ${scoreColor(`${report.trustScore} / 100`)} ${(0, colors_js_1.dim)('[Grade:')} ${scoreColor(report.grade)}${(0, colors_js_1.dim)(']')}\n`);
|
|
397
|
+
// Shield posture
|
|
398
|
+
const postureColor = report.postureScore >= 70 ? colors_js_1.green
|
|
399
|
+
: report.postureScore >= 40 ? colors_js_1.yellow
|
|
400
|
+
: colors_js_1.red;
|
|
401
|
+
const riskColor = report.riskLevel === 'SECURE' ? colors_js_1.green
|
|
402
|
+
: report.riskLevel === 'LOW' ? colors_js_1.green
|
|
403
|
+
: report.riskLevel === 'MEDIUM' ? colors_js_1.yellow
|
|
404
|
+
: colors_js_1.red;
|
|
405
|
+
process.stdout.write(` ${(0, colors_js_1.dim)('Shield Posture')} ${postureColor(`${report.postureScore} / 100`)} ${(0, colors_js_1.dim)('[Risk:')} ${riskColor(report.riskLevel)}${(0, colors_js_1.dim)(']')}\n`);
|
|
406
|
+
process.stdout.write(` ${(0, colors_js_1.dim)('Products')} ${report.activeProducts} / ${report.totalProducts} active\n`);
|
|
333
407
|
process.stdout.write('\n');
|
|
334
408
|
// Next steps
|
|
335
409
|
if (report.nextSteps.length > 0) {
|
|
@@ -348,9 +422,10 @@ function printReport(report, _verbose) {
|
|
|
348
422
|
process.stdout.write('\n');
|
|
349
423
|
// Quick start hints for new users
|
|
350
424
|
process.stdout.write((0, colors_js_1.dim)(' Tip: Try these commands to explore further:') + '\n');
|
|
351
|
-
process.stdout.write((0, colors_js_1.dim)(' opena2a
|
|
352
|
-
process.stdout.write((0, colors_js_1.dim)(' opena2a
|
|
353
|
-
process.stdout.write((0, colors_js_1.dim)(' opena2a
|
|
425
|
+
process.stdout.write((0, colors_js_1.dim)(' opena2a shield status View Shield product status') + '\n');
|
|
426
|
+
process.stdout.write((0, colors_js_1.dim)(' opena2a shield report Generate security posture report') + '\n');
|
|
427
|
+
process.stdout.write((0, colors_js_1.dim)(' opena2a shield monitor Start ARP runtime monitoring') + '\n');
|
|
428
|
+
process.stdout.write((0, colors_js_1.dim)(' opena2a ~<query> Search commands (e.g. opena2a ~drift)') + '\n');
|
|
354
429
|
process.stdout.write('\n');
|
|
355
430
|
}
|
|
356
431
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,8 @@ export interface ProtectOptions {
|
|
|
24
24
|
format?: 'text' | 'json';
|
|
25
25
|
/** Skip verification re-scan */
|
|
26
26
|
skipVerify?: boolean;
|
|
27
|
+
/** Skip liveness verification for DRIFT findings (offline/CI) */
|
|
28
|
+
skipLiveness?: boolean;
|
|
27
29
|
/** Path to write interactive HTML report */
|
|
28
30
|
report?: string;
|
|
29
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect.d.ts","sourceRoot":"","sources":["../../src/commands/protect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"protect.d.ts","sourceRoot":"","sources":["../../src/commands/protect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA4CH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,gCAAgC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAoBD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAuNtE"}
|
package/dist/commands/protect.js
CHANGED
|
@@ -54,6 +54,7 @@ const spinner_js_1 = require("../util/spinner.js");
|
|
|
54
54
|
const format_js_1 = require("../util/format.js");
|
|
55
55
|
// --- Credential patterns (shared module) ---
|
|
56
56
|
const credential_patterns_js_1 = require("../util/credential-patterns.js");
|
|
57
|
+
const drift_verification_js_1 = require("../util/drift-verification.js");
|
|
57
58
|
// --- Core logic ---
|
|
58
59
|
/**
|
|
59
60
|
* Main protect command. Scans for credentials, migrates to vault, verifies clean.
|
|
@@ -71,7 +72,7 @@ async function protect(options) {
|
|
|
71
72
|
// Phase 1: Scan for credentials
|
|
72
73
|
const spinner = new spinner_js_1.Spinner('Scanning for credentials...');
|
|
73
74
|
spinner.start();
|
|
74
|
-
|
|
75
|
+
let matches = scanForCredentials(targetDir);
|
|
75
76
|
spinner.stop();
|
|
76
77
|
const isJson = options.format === 'json';
|
|
77
78
|
if (matches.length === 0) {
|
|
@@ -93,6 +94,36 @@ async function protect(options) {
|
|
|
93
94
|
}
|
|
94
95
|
return 0;
|
|
95
96
|
}
|
|
97
|
+
// Phase 1.5: Liveness verification for DRIFT findings
|
|
98
|
+
let livenessResults;
|
|
99
|
+
const hasDriftFindings = matches.some(m => m.findingId.startsWith('DRIFT-'));
|
|
100
|
+
if (hasDriftFindings && !options.skipLiveness) {
|
|
101
|
+
if (!isJson) {
|
|
102
|
+
spinner.update('Verifying credential drift (liveness check)...');
|
|
103
|
+
spinner.start();
|
|
104
|
+
}
|
|
105
|
+
livenessResults = await (0, drift_verification_js_1.verifyDriftFindings)(matches);
|
|
106
|
+
matches = (0, drift_verification_js_1.applyLivenessResults)(matches, livenessResults);
|
|
107
|
+
if (!isJson) {
|
|
108
|
+
spinner.stop();
|
|
109
|
+
for (const [_key, result] of livenessResults) {
|
|
110
|
+
if (result.live) {
|
|
111
|
+
process.stdout.write((0, colors_js_1.red)(`${result.findingId}: DRIFT CONFIRMED`) +
|
|
112
|
+
' -- ' + result.detail + '\n');
|
|
113
|
+
process.stdout.write(' Severity escalated: ' + (0, colors_js_1.yellow)('high') + ' -> ' + (0, colors_js_1.red)('critical') + '\n\n');
|
|
114
|
+
}
|
|
115
|
+
else if (result.checked && !result.error) {
|
|
116
|
+
process.stdout.write((0, colors_js_1.dim)(`${result.findingId}: ${result.detail}`) + '\n\n');
|
|
117
|
+
}
|
|
118
|
+
else if (result.error) {
|
|
119
|
+
process.stdout.write((0, colors_js_1.dim)(`${result.findingId}: ${result.detail}`) + '\n\n');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else if (hasDriftFindings && options.skipLiveness && !isJson) {
|
|
125
|
+
process.stdout.write((0, colors_js_1.dim)('Liveness verification skipped (--skip-liveness)\n\n'));
|
|
126
|
+
}
|
|
96
127
|
if (!isJson) {
|
|
97
128
|
process.stdout.write((0, colors_js_1.bold)(`Found ${matches.length} credential(s) in ${targetDir}\n\n`));
|
|
98
129
|
// Show findings table
|
|
@@ -169,6 +200,14 @@ async function protect(options) {
|
|
|
169
200
|
}
|
|
170
201
|
// Phase 5: Report
|
|
171
202
|
const durationMs = Date.now() - startTime;
|
|
203
|
+
// Convert liveness results map to plain object for JSON serialization
|
|
204
|
+
let livenessRecord;
|
|
205
|
+
if (livenessResults && livenessResults.size > 0) {
|
|
206
|
+
livenessRecord = {};
|
|
207
|
+
for (const [key, val] of livenessResults) {
|
|
208
|
+
livenessRecord[key] = val;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
172
211
|
const report = {
|
|
173
212
|
targetDir,
|
|
174
213
|
totalFound: matches.length,
|
|
@@ -178,6 +217,7 @@ async function protect(options) {
|
|
|
178
217
|
results,
|
|
179
218
|
verificationPassed,
|
|
180
219
|
durationMs,
|
|
220
|
+
livenessResults: livenessRecord,
|
|
181
221
|
};
|
|
182
222
|
if (options.format === 'json') {
|
|
183
223
|
process.stdout.write(JSON.stringify(report, null, 2) + '\n');
|
|
@@ -368,17 +408,23 @@ function replaceInSource(credential) {
|
|
|
368
408
|
let newContent;
|
|
369
409
|
if (shouldStripQuotes(ext)) {
|
|
370
410
|
// For programming languages, replace the entire quoted expression
|
|
371
|
-
// (including surrounding quotes) with the bare env var reference
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
411
|
+
// (including surrounding quotes) with the bare env var reference.
|
|
412
|
+
// Use regex to find the enclosing quoted string so we handle cases
|
|
413
|
+
// where the matched credential is a substring of the quoted content
|
|
414
|
+
// (e.g., regex matches 20-char AWS key but string has trailing chars).
|
|
415
|
+
const escVal = credential.value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
416
|
+
const dblQuoteRegex = new RegExp(`"[^"]*${escVal}[^"]*"`);
|
|
417
|
+
const sglQuoteRegex = new RegExp(`'[^']*${escVal}[^']*'`);
|
|
418
|
+
const dblMatch = content.match(dblQuoteRegex);
|
|
419
|
+
const sglMatch = content.match(sglQuoteRegex);
|
|
420
|
+
if (dblMatch) {
|
|
421
|
+
newContent = content.replace(dblMatch[0], replacement);
|
|
376
422
|
}
|
|
377
|
-
else if (
|
|
378
|
-
newContent = content.replace(
|
|
423
|
+
else if (sglMatch) {
|
|
424
|
+
newContent = content.replace(sglMatch[0], replacement);
|
|
379
425
|
}
|
|
380
426
|
else {
|
|
381
|
-
// No quotes found (e.g., template literal or unquoted)
|
|
427
|
+
// No enclosing quotes found (e.g., template literal or unquoted)
|
|
382
428
|
newContent = content.replace(credential.value, replacement);
|
|
383
429
|
}
|
|
384
430
|
}
|
|
@@ -486,7 +532,7 @@ function createBrokerPolicy(credential, targetDir) {
|
|
|
486
532
|
effect: 'deny',
|
|
487
533
|
comment: `Auto-generated by opena2a protect from ${projectName}. Add allow rules for authorized agents.`,
|
|
488
534
|
});
|
|
489
|
-
fs.writeFileSync(policyFile, JSON.stringify(policies, null, 2) + '\n', { encoding: 'utf-8', mode: 0o600 });
|
|
535
|
+
fs.writeFileSync(policyFile, JSON.stringify({ rules: policies }, null, 2) + '\n', { encoding: 'utf-8', mode: 0o600 });
|
|
490
536
|
return true;
|
|
491
537
|
}
|
|
492
538
|
catch {
|