chainwall 2.2.4 → 2.2.6
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 +7 -58
- package/dist/auditor/cli-detector.d.ts +1 -1
- package/dist/auditor/cli-detector.d.ts.map +1 -1
- package/dist/auditor/cli-detector.js +5 -9
- package/dist/auditor/cli-detector.js.map +1 -1
- package/dist/auditor/mcp-detector.d.ts.map +1 -1
- package/dist/auditor/mcp-detector.js +10 -3
- package/dist/auditor/mcp-detector.js.map +1 -1
- package/dist/auditor/miner-detector.d.ts +10 -0
- package/dist/auditor/miner-detector.d.ts.map +1 -1
- package/dist/auditor/miner-detector.js +152 -41
- package/dist/auditor/miner-detector.js.map +1 -1
- package/dist/auditor/remediation.d.ts.map +1 -1
- package/dist/auditor/remediation.js +72 -33
- package/dist/auditor/remediation.js.map +1 -1
- package/dist/auditor/tool-detector.d.ts.map +1 -1
- package/dist/auditor/tool-detector.js +3 -2
- package/dist/auditor/tool-detector.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +12 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/mcp-server/tools/scan-file.js +2 -2
- package/dist/mcp-server/tools/scan-file.js.map +1 -1
- package/dist/monitor/browser-scanner.d.ts.map +1 -1
- package/dist/monitor/browser-scanner.js +24 -0
- package/dist/monitor/browser-scanner.js.map +1 -1
- package/dist/monitor/clipboard-scanner.d.ts.map +1 -1
- package/dist/monitor/clipboard-scanner.js +15 -1
- package/dist/monitor/clipboard-scanner.js.map +1 -1
- package/dist/monitor/known-good.d.ts +1 -1
- package/dist/monitor/known-good.d.ts.map +1 -1
- package/dist/monitor/known-good.js +7 -7
- package/dist/monitor/known-good.js.map +1 -1
- package/dist/monitor/network-scanner.d.ts +3 -1
- package/dist/monitor/network-scanner.d.ts.map +1 -1
- package/dist/monitor/network-scanner.js +30 -1
- package/dist/monitor/network-scanner.js.map +1 -1
- package/dist/monitor/persistence-scanner.d.ts.map +1 -1
- package/dist/monitor/persistence-scanner.js +78 -18
- package/dist/monitor/persistence-scanner.js.map +1 -1
- package/dist/monitor/process-scanner.d.ts.map +1 -1
- package/dist/monitor/process-scanner.js +27 -9
- package/dist/monitor/process-scanner.js.map +1 -1
- package/dist/reporter/sarif-report.d.ts.map +1 -1
- package/dist/reporter/sarif-report.js +2 -1
- package/dist/reporter/sarif-report.js.map +1 -1
- package/dist/scanner/permission-checker.d.ts.map +1 -1
- package/dist/scanner/permission-checker.js +2 -1
- package/dist/scanner/permission-checker.js.map +1 -1
- package/dist/scanner/skill-scanner.js +1 -1
- package/dist/scanner/skill-scanner.js.map +1 -1
- package/dist/scanner/system-targets.d.ts.map +1 -1
- package/dist/scanner/system-targets.js +10 -1
- package/dist/scanner/system-targets.js.map +1 -1
- package/dist/tui/hooks/useAudit.d.ts.map +1 -1
- package/dist/tui/hooks/useAudit.js +2 -1
- package/dist/tui/hooks/useAudit.js.map +1 -1
- package/dist/tui/hooks/useScan.d.ts.map +1 -1
- package/dist/tui/hooks/useScan.js +7 -5
- package/dist/tui/hooks/useScan.js.map +1 -1
- package/dist/tui/screens/AuditPanel.d.ts.map +1 -1
- package/dist/tui/screens/AuditPanel.js +2 -1
- package/dist/tui/screens/AuditPanel.js.map +1 -1
- package/dist/tui/screens/ScanPanel.d.ts.map +1 -1
- package/dist/tui/screens/ScanPanel.js +4 -3
- package/dist/tui/screens/ScanPanel.js.map +1 -1
- package/dist/tui/screens/ScanResultsPanel.d.ts.map +1 -1
- package/dist/tui/screens/ScanResultsPanel.js +5 -4
- package/dist/tui/screens/ScanResultsPanel.js.map +1 -1
- package/dist/tui/utils/open-file.d.ts.map +1 -1
- package/dist/tui/utils/open-file.js +20 -12
- package/dist/tui/utils/open-file.js.map +1 -1
- package/dist/utils/platform.d.ts +16 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +42 -0
- package/dist/utils/platform.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -131,9 +131,7 @@ chainwall init # install real-time protection hooks (one-time setup)
|
|
|
131
131
|
> [!NOTE]
|
|
132
132
|
> `chainwall init` only needs to run once per project to deploy hooks. After that, just launch `chainwall` for the full dashboard.
|
|
133
133
|
|
|
134
|
-
|
|
135
|
-
<summary><b>Platform guide</b></summary>
|
|
136
|
-
<br>
|
|
134
|
+
### Platform Guide
|
|
137
135
|
|
|
138
136
|
<table>
|
|
139
137
|
<tr>
|
|
@@ -177,8 +175,6 @@ chainwall init # install real-time protection hooks (one-time setup)
|
|
|
177
175
|
</tr>
|
|
178
176
|
</table>
|
|
179
177
|
|
|
180
|
-
</details>
|
|
181
|
-
|
|
182
178
|
<details>
|
|
183
179
|
<summary><b>Install from source</b></summary>
|
|
184
180
|
<br>
|
|
@@ -416,57 +412,12 @@ This registers the MCP server in Claude Desktop and Cursor automatically.
|
|
|
416
412
|
|
|
417
413
|
Add the `chainwall` server to your MCP client config:
|
|
418
414
|
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
</td>
|
|
426
|
-
<td>
|
|
427
|
-
|
|
428
|
-
**Claude Desktop** — `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
429
|
-
|
|
430
|
-
</td>
|
|
431
|
-
</tr>
|
|
432
|
-
<tr>
|
|
433
|
-
<td>
|
|
434
|
-
|
|
435
|
-
<img src="https://cdn.jsdelivr.net/gh/devicons/devicon/icons/linux/linux-original.svg" width="36" alt="Linux">
|
|
436
|
-
|
|
437
|
-
</td>
|
|
438
|
-
<td>
|
|
439
|
-
|
|
440
|
-
**Claude Desktop** — `~/.config/Claude/claude_desktop_config.json`
|
|
441
|
-
|
|
442
|
-
</td>
|
|
443
|
-
</tr>
|
|
444
|
-
</table>
|
|
445
|
-
|
|
446
|
-
```jsonc
|
|
447
|
-
{
|
|
448
|
-
"mcpServers": {
|
|
449
|
-
"chainwall": {
|
|
450
|
-
"command": "chainwall-mcp"
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
<table>
|
|
457
|
-
<tr>
|
|
458
|
-
<td width="60">
|
|
459
|
-
|
|
460
|
-
<img src="https://cdn.jsdelivr.net/gh/devicons/devicon/icons/vscode/vscode-original.svg" width="36" alt="Cursor">
|
|
461
|
-
|
|
462
|
-
</td>
|
|
463
|
-
<td>
|
|
464
|
-
|
|
465
|
-
**Cursor** — `~/.cursor/mcp.json`
|
|
466
|
-
|
|
467
|
-
</td>
|
|
468
|
-
</tr>
|
|
469
|
-
</table>
|
|
415
|
+
| Client | Config path |
|
|
416
|
+
|--------|------------|
|
|
417
|
+
| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
418
|
+
| Claude Desktop (Linux) | `~/.config/Claude/claude_desktop_config.json` |
|
|
419
|
+
| Cursor | `~/.cursor/mcp.json` |
|
|
420
|
+
| Windsurf / other | Any MCP config — just needs `chainwall-mcp` on PATH |
|
|
470
421
|
|
|
471
422
|
```jsonc
|
|
472
423
|
{
|
|
@@ -478,8 +429,6 @@ Add the `chainwall` server to your MCP client config:
|
|
|
478
429
|
}
|
|
479
430
|
```
|
|
480
431
|
|
|
481
|
-
For **Windsurf** or other MCP clients, use the same JSON — the only requirement is that `chainwall-mcp` is on your PATH (installed via `npm install -g chainwall`).
|
|
482
|
-
|
|
483
432
|
### Direct usage
|
|
484
433
|
|
|
485
434
|
```bash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-detector.d.ts","sourceRoot":"","sources":["../../src/auditor/cli-detector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-detector.d.ts","sourceRoot":"","sources":["../../src/auditor/cli-detector.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,GAAG,YAAY,CAAC;CACtC;AA2CD,wBAAgB,YAAY,IAAI,WAAW,EAAE,CAoB5C"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { isWindows, whichCommand } from '../utils/platform.js';
|
|
2
3
|
const KNOWN_AI_CLIS = ['aider', 'codex', 'cursor', 'continue', 'cline', 'claude', 'amazon-q', 'augment', 'bolt'];
|
|
3
4
|
// Normalize npm package names to their CLI/canonical names for dedup
|
|
4
5
|
const NAME_MAP = {
|
|
@@ -7,13 +8,7 @@ const NAME_MAP = {
|
|
|
7
8
|
'@openai/codex': 'codex',
|
|
8
9
|
};
|
|
9
10
|
function tryWhich(name) {
|
|
10
|
-
|
|
11
|
-
const result = execFileSync('which', [name], { timeout: 5000, encoding: 'utf-8' }).trim();
|
|
12
|
-
return result || null;
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
11
|
+
return whichCommand(name);
|
|
17
12
|
}
|
|
18
13
|
const KNOWN_NPM_AI_PACKAGES = [
|
|
19
14
|
'@anthropic-ai/claude-code',
|
|
@@ -26,7 +21,8 @@ const KNOWN_NPM_AI_PACKAGES = [
|
|
|
26
21
|
function tryNpmGlobal() {
|
|
27
22
|
const clis = [];
|
|
28
23
|
try {
|
|
29
|
-
const
|
|
24
|
+
const npmCmd = isWindows() ? 'npm.cmd' : 'npm';
|
|
25
|
+
const raw = execFileSync(npmCmd, ['list', '-g', '--depth=0', '--json'], { timeout: 5000, encoding: 'utf-8' });
|
|
30
26
|
const parsed = JSON.parse(raw);
|
|
31
27
|
if (!parsed.dependencies)
|
|
32
28
|
return clis;
|
|
@@ -46,7 +42,7 @@ export function detectAICLIs() {
|
|
|
46
42
|
for (const name of KNOWN_AI_CLIS) {
|
|
47
43
|
const path = tryWhich(name);
|
|
48
44
|
if (path) {
|
|
49
|
-
clis.push({ name, path, source: '
|
|
45
|
+
clis.push({ name, path, source: 'path-lookup' });
|
|
50
46
|
}
|
|
51
47
|
}
|
|
52
48
|
clis.push(...tryNpmGlobal());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-detector.js","sourceRoot":"","sources":["../../src/auditor/cli-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-detector.js","sourceRoot":"","sources":["../../src/auditor/cli-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQ/D,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAEjH,qEAAqE;AACrE,MAAM,QAAQ,GAA2B;IACvC,YAAY,EAAE,OAAO;IACrB,2BAA2B,EAAE,QAAQ;IACrC,eAAe,EAAE,OAAO;CACzB,CAAC;AAEF,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,qBAAqB,GAAG;IAC5B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,OAAO;IACP,SAAS;IACT,MAAM;CACP,CAAC;AAEF,SAAS,YAAY;IACnB,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/C,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9G,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA+C,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAEtC,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;YACxC,IAAI,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,IAAI,GAAkB,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC;IAE7B,uEAAuE;IACvE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-detector.d.ts","sourceRoot":"","sources":["../../src/auditor/mcp-detector.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;
|
|
1
|
+
{"version":3,"file":"mcp-detector.d.ts","sourceRoot":"","sources":["../../src/auditor/mcp-detector.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;AAoFD,wBAAgB,gBAAgB,IAAI,kBAAkB,CAsBrD"}
|
|
@@ -14,11 +14,18 @@ function getMCPConfigPaths() {
|
|
|
14
14
|
if (plat === 'darwin') {
|
|
15
15
|
paths.push(join(home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json'));
|
|
16
16
|
}
|
|
17
|
-
else if (plat === '
|
|
17
|
+
else if (plat === 'win32') {
|
|
18
|
+
const appData = process.env.APPDATA ?? join(home, 'AppData', 'Roaming');
|
|
19
|
+
paths.push(join(appData, 'Claude', 'claude_desktop_config.json'));
|
|
20
|
+
paths.push(join(appData, 'Cursor', 'mcp.json'));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
18
23
|
paths.push(join(home, '.config', 'claude', 'claude_desktop_config.json'));
|
|
19
24
|
}
|
|
20
|
-
// Cursor MCP config
|
|
21
|
-
|
|
25
|
+
// Cursor MCP config (Unix-style fallback; Windows handled above)
|
|
26
|
+
if (plat !== 'win32') {
|
|
27
|
+
paths.push(join(home, '.cursor', 'mcp.json'));
|
|
28
|
+
}
|
|
22
29
|
return paths;
|
|
23
30
|
}
|
|
24
31
|
function extractServers(config, sourceFile, definitions) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-detector.js","sourceRoot":"","sources":["../../src/auditor/mcp-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAoBrD,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9G,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAEnF,SAAS,iBAAiB;IACxB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;KACvB,CAAC;IAEF,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC,CAAC;IACnG,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"mcp-detector.js","sourceRoot":"","sources":["../../src/auditor/mcp-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,16 @@ export declare function parseProcessList(output: string): ProcessInfo[];
|
|
|
28
28
|
* Shared by miner-detector and monitor/persistence-scanner.
|
|
29
29
|
*/
|
|
30
30
|
export declare function parseCrontabOutput(output: string): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Parse `tasklist /V /FO CSV` output into ProcessInfo[].
|
|
33
|
+
* Windows equivalent of parseProcessList. Note: no PPID/CPU%/MEM% from tasklist.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseTasklistCSV(output: string): ProcessInfo[];
|
|
36
|
+
/**
|
|
37
|
+
* Parse `schtasks /query /FO CSV /V` output into task command lines.
|
|
38
|
+
* Windows equivalent of parseCrontabOutput.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseSchtasksCSV(output: string): string[];
|
|
31
41
|
/**
|
|
32
42
|
* Detect running cryptocurrency mining processes and suspicious crontab entries.
|
|
33
43
|
* Uses execFileSync (no shell injection risk) for both ps and crontab.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"miner-detector.d.ts","sourceRoot":"","sources":["../../src/auditor/miner-detector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"miner-detector.d.ts","sourceRoot":"","sources":["../../src/auditor/miner-detector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;CACzC;AAED,eAAO,MAAM,iBAAiB,UAI7B,CAAC;AAEF,eAAO,MAAM,aAAa,QAEzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAmC,CAAC;AAClE,eAAO,MAAM,eAAe,QAA+B,CAAC;AAC5D,eAAO,MAAM,YAAY,QAAkD,CAAC;AAE5E;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAoC9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAI3D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CA8B9D;AAqCD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAezD;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,oBAAoB,CAInD"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { basename } from 'node:path';
|
|
3
|
+
import { isWindows } from '../utils/platform.js';
|
|
2
4
|
export const KNOWN_MINER_NAMES = [
|
|
3
5
|
'xmrig', 'ethminer', 'cgminer', 'bfgminer', 'phoenixminer',
|
|
4
6
|
'cpuminer', 'minerd', 'claymore', 't-rex', 'lolminer',
|
|
@@ -32,7 +34,7 @@ export function parseProcessList(output) {
|
|
|
32
34
|
// lstart occupies fields 5-9 (5 tokens: day-of-week month day time year)
|
|
33
35
|
const startTime = parts.slice(5, 10).join(' ');
|
|
34
36
|
const command = parts.slice(10).join(' ');
|
|
35
|
-
const name = parts[10]
|
|
37
|
+
const name = basename(parts[10]);
|
|
36
38
|
results.push({
|
|
37
39
|
pid: isNaN(pid) ? 0 : pid,
|
|
38
40
|
ppid: isNaN(ppid) ? 0 : ppid,
|
|
@@ -55,6 +57,96 @@ export function parseCrontabOutput(output) {
|
|
|
55
57
|
.map((l) => l.trim())
|
|
56
58
|
.filter((l) => l && !l.startsWith('#'));
|
|
57
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Parse `tasklist /V /FO CSV` output into ProcessInfo[].
|
|
62
|
+
* Windows equivalent of parseProcessList. Note: no PPID/CPU%/MEM% from tasklist.
|
|
63
|
+
*/
|
|
64
|
+
export function parseTasklistCSV(output) {
|
|
65
|
+
const results = [];
|
|
66
|
+
const lines = output.split('\n');
|
|
67
|
+
for (let i = 1; i < lines.length; i++) {
|
|
68
|
+
const line = lines[i].trim();
|
|
69
|
+
if (!line)
|
|
70
|
+
continue;
|
|
71
|
+
// CSV with quoted fields: "Image Name","PID","Session Name","Session#","Mem Usage","Status","User Name","CPU Time","Window Title"
|
|
72
|
+
const fields = parseCSVLine(line);
|
|
73
|
+
if (fields.length < 2)
|
|
74
|
+
continue;
|
|
75
|
+
const name = fields[0];
|
|
76
|
+
const pid = parseInt(fields[1], 10);
|
|
77
|
+
const user = fields.length > 6 ? fields[6] : '';
|
|
78
|
+
const command = name; // tasklist only gives image name, not full command
|
|
79
|
+
results.push({
|
|
80
|
+
pid: isNaN(pid) ? 0 : pid,
|
|
81
|
+
ppid: 0,
|
|
82
|
+
user,
|
|
83
|
+
cpu: 0,
|
|
84
|
+
mem: 0,
|
|
85
|
+
startTime: '',
|
|
86
|
+
command,
|
|
87
|
+
name: name.replace(/\.exe$/i, ''),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return results;
|
|
91
|
+
}
|
|
92
|
+
/** Parse a single CSV line with quoted fields. */
|
|
93
|
+
function parseCSVLine(line) {
|
|
94
|
+
const fields = [];
|
|
95
|
+
let i = 0;
|
|
96
|
+
while (i < line.length) {
|
|
97
|
+
if (line[i] === '"') {
|
|
98
|
+
i++;
|
|
99
|
+
let field = '';
|
|
100
|
+
while (i < line.length) {
|
|
101
|
+
if (line[i] === '"' && line[i + 1] === '"') {
|
|
102
|
+
field += '"';
|
|
103
|
+
i += 2;
|
|
104
|
+
}
|
|
105
|
+
else if (line[i] === '"') {
|
|
106
|
+
i++;
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
field += line[i];
|
|
111
|
+
i++;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
fields.push(field);
|
|
115
|
+
if (line[i] === ',')
|
|
116
|
+
i++;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
const next = line.indexOf(',', i);
|
|
120
|
+
if (next === -1) {
|
|
121
|
+
fields.push(line.slice(i));
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
fields.push(line.slice(i, next));
|
|
125
|
+
i = next + 1;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return fields;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Parse `schtasks /query /FO CSV /V` output into task command lines.
|
|
132
|
+
* Windows equivalent of parseCrontabOutput.
|
|
133
|
+
*/
|
|
134
|
+
export function parseSchtasksCSV(output) {
|
|
135
|
+
const commands = [];
|
|
136
|
+
const lines = output.split('\n');
|
|
137
|
+
for (let i = 1; i < lines.length; i++) {
|
|
138
|
+
const line = lines[i].trim();
|
|
139
|
+
if (!line)
|
|
140
|
+
continue;
|
|
141
|
+
const fields = parseCSVLine(line);
|
|
142
|
+
// The "Task To Run" field is typically at index 8
|
|
143
|
+
const taskToRun = fields[8] ?? '';
|
|
144
|
+
if (taskToRun && taskToRun !== 'N/A') {
|
|
145
|
+
commands.push(taskToRun);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return commands;
|
|
149
|
+
}
|
|
58
150
|
/**
|
|
59
151
|
* Detect running cryptocurrency mining processes and suspicious crontab entries.
|
|
60
152
|
* Uses execFileSync (no shell injection risk) for both ps and crontab.
|
|
@@ -67,55 +159,74 @@ export function detectMiners() {
|
|
|
67
159
|
function detectRunningMiners() {
|
|
68
160
|
const miners = [];
|
|
69
161
|
try {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
74
|
-
});
|
|
75
|
-
const lines = output.split('\n');
|
|
76
|
-
// Skip header line
|
|
77
|
-
for (let i = 1; i < lines.length; i++) {
|
|
78
|
-
const line = lines[i].trim();
|
|
79
|
-
if (!line)
|
|
80
|
-
continue;
|
|
81
|
-
// Check if the process matches known miner names
|
|
82
|
-
if (!MINER_PATTERN.test(line) && !STRATUM_PATTERN.test(line))
|
|
83
|
-
continue;
|
|
84
|
-
// Parse ps aux output: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
|
|
85
|
-
const parts = line.split(/\s+/);
|
|
86
|
-
if (parts.length < 11)
|
|
87
|
-
continue;
|
|
88
|
-
const pid = parseInt(parts[1], 10);
|
|
89
|
-
const cpuPercent = parseFloat(parts[2]);
|
|
90
|
-
const command = parts.slice(10).join(' ');
|
|
91
|
-
// Extract the process name from the command
|
|
92
|
-
const cmdName = parts[10].split('/').pop() ?? parts[10];
|
|
93
|
-
// Skip our own process
|
|
94
|
-
if (command.includes('chainwall') || command.includes('vitest'))
|
|
95
|
-
continue;
|
|
96
|
-
miners.push({
|
|
97
|
-
pid,
|
|
98
|
-
name: cmdName,
|
|
99
|
-
command: command.length > 120 ? command.slice(0, 120) + '...' : command,
|
|
100
|
-
cpuPercent: isNaN(cpuPercent) ? undefined : cpuPercent,
|
|
162
|
+
if (isWindows()) {
|
|
163
|
+
const output = execFileSync('tasklist', ['/V', '/FO', 'CSV'], {
|
|
164
|
+
timeout: 5000, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'],
|
|
101
165
|
});
|
|
166
|
+
const procs = parseTasklistCSV(output);
|
|
167
|
+
for (const proc of procs) {
|
|
168
|
+
if (!MINER_PATTERN.test(proc.command) && !STRATUM_PATTERN.test(proc.name))
|
|
169
|
+
continue;
|
|
170
|
+
if (proc.command.includes('chainwall') || proc.command.includes('vitest'))
|
|
171
|
+
continue;
|
|
172
|
+
miners.push({
|
|
173
|
+
pid: proc.pid,
|
|
174
|
+
name: proc.name,
|
|
175
|
+
command: proc.command.length > 120 ? proc.command.slice(0, 120) + '...' : proc.command,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
const output = execFileSync('ps', ['aux'], {
|
|
181
|
+
timeout: 5000, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'],
|
|
182
|
+
});
|
|
183
|
+
const lines = output.split('\n');
|
|
184
|
+
for (let i = 1; i < lines.length; i++) {
|
|
185
|
+
const line = lines[i].trim();
|
|
186
|
+
if (!line)
|
|
187
|
+
continue;
|
|
188
|
+
if (!MINER_PATTERN.test(line) && !STRATUM_PATTERN.test(line))
|
|
189
|
+
continue;
|
|
190
|
+
const parts = line.split(/\s+/);
|
|
191
|
+
if (parts.length < 11)
|
|
192
|
+
continue;
|
|
193
|
+
const pid = parseInt(parts[1], 10);
|
|
194
|
+
const cpuPercent = parseFloat(parts[2]);
|
|
195
|
+
const command = parts.slice(10).join(' ');
|
|
196
|
+
const cmdName = basename(parts[10]);
|
|
197
|
+
if (command.includes('chainwall') || command.includes('vitest'))
|
|
198
|
+
continue;
|
|
199
|
+
miners.push({
|
|
200
|
+
pid,
|
|
201
|
+
name: cmdName,
|
|
202
|
+
command: command.length > 120 ? command.slice(0, 120) + '...' : command,
|
|
203
|
+
cpuPercent: isNaN(cpuPercent) ? undefined : cpuPercent,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
102
206
|
}
|
|
103
207
|
}
|
|
104
208
|
catch {
|
|
105
|
-
// ps not available or failed — graceful degradation
|
|
209
|
+
// ps/tasklist not available or failed — graceful degradation
|
|
106
210
|
}
|
|
107
211
|
return miners;
|
|
108
212
|
}
|
|
109
213
|
function detectSuspiciousCrontabs() {
|
|
110
214
|
const suspicious = [];
|
|
111
215
|
try {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
216
|
+
let taskLines;
|
|
217
|
+
if (isWindows()) {
|
|
218
|
+
const output = execFileSync('schtasks', ['/query', '/FO', 'CSV', '/V'], {
|
|
219
|
+
timeout: 10000, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'],
|
|
220
|
+
});
|
|
221
|
+
taskLines = parseSchtasksCSV(output);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
const output = execFileSync('crontab', ['-l'], {
|
|
225
|
+
timeout: 5000, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'],
|
|
226
|
+
});
|
|
227
|
+
taskLines = parseCrontabOutput(output);
|
|
228
|
+
}
|
|
229
|
+
for (const trimmed of taskLines) {
|
|
119
230
|
if (MINER_PATTERN.test(trimmed)) {
|
|
120
231
|
suspicious.push({
|
|
121
232
|
line: trimmed.length > 120 ? trimmed.slice(0, 120) + '...' : trimmed,
|
|
@@ -137,7 +248,7 @@ function detectSuspiciousCrontabs() {
|
|
|
137
248
|
}
|
|
138
249
|
}
|
|
139
250
|
catch {
|
|
140
|
-
// crontab
|
|
251
|
+
// crontab/schtasks not available or no entries = clean
|
|
141
252
|
}
|
|
142
253
|
return suspicious;
|
|
143
254
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"miner-detector.js","sourceRoot":"","sources":["../../src/auditor/miner-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"miner-detector.js","sourceRoot":"","sources":["../../src/auditor/miner-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remediation.d.ts","sourceRoot":"","sources":["../../src/auditor/remediation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,iBAAiB,CAazF;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOrD;AAWD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,iBAAiB,EAAE,CAmD7E;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,eAAe,GAAG,iBAAiB,EAAE,CAwBtF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB,EAAE,CAgD9E;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,WAAW,GAAG,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"remediation.d.ts","sourceRoot":"","sources":["../../src/auditor/remediation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,iBAAiB,CAazF;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOrD;AAWD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,iBAAiB,EAAE,CAmD7E;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,eAAe,GAAG,iBAAiB,EAAE,CAwBtF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB,EAAE,CAgD9E;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,WAAW,GAAG,iBAAiB,EAAE,CAmCxF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAuC3E;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,gBAAgB,GAAG,iBAAiB,EAAE,CAiB5F;AAWD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,YAAY,GAAG,iBAAiB,EAAE,CAwBlF;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,GAAG,IAAI,CAyCpF;AAwCD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,EAAE,CA+BxF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,EAAE,CAgCxF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,EAAE,CAQxF;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,EAAE,CA+BzF;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,cAAc,GAAG,iBAAiB,EAAE,CAiC3F;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,EAAE,CAyE5F;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,EAAE,CAUxF"}
|