@neurosec/sentry 1.0.19 → 1.1.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.md +4 -0
- package/dist/api-auth.d.ts +31 -0
- package/dist/api-auth.d.ts.map +1 -0
- package/dist/api-auth.js +105 -0
- package/dist/api-auth.js.map +1 -0
- package/dist/api-auth.test.d.ts +2 -0
- package/dist/api-auth.test.d.ts.map +1 -0
- package/dist/api-auth.test.js +89 -0
- package/dist/api-auth.test.js.map +1 -0
- package/dist/api.d.ts +8 -7
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +141 -134
- package/dist/api.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +107 -14
- package/dist/cli.js.map +1 -1
- package/dist/cli.test.d.ts +2 -0
- package/dist/cli.test.d.ts.map +1 -0
- package/dist/cli.test.js +68 -0
- package/dist/cli.test.js.map +1 -0
- package/dist/config.d.ts +30 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +50 -1
- package/dist/config.js.map +1 -1
- package/dist/discovery-win.d.ts +4 -0
- package/dist/discovery-win.d.ts.map +1 -0
- package/dist/discovery-win.js +153 -0
- package/dist/discovery-win.js.map +1 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +23 -97
- package/dist/discovery.js.map +1 -1
- package/dist/discovery.test.js +18 -109
- package/dist/discovery.test.js.map +1 -1
- package/dist/enforcement/file-monitor.d.ts +9 -0
- package/dist/enforcement/file-monitor.d.ts.map +1 -1
- package/dist/enforcement/file-monitor.js +9 -2
- package/dist/enforcement/file-monitor.js.map +1 -1
- package/dist/enforcement/network-monitor.d.ts.map +1 -1
- package/dist/enforcement/network-monitor.js +350 -9
- package/dist/enforcement/network-monitor.js.map +1 -1
- package/dist/enforcement/network-monitor.test.d.ts +2 -0
- package/dist/enforcement/network-monitor.test.d.ts.map +1 -0
- package/dist/enforcement/network-monitor.test.js +52 -0
- package/dist/enforcement/network-monitor.test.js.map +1 -0
- package/dist/enforcement/policy-executor.d.ts +24 -1
- package/dist/enforcement/policy-executor.d.ts.map +1 -1
- package/dist/enforcement/policy-executor.js +213 -69
- package/dist/enforcement/policy-executor.js.map +1 -1
- package/dist/enforcement/policy-executor.test.d.ts +2 -0
- package/dist/enforcement/policy-executor.test.d.ts.map +1 -0
- package/dist/enforcement/policy-executor.test.js +46 -0
- package/dist/enforcement/policy-executor.test.js.map +1 -0
- package/dist/enforcement/target-validator.d.ts +37 -0
- package/dist/enforcement/target-validator.d.ts.map +1 -0
- package/dist/enforcement/target-validator.js +0 -0
- package/dist/enforcement/target-validator.js.map +1 -0
- package/dist/enforcement/target-validator.test.d.ts +2 -0
- package/dist/enforcement/target-validator.test.d.ts.map +1 -0
- package/dist/enforcement/target-validator.test.js +103 -0
- package/dist/enforcement/target-validator.test.js.map +1 -0
- package/dist/http-client.d.ts +35 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +168 -0
- package/dist/http-client.js.map +1 -0
- package/dist/http-client.test.d.ts +2 -0
- package/dist/http-client.test.d.ts.map +1 -0
- package/dist/http-client.test.js +172 -0
- package/dist/http-client.test.js.map +1 -0
- package/dist/index.js +189 -113
- package/dist/index.js.map +1 -1
- package/dist/launcher.d.ts +33 -0
- package/dist/launcher.d.ts.map +1 -0
- package/dist/launcher.js +425 -0
- package/dist/launcher.js.map +1 -0
- package/dist/launcher.test.d.ts +2 -0
- package/dist/launcher.test.d.ts.map +1 -0
- package/dist/launcher.test.js +109 -0
- package/dist/launcher.test.js.map +1 -0
- package/dist/proxy/cert-manager.d.ts +24 -0
- package/dist/proxy/cert-manager.d.ts.map +1 -0
- package/dist/proxy/cert-manager.js +117 -0
- package/dist/proxy/cert-manager.js.map +1 -0
- package/dist/proxy/cert-manager.test.d.ts +2 -0
- package/dist/proxy/cert-manager.test.d.ts.map +1 -0
- package/dist/proxy/cert-manager.test.js +70 -0
- package/dist/proxy/cert-manager.test.js.map +1 -0
- package/dist/proxy/index.d.ts +61 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +74 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/policy-enforcer.d.ts +30 -0
- package/dist/proxy/policy-enforcer.d.ts.map +1 -0
- package/dist/proxy/policy-enforcer.js +143 -0
- package/dist/proxy/policy-enforcer.js.map +1 -0
- package/dist/proxy/proxy-server.d.ts +42 -0
- package/dist/proxy/proxy-server.d.ts.map +1 -0
- package/dist/proxy/proxy-server.js +652 -0
- package/dist/proxy/proxy-server.js.map +1 -0
- package/dist/proxy/redaction-engine.d.ts +4 -0
- package/dist/proxy/redaction-engine.d.ts.map +1 -0
- package/dist/proxy/redaction-engine.js +50 -0
- package/dist/proxy/redaction-engine.js.map +1 -0
- package/dist/proxy/response-redaction.test.d.ts +2 -0
- package/dist/proxy/response-redaction.test.d.ts.map +1 -0
- package/dist/proxy/response-redaction.test.js +125 -0
- package/dist/proxy/response-redaction.test.js.map +1 -0
- package/dist/proxy/threat-engine.d.ts +22 -0
- package/dist/proxy/threat-engine.d.ts.map +1 -0
- package/dist/proxy/threat-engine.js +291 -0
- package/dist/proxy/threat-engine.js.map +1 -0
- package/dist/proxy/threat-engine.test.d.ts +2 -0
- package/dist/proxy/threat-engine.test.d.ts.map +1 -0
- package/dist/proxy/threat-engine.test.js +27 -0
- package/dist/proxy/threat-engine.test.js.map +1 -0
- package/dist/redirect/env-injector.d.ts +72 -0
- package/dist/redirect/env-injector.d.ts.map +1 -0
- package/dist/redirect/env-injector.js +177 -0
- package/dist/redirect/env-injector.js.map +1 -0
- package/dist/redirect/env-injector.test.d.ts +2 -0
- package/dist/redirect/env-injector.test.d.ts.map +1 -0
- package/dist/redirect/env-injector.test.js +91 -0
- package/dist/redirect/env-injector.test.js.map +1 -0
- package/dist/redirect/index.d.ts +3 -0
- package/dist/redirect/index.d.ts.map +1 -0
- package/dist/redirect/index.js +8 -0
- package/dist/redirect/index.js.map +1 -0
- package/dist/redirect/platform-redirect.d.ts +42 -0
- package/dist/redirect/platform-redirect.d.ts.map +1 -0
- package/dist/redirect/platform-redirect.js +229 -0
- package/dist/redirect/platform-redirect.js.map +1 -0
- package/dist/redirect/platform-redirect.test.d.ts +2 -0
- package/dist/redirect/platform-redirect.test.d.ts.map +1 -0
- package/dist/redirect/platform-redirect.test.js +76 -0
- package/dist/redirect/platform-redirect.test.js.map +1 -0
- package/dist/sandbox/index.d.ts +23 -2
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +24 -7
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/linux-sandbox.d.ts +13 -2
- package/dist/sandbox/linux-sandbox.d.ts.map +1 -1
- package/dist/sandbox/linux-sandbox.js +61 -27
- package/dist/sandbox/linux-sandbox.js.map +1 -1
- package/dist/sandbox/macos-sandbox.d.ts +15 -4
- package/dist/sandbox/macos-sandbox.d.ts.map +1 -1
- package/dist/sandbox/macos-sandbox.js +36 -18
- package/dist/sandbox/macos-sandbox.js.map +1 -1
- package/dist/sandbox/sandbox-result.test.d.ts +2 -0
- package/dist/sandbox/sandbox-result.test.d.ts.map +1 -0
- package/dist/sandbox/sandbox-result.test.js +87 -0
- package/dist/sandbox/sandbox-result.test.js.map +1 -0
- package/dist/sandbox/windows-sandbox.d.ts +34 -0
- package/dist/sandbox/windows-sandbox.d.ts.map +1 -0
- package/dist/sandbox/windows-sandbox.js +161 -0
- package/dist/sandbox/windows-sandbox.js.map +1 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +33 -43
- package/dist/setup.js.map +1 -1
- package/dist/skill-authz/skill-evaluator.d.ts +30 -0
- package/dist/skill-authz/skill-evaluator.d.ts.map +1 -1
- package/dist/skill-authz/skill-evaluator.js +161 -30
- package/dist/skill-authz/skill-evaluator.js.map +1 -1
- package/dist/skill-authz/skill-evaluator.test.d.ts +2 -0
- package/dist/skill-authz/skill-evaluator.test.d.ts.map +1 -0
- package/dist/skill-authz/skill-evaluator.test.js +127 -0
- package/dist/skill-authz/skill-evaluator.test.js.map +1 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +16 -44
- package/dist/telemetry.js.map +1 -1
- package/dist/types.d.ts +48 -105
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +34 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -3
- package/scripts/install-sentry-windows.ps1 +217 -0
package/dist/api.js
CHANGED
|
@@ -1,24 +1,72 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
39
|
exports.SentryApiServer = void 0;
|
|
7
40
|
const http_1 = __importDefault(require("http"));
|
|
41
|
+
const proxy_1 = require("./proxy");
|
|
42
|
+
const sandbox_1 = require("./sandbox");
|
|
43
|
+
const api_auth_1 = require("./api-auth");
|
|
8
44
|
const logger_1 = require("./logger");
|
|
9
45
|
class SentryApiServer {
|
|
10
|
-
constructor(config, getTaggedProcesses, getEngine, getSkillEvaluator, getPolicyVersion, getLastSyncAt,
|
|
46
|
+
constructor(config, getTaggedProcesses, getEngine, getSkillEvaluator, getPolicyVersion, getLastSyncAt, getProxy = () => undefined, getPolicyEnforcer = () => undefined) {
|
|
11
47
|
this.config = config;
|
|
12
48
|
this.getTaggedProcesses = getTaggedProcesses;
|
|
13
49
|
this.getEngine = getEngine;
|
|
14
50
|
this.getSkillEvaluator = getSkillEvaluator;
|
|
15
51
|
this.getPolicyVersion = getPolicyVersion;
|
|
16
52
|
this.getLastSyncAt = getLastSyncAt;
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.getAnomalyDetector = getAnomalyDetector;
|
|
53
|
+
this.getProxy = getProxy;
|
|
54
|
+
this.getPolicyEnforcer = getPolicyEnforcer;
|
|
20
55
|
this.server = null;
|
|
21
56
|
this.startTime = Date.now();
|
|
57
|
+
this.auth = new api_auth_1.LocalApiAuth({
|
|
58
|
+
stateDir: config.sentry.stateDir,
|
|
59
|
+
// Read-only health/status is anonymous so operator dashboards and
|
|
60
|
+
// monitoring agents can poll without provisioning the bearer token.
|
|
61
|
+
publicPaths: ['/api/v1/status', '/health'],
|
|
62
|
+
});
|
|
63
|
+
logger_1.logger.info('Local API auth initialized — clients must send Authorization: Bearer <token>', {
|
|
64
|
+
tokenPath: this.auth.getTokenPath(),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** Returns the bearer token for use by trusted local tooling. */
|
|
68
|
+
getAuthToken() {
|
|
69
|
+
return this.auth.getToken();
|
|
22
70
|
}
|
|
23
71
|
async start() {
|
|
24
72
|
if (this.server)
|
|
@@ -50,6 +98,7 @@ class SentryApiServer {
|
|
|
50
98
|
const engine = this.getEngine();
|
|
51
99
|
const stats = engine.getStats();
|
|
52
100
|
const processes = this.getTaggedProcesses();
|
|
101
|
+
const platform = process.platform === 'linux' ? 'linux' : process.platform === 'darwin' ? 'darwin' : process.platform === 'win32' ? 'win32' : 'unknown';
|
|
53
102
|
return {
|
|
54
103
|
version: this.config.sentry.version,
|
|
55
104
|
uptime: Math.floor((Date.now() - this.startTime) / 1000),
|
|
@@ -60,7 +109,11 @@ class SentryApiServer {
|
|
|
60
109
|
decisionsTotal: stats.total,
|
|
61
110
|
decisionsDenied: stats.denied,
|
|
62
111
|
lastSyncAt: this.getLastSyncAt(),
|
|
63
|
-
platform:
|
|
112
|
+
platform: platform,
|
|
113
|
+
proxyEnabled: this.config.proxy?.enabled ?? false,
|
|
114
|
+
proxyPort: this.config.proxy?.port ?? 0,
|
|
115
|
+
redirectEnabled: this.config.redirect?.enabled ?? false,
|
|
116
|
+
redirectStrategy: this.config.redirect?.strategy ?? 'none',
|
|
64
117
|
};
|
|
65
118
|
}
|
|
66
119
|
async handleRequest(req, res) {
|
|
@@ -77,6 +130,16 @@ class SentryApiServer {
|
|
|
77
130
|
res.end();
|
|
78
131
|
return;
|
|
79
132
|
}
|
|
133
|
+
// Auth gate (skipped for public read-only paths defined by LocalApiAuth).
|
|
134
|
+
const authResult = this.auth.authorize(req);
|
|
135
|
+
if (!authResult.ok) {
|
|
136
|
+
await this.json(res, 401, {
|
|
137
|
+
error: 'Authentication required',
|
|
138
|
+
hint: `Send 'Authorization: Bearer <token>' (token stored at ${this.auth.getTokenPath()})`,
|
|
139
|
+
reason: authResult.reason,
|
|
140
|
+
});
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
80
143
|
try {
|
|
81
144
|
switch (true) {
|
|
82
145
|
case method === 'GET' && pathname === '/api/v1/status':
|
|
@@ -110,15 +173,84 @@ class SentryApiServer {
|
|
|
110
173
|
blockedEgress: this.config.network.blockHosts,
|
|
111
174
|
});
|
|
112
175
|
break;
|
|
113
|
-
case method === 'POST' && pathname === '/api/v1/policy/reload':
|
|
114
|
-
|
|
176
|
+
case method === 'POST' && pathname === '/api/v1/policy/reload': {
|
|
177
|
+
// The reload itself is triggered by emitting a marker; the daemon
|
|
178
|
+
// observes this and runs syncPolicies on its next tick. We use a
|
|
179
|
+
// setImmediate so this handler stays sync-friendly.
|
|
180
|
+
process.nextTick(() => process.emit('SIGUSR1'));
|
|
181
|
+
await this.json(res, 202, { message: 'Policy reload scheduled (next sync tick)' });
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
// NeuroShield proxy endpoints
|
|
185
|
+
case method === 'GET' && pathname === '/api/v1/proxy/status':
|
|
186
|
+
await this.json(res, 200, {
|
|
187
|
+
enabled: this.config.proxy.enabled,
|
|
188
|
+
port: this.config.proxy.port,
|
|
189
|
+
bindAddress: this.config.proxy.bindAddress,
|
|
190
|
+
interceptHttps: this.config.proxy.interceptHttps,
|
|
191
|
+
running: !!this.getProxy(),
|
|
192
|
+
});
|
|
193
|
+
break;
|
|
194
|
+
case method === 'GET' && pathname === '/api/v1/proxy/policies':
|
|
195
|
+
await this.json(res, 200, {
|
|
196
|
+
mode: this.config.enforcement.mode,
|
|
197
|
+
policies: proxy_1.DEFAULT_POLICIES,
|
|
198
|
+
});
|
|
199
|
+
break;
|
|
200
|
+
case method === 'POST' && pathname === '/api/v1/proxy/policies/reload': {
|
|
201
|
+
const { DEFAULT_POLICIES } = await Promise.resolve().then(() => __importStar(require('./proxy')));
|
|
202
|
+
const enforcer = this.getPolicyEnforcer();
|
|
203
|
+
if (enforcer) {
|
|
204
|
+
enforcer.setPolicies(DEFAULT_POLICIES);
|
|
205
|
+
await this.json(res, 200, { message: 'Proxy policies reloaded' });
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
await this.json(res, 503, { error: 'Policy enforcer not available' });
|
|
209
|
+
}
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
case method === 'GET' && pathname === '/api/v1/redirect/status':
|
|
213
|
+
await this.json(res, 200, {
|
|
214
|
+
enabled: this.config.redirect.enabled,
|
|
215
|
+
strategy: this.config.redirect.strategy,
|
|
216
|
+
injectOnDiscover: this.config.redirect.injectOnDiscover,
|
|
217
|
+
});
|
|
115
218
|
break;
|
|
116
219
|
case method === 'POST' && /^\/api\/v1\/sandbox\/(\d+)\/(disable|restrict)$/.test(pathname): {
|
|
117
220
|
const match = pathname.match(/^\/api\/v1\/sandbox\/(\d+)\/(disable|restrict)$/);
|
|
118
221
|
const pid = parseInt(match[1], 10);
|
|
119
222
|
const action = match[2];
|
|
120
|
-
|
|
121
|
-
|
|
223
|
+
// Refuse if pid isn't in our tagged-process set (operator can only
|
|
224
|
+
// touch processes Sentry actively manages).
|
|
225
|
+
const proc = this.getTaggedProcesses().find(p => p.pid === pid);
|
|
226
|
+
if (!proc) {
|
|
227
|
+
await this.json(res, 404, { error: 'Process not found in tagged set', pid });
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
if (action === 'disable') {
|
|
231
|
+
const removed = await (0, sandbox_1.removeSandbox)(pid);
|
|
232
|
+
logger_1.logger.warn('Sandbox disabled by operator request', { pid, removed });
|
|
233
|
+
await this.json(res, removed ? 200 : 500, {
|
|
234
|
+
message: removed ? `Sandbox removed for pid ${pid}` : 'Sandbox removal failed',
|
|
235
|
+
pid,
|
|
236
|
+
applied: removed,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
// restrict → re-apply the most restrictive profile available
|
|
241
|
+
const restrictiveProfile = (0, sandbox_1.getProfileForFramework)('') /* falls back to default-restrictive */;
|
|
242
|
+
const result = restrictiveProfile
|
|
243
|
+
? await (0, sandbox_1.applySandbox)({ ...proc, sandboxProfileName: restrictiveProfile.name }, this.config)
|
|
244
|
+
: { applied: false, features: [], reason: 'no restrictive profile available' };
|
|
245
|
+
logger_1.logger.info('Sandbox restrict applied', { pid, ...result });
|
|
246
|
+
await this.json(res, result.applied ? 200 : 500, {
|
|
247
|
+
message: result.applied ? `Sandbox restricted for pid ${pid}` : 'Sandbox restrict failed',
|
|
248
|
+
pid,
|
|
249
|
+
applied: result.applied,
|
|
250
|
+
features: result.features,
|
|
251
|
+
reason: result.reason,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
122
254
|
break;
|
|
123
255
|
}
|
|
124
256
|
case method === 'GET' && pathname === '/api/v1/approvals':
|
|
@@ -146,131 +278,6 @@ class SentryApiServer {
|
|
|
146
278
|
}
|
|
147
279
|
break;
|
|
148
280
|
}
|
|
149
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
150
|
-
// AEGIS Framework API Endpoints
|
|
151
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
152
|
-
// AEGIS: Agent identity & lifecycle (IAM Domain)
|
|
153
|
-
case method === 'GET' && pathname === '/api/v1/aegis/agents':
|
|
154
|
-
await this.json(res, 200, this.getAgentRegistry().getAllIdentities());
|
|
155
|
-
break;
|
|
156
|
-
case method === 'GET' && /^\/api\/v1\/aegis\/agents\/([^/]+)$/.test(pathname): {
|
|
157
|
-
const agentId = pathname.match(/^\/api\/v1\/aegis\/agents\/([^/]+)$/)[1];
|
|
158
|
-
const identity = this.getAgentRegistry().getIdentityById(agentId);
|
|
159
|
-
if (identity) {
|
|
160
|
-
await this.json(res, 200, identity);
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
await this.json(res, 404, { error: 'Agent identity not found' });
|
|
164
|
-
}
|
|
165
|
-
break;
|
|
166
|
-
}
|
|
167
|
-
case method === 'GET' && pathname === '/api/v1/aegis/agents/active':
|
|
168
|
-
await this.json(res, 200, this.getAgentRegistry().getActiveIdentities());
|
|
169
|
-
break;
|
|
170
|
-
case method === 'PUT' && /^\/api\/v1\/aegis\/agents\/([^/]+)\/documentation$/.test(pathname): {
|
|
171
|
-
const docId = pathname.match(/^\/api\/v1\/aegis\/agents\/([^/]+)\/documentation$/)[1];
|
|
172
|
-
let body = '';
|
|
173
|
-
for await (const chunk of req)
|
|
174
|
-
body += chunk;
|
|
175
|
-
const updates = JSON.parse(body);
|
|
176
|
-
const identity = this.getAgentRegistry().getIdentityById(docId);
|
|
177
|
-
if (identity) {
|
|
178
|
-
this.getAgentRegistry().updateDocumentation(identity.frameworkId, identity.pid, updates);
|
|
179
|
-
await this.json(res, 200, { message: 'Documentation updated' });
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
await this.json(res, 404, { error: 'Agent identity not found' });
|
|
183
|
-
}
|
|
184
|
-
break;
|
|
185
|
-
}
|
|
186
|
-
case method === 'PUT' && /^\/api\/v1\/aegis\/agents\/([^/]+)\/identity$/.test(pathname): {
|
|
187
|
-
const updId = pathname.match(/^\/api\/v1\/aegis\/agents\/([^/]+)\/identity$/)[1];
|
|
188
|
-
let body = '';
|
|
189
|
-
for await (const chunk of req)
|
|
190
|
-
body += chunk;
|
|
191
|
-
const updates = JSON.parse(body);
|
|
192
|
-
const identity = this.getAgentRegistry().getIdentityById(updId);
|
|
193
|
-
if (identity) {
|
|
194
|
-
this.getAgentRegistry().updateIdentity(identity.frameworkId, identity.pid, updates);
|
|
195
|
-
await this.json(res, 200, { message: 'Identity updated' });
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
await this.json(res, 404, { error: 'Agent identity not found' });
|
|
199
|
-
}
|
|
200
|
-
break;
|
|
201
|
-
}
|
|
202
|
-
// AEGIS: Agent-on-a-Page governance documentation
|
|
203
|
-
case method === 'GET' && /^\/api\/v1\/aegis\/agents\/([^/]+)\/page$/.test(pathname): {
|
|
204
|
-
const pageId = pathname.match(/^\/api\/v1\/aegis\/agents\/([^/]+)\/page$/)[1];
|
|
205
|
-
const identity = this.getAgentRegistry().getIdentityById(pageId);
|
|
206
|
-
if (identity) {
|
|
207
|
-
await this.json(res, 200, {
|
|
208
|
-
agentId: identity.id,
|
|
209
|
-
frameworkId: identity.frameworkId,
|
|
210
|
-
frameworkName: identity.frameworkName,
|
|
211
|
-
pid: identity.pid,
|
|
212
|
-
status: identity.status,
|
|
213
|
-
purpose: identity.purpose,
|
|
214
|
-
riskLevel: identity.riskLevel,
|
|
215
|
-
owner: identity.owner,
|
|
216
|
-
ownerEmail: identity.ownerEmail,
|
|
217
|
-
documentation: identity.documentation,
|
|
218
|
-
allowedTools: identity.allowedTools,
|
|
219
|
-
maxDecisionScope: identity.maxDecisionScope,
|
|
220
|
-
allowedDataClassifications: identity.allowedDataClassifications,
|
|
221
|
-
firstDiscoveredAt: identity.firstDiscoveredAt,
|
|
222
|
-
lastSeenAt: identity.lastSeenAt,
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
await this.json(res, 404, { error: 'Agent identity not found' });
|
|
227
|
-
}
|
|
228
|
-
break;
|
|
229
|
-
}
|
|
230
|
-
// AEGIS: Least-agency constraints (Zero Trust Domain)
|
|
231
|
-
case method === 'GET' && pathname === '/api/v1/aegis/constraints':
|
|
232
|
-
await this.json(res, 200, [...this.getAgentRegistry().getAllIdentities().map(id => ({ frameworkId: id.frameworkId, level: id.maxDecisionScope }))]);
|
|
233
|
-
break;
|
|
234
|
-
// AEGIS: Agent action log (Threat Management Domain)
|
|
235
|
-
case method === 'GET' && pathname === '/api/v1/aegis/actions':
|
|
236
|
-
await this.json(res, 200, this.getActionLogger().getRecentActions(100));
|
|
237
|
-
break;
|
|
238
|
-
case method === 'GET' && pathname === '/api/v1/aegis/actions/stats':
|
|
239
|
-
await this.json(res, 200, { processedCount: this.getActionLogger().getProcessedCount() });
|
|
240
|
-
break;
|
|
241
|
-
// AEGIS: Anomaly alerts (GRC + Threat Management Domains)
|
|
242
|
-
case method === 'GET' && pathname === '/api/v1/aegis/anomalies':
|
|
243
|
-
await this.json(res, 200, this.getAnomalyDetector().getAllAlerts());
|
|
244
|
-
break;
|
|
245
|
-
case method === 'GET' && pathname === '/api/v1/aegis/anomalies/open':
|
|
246
|
-
await this.json(res, 200, this.getAnomalyDetector().getOpenAlerts());
|
|
247
|
-
break;
|
|
248
|
-
case method === 'POST' && /^\/api\/v1\/aegis\/anomalies\/([^/]+)\/resolve$/.test(pathname): {
|
|
249
|
-
const alertId = pathname.match(/^\/api\/v1\/aegis\/anomalies\/([^/]+)\/resolve$/)[1];
|
|
250
|
-
let body = '';
|
|
251
|
-
for await (const chunk of req)
|
|
252
|
-
body += chunk;
|
|
253
|
-
const { resolvedBy } = JSON.parse(body);
|
|
254
|
-
const success = this.getAnomalyDetector().resolveAlert(alertId, resolvedBy);
|
|
255
|
-
if (success) {
|
|
256
|
-
await this.json(res, 200, { message: 'Alert resolved' });
|
|
257
|
-
}
|
|
258
|
-
else {
|
|
259
|
-
await this.json(res, 404, { error: 'Alert not found' });
|
|
260
|
-
}
|
|
261
|
-
break;
|
|
262
|
-
}
|
|
263
|
-
case method === 'POST' && /^\/api\/v1\/aegis\/anomalies\/([^/]+)\/acknowledge$/.test(pathname): {
|
|
264
|
-
const ackId = pathname.match(/^\/api\/v1\/aegis\/anomalies\/([^/]+)\/acknowledge$/)[1];
|
|
265
|
-
const success = this.getAnomalyDetector().acknowledgeAlert(ackId);
|
|
266
|
-
if (success) {
|
|
267
|
-
await this.json(res, 200, { message: 'Alert acknowledged' });
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
await this.json(res, 404, { error: 'Alert not found or already resolved' });
|
|
271
|
-
}
|
|
272
|
-
break;
|
|
273
|
-
}
|
|
274
281
|
default:
|
|
275
282
|
await this.json(res, 404, { error: 'Not found', path: pathname });
|
|
276
283
|
}
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAqUA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgC1C"}
|
package/dist/cli.js
CHANGED
|
@@ -4,11 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.main = main;
|
|
7
8
|
const http_1 = __importDefault(require("http"));
|
|
8
9
|
const fs_1 = __importDefault(require("fs"));
|
|
9
10
|
const path_1 = __importDefault(require("path"));
|
|
10
11
|
const os_1 = __importDefault(require("os"));
|
|
11
12
|
const child_process_1 = require("child_process");
|
|
13
|
+
const config_1 = require("./config");
|
|
14
|
+
const launcher_1 = require("./launcher");
|
|
12
15
|
const setup_1 = require("./setup");
|
|
13
16
|
const VERSION = require('../package.json').version || '1.0.0';
|
|
14
17
|
const USAGE = `
|
|
@@ -20,6 +23,7 @@ USAGE
|
|
|
20
23
|
COMMANDS
|
|
21
24
|
setup Generate and write sentry.yaml configuration
|
|
22
25
|
install Install the sentry daemon as a system service
|
|
26
|
+
launch Launch an agent through Sentry's platform sandbox wrapper
|
|
23
27
|
status Show sentry daemon status and active processes
|
|
24
28
|
logs Tail the sentry audit log
|
|
25
29
|
version Print version
|
|
@@ -33,9 +37,16 @@ SETUP OPTIONS
|
|
|
33
37
|
--config=<path> Config output path (default: /etc/neuroshield/sentry.yaml)
|
|
34
38
|
--non-interactive Skip prompts (use with flags above)
|
|
35
39
|
|
|
40
|
+
LAUNCH OPTIONS
|
|
41
|
+
--framework=<id> Framework id used to select sandbox profile
|
|
42
|
+
--profile=<name> Explicit sandbox profile name
|
|
43
|
+
--cwd=<path> Working directory for the launched command
|
|
44
|
+
--dry-run Print the computed launch plan without executing it
|
|
45
|
+
|
|
36
46
|
EXAMPLES
|
|
37
47
|
neuroshield-sentry setup
|
|
38
48
|
neuroshield-sentry setup --org=org_abc123 --token=nst_xxx --mode=enforce
|
|
49
|
+
neuroshield-sentry launch --framework=codex -- node agent.js
|
|
39
50
|
sudo neuroshield-sentry install
|
|
40
51
|
neuroshield-sentry status
|
|
41
52
|
neuroshield-sentry logs -n 50
|
|
@@ -47,6 +58,12 @@ function getConfigPaths(platform) {
|
|
|
47
58
|
log: '/usr/local/var/log/neuroshield/sentry.log',
|
|
48
59
|
};
|
|
49
60
|
}
|
|
61
|
+
if (platform === 'win32') {
|
|
62
|
+
return {
|
|
63
|
+
config: `${process.env.ProgramData || 'C:\\ProgramData'}\\NeuroShield\\Sentry\\sentry.yaml`,
|
|
64
|
+
log: `${process.env.ProgramData || 'C:\\ProgramData'}\\NeuroShield\\Sentry\\logs\\sentry.log`,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
50
67
|
return {
|
|
51
68
|
config: '/etc/neuroshield/sentry.yaml',
|
|
52
69
|
log: '/var/log/neuroshield/sentry.log',
|
|
@@ -72,6 +89,22 @@ async function cmdInstall() {
|
|
|
72
89
|
const platform = os_1.default.platform();
|
|
73
90
|
const pkgRoot = path_1.default.resolve(__dirname, '..');
|
|
74
91
|
const scriptsDir = path_1.default.join(pkgRoot, 'scripts');
|
|
92
|
+
if (platform === 'win32') {
|
|
93
|
+
const installScript = path_1.default.join(scriptsDir, 'install-sentry-windows.ps1');
|
|
94
|
+
if (!fs_1.default.existsSync(installScript)) {
|
|
95
|
+
console.error(`Windows install script not found at ${installScript}`);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
console.log('Installing sentry daemon for Windows...');
|
|
99
|
+
const result = (0, child_process_1.spawnSync)('powershell', [
|
|
100
|
+
'-ExecutionPolicy', 'Bypass',
|
|
101
|
+
'-File', installScript,
|
|
102
|
+
], {
|
|
103
|
+
stdio: 'inherit',
|
|
104
|
+
env: { ...process.env, SENTRY_VERSION: VERSION },
|
|
105
|
+
});
|
|
106
|
+
process.exit(result.status ?? 1);
|
|
107
|
+
}
|
|
75
108
|
const scriptName = platform === 'darwin' ? 'install-sentry-macos.sh' : 'install-sentry.sh';
|
|
76
109
|
const installScript = path_1.default.join(scriptsDir, scriptName);
|
|
77
110
|
if (!fs_1.default.existsSync(installScript)) {
|
|
@@ -86,8 +119,29 @@ async function cmdInstall() {
|
|
|
86
119
|
});
|
|
87
120
|
process.exit(result.status ?? 1);
|
|
88
121
|
}
|
|
122
|
+
async function cmdLaunch(args) {
|
|
123
|
+
const separatorIndex = args.indexOf('--');
|
|
124
|
+
const flagArgs = separatorIndex >= 0 ? args.slice(0, separatorIndex) : args.filter((arg) => arg.startsWith('--'));
|
|
125
|
+
const commandArgs = separatorIndex >= 0 ? args.slice(separatorIndex + 1) : args.filter((arg) => !arg.startsWith('--'));
|
|
126
|
+
const flags = parseFlags(flagArgs);
|
|
127
|
+
if (commandArgs.length === 0) {
|
|
128
|
+
console.error('launch requires a command after --');
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
const configPath = flag(flags, 'config', 'config-path');
|
|
132
|
+
const config = (0, config_1.loadConfig)(configPath);
|
|
133
|
+
const exitCode = await (0, launcher_1.launchWithSentry)(config, {
|
|
134
|
+
frameworkId: flag(flags, 'framework'),
|
|
135
|
+
profileName: flag(flags, 'profile'),
|
|
136
|
+
cwd: flag(flags, 'cwd'),
|
|
137
|
+
dryRun: flagEnabled(flags, 'dry-run', 'dryrun'),
|
|
138
|
+
command: commandArgs,
|
|
139
|
+
});
|
|
140
|
+
process.exit(exitCode);
|
|
141
|
+
}
|
|
89
142
|
async function cmdStatus() {
|
|
90
|
-
const
|
|
143
|
+
const platform = os_1.default.platform();
|
|
144
|
+
const paths = getConfigPaths(platform);
|
|
91
145
|
// Try local API first
|
|
92
146
|
const apiPorts = [9191];
|
|
93
147
|
for (const port of apiPorts) {
|
|
@@ -107,6 +161,10 @@ async function cmdStatus() {
|
|
|
107
161
|
console.log(` Decisions Denied: ${status.decisionsDenied}`);
|
|
108
162
|
console.log(` Policy Version: ${status.policyVersion}`);
|
|
109
163
|
console.log(` Last Sync: ${status.lastSyncAt || 'never'}`);
|
|
164
|
+
if (status.proxyEnabled) {
|
|
165
|
+
console.log(` Proxy Port: ${status.proxyPort}`);
|
|
166
|
+
console.log(` Redirect: ${status.redirectEnabled ? status.redirectStrategy : 'disabled'}`);
|
|
167
|
+
}
|
|
110
168
|
console.log('');
|
|
111
169
|
if (status.taggedProcesses > 0) {
|
|
112
170
|
try {
|
|
@@ -131,12 +189,23 @@ async function cmdStatus() {
|
|
|
131
189
|
}
|
|
132
190
|
// Fallback: check if process is running
|
|
133
191
|
try {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
192
|
+
if (platform === 'win32') {
|
|
193
|
+
const result = (0, child_process_1.execSync)(`powershell -Command "Get-Process -Name 'node' -ErrorAction SilentlyContinue | Where-Object { $_.CommandLine -match 'sentry' } | Select-Object -ExpandProperty Id"`, { encoding: 'utf8', timeout: 5000 }).trim();
|
|
194
|
+
if (result) {
|
|
195
|
+
console.log('Sentry daemon process is running (pids: ' + result + ')');
|
|
196
|
+
console.log('Local API not responding — daemon may still be starting up.');
|
|
197
|
+
console.log(`Config: ${paths.config}`);
|
|
198
|
+
console.log(`Logs: ${paths.log}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
const ps = (0, child_process_1.execSync)('pgrep -f neuroshield-sentryd', { encoding: 'utf8', timeout: 3000 }).trim();
|
|
203
|
+
if (ps) {
|
|
204
|
+
console.log('Sentry daemon process is running (pids: ' + ps + ')');
|
|
205
|
+
console.log('Local API not responding — daemon may still be starting up.');
|
|
206
|
+
console.log(`Config: ${paths.config}`);
|
|
207
|
+
console.log(`Logs: ${paths.log}`);
|
|
208
|
+
}
|
|
140
209
|
}
|
|
141
210
|
}
|
|
142
211
|
catch {
|
|
@@ -146,7 +215,10 @@ async function cmdStatus() {
|
|
|
146
215
|
if (fs_1.default.existsSync(paths.config)) {
|
|
147
216
|
console.log('Sentry daemon is NOT running.');
|
|
148
217
|
console.log(`Config exists: ${paths.config}`);
|
|
149
|
-
|
|
218
|
+
const startCmd = platform === 'win32'
|
|
219
|
+
? 'net start NeuroShieldSentry'
|
|
220
|
+
: 'sudo neuroshield-sentryd';
|
|
221
|
+
console.log(`Start it with: ${startCmd}`);
|
|
150
222
|
}
|
|
151
223
|
else {
|
|
152
224
|
console.log('Sentry daemon is NOT configured.');
|
|
@@ -188,12 +260,28 @@ function parseFlags(args) {
|
|
|
188
260
|
for (const arg of args) {
|
|
189
261
|
const match = arg.match(/^--(\w[\w-]*)(?:=(.*))?$/);
|
|
190
262
|
if (match) {
|
|
191
|
-
const
|
|
192
|
-
|
|
263
|
+
const rawKey = match[1];
|
|
264
|
+
const normalizedKey = rawKey.replace(/-/g, '');
|
|
265
|
+
const value = match[2] ?? 'true';
|
|
266
|
+
flags[rawKey] = value;
|
|
267
|
+
flags[normalizedKey] = value;
|
|
193
268
|
}
|
|
194
269
|
}
|
|
195
270
|
return flags;
|
|
196
271
|
}
|
|
272
|
+
function flag(flags, ...names) {
|
|
273
|
+
for (const name of names) {
|
|
274
|
+
if (flags[name] !== undefined)
|
|
275
|
+
return flags[name];
|
|
276
|
+
const normalized = name.replace(/-/g, '');
|
|
277
|
+
if (flags[normalized] !== undefined)
|
|
278
|
+
return flags[normalized];
|
|
279
|
+
}
|
|
280
|
+
return undefined;
|
|
281
|
+
}
|
|
282
|
+
function flagEnabled(flags, ...names) {
|
|
283
|
+
return flag(flags, ...names) === 'true';
|
|
284
|
+
}
|
|
197
285
|
function httpGet(url, timeout) {
|
|
198
286
|
return new Promise((resolve, reject) => {
|
|
199
287
|
const req = http_1.default.get(url, { timeout }, res => {
|
|
@@ -230,6 +318,9 @@ async function main() {
|
|
|
230
318
|
case 'install':
|
|
231
319
|
await cmdInstall();
|
|
232
320
|
break;
|
|
321
|
+
case 'launch':
|
|
322
|
+
await cmdLaunch(rest);
|
|
323
|
+
break;
|
|
233
324
|
case 'status':
|
|
234
325
|
await cmdStatus();
|
|
235
326
|
break;
|
|
@@ -249,8 +340,10 @@ async function main() {
|
|
|
249
340
|
break;
|
|
250
341
|
}
|
|
251
342
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
343
|
+
if (require.main === module) {
|
|
344
|
+
main().catch(err => {
|
|
345
|
+
console.error('CLI error:', err.message);
|
|
346
|
+
process.exit(1);
|
|
347
|
+
});
|
|
348
|
+
}
|
|
256
349
|
//# sourceMappingURL=cli.js.map
|