@neurosec/sentry 1.0.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/LICENSE +21 -0
- package/README.md +118 -0
- package/bin/cli.js +18 -0
- package/bin/sentryd.js +19 -0
- package/dist/api.d.ts +21 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +161 -0
- package/dist/api.js.map +1 -0
- package/dist/audit.d.ts +18 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +114 -0
- package/dist/audit.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +255 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +54 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +160 -0
- package/dist/config.js.map +1 -0
- package/dist/discovery.d.ts +5 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +279 -0
- package/dist/discovery.js.map +1 -0
- package/dist/enforcement/enforcement-engine.d.ts +37 -0
- package/dist/enforcement/enforcement-engine.d.ts.map +1 -0
- package/dist/enforcement/enforcement-engine.js +325 -0
- package/dist/enforcement/enforcement-engine.js.map +1 -0
- package/dist/enforcement/file-monitor.d.ts +4 -0
- package/dist/enforcement/file-monitor.d.ts.map +1 -0
- package/dist/enforcement/file-monitor.js +114 -0
- package/dist/enforcement/file-monitor.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +248 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +2 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +17 -0
- package/dist/logger.js.map +1 -0
- package/dist/sandbox/index.d.ts +14 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +91 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/linux-sandbox.d.ts +21 -0
- package/dist/sandbox/linux-sandbox.d.ts.map +1 -0
- package/dist/sandbox/linux-sandbox.js +186 -0
- package/dist/sandbox/linux-sandbox.js.map +1 -0
- package/dist/sandbox/macos-sandbox.d.ts +17 -0
- package/dist/sandbox/macos-sandbox.d.ts.map +1 -0
- package/dist/sandbox/macos-sandbox.js +145 -0
- package/dist/sandbox/macos-sandbox.js.map +1 -0
- package/dist/setup.d.ts +14 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +220 -0
- package/dist/setup.js.map +1 -0
- package/dist/skill-authz/skill-evaluator.d.ts +20 -0
- package/dist/skill-authz/skill-evaluator.d.ts.map +1 -0
- package/dist/skill-authz/skill-evaluator.js +159 -0
- package/dist/skill-authz/skill-evaluator.js.map +1 -0
- package/dist/skill-authz/skill-scanner.d.ts +18 -0
- package/dist/skill-authz/skill-scanner.d.ts.map +1 -0
- package/dist/skill-authz/skill-scanner.js +169 -0
- package/dist/skill-authz/skill-scanner.js.map +1 -0
- package/dist/telemetry.d.ts +18 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +106 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/types.d.ts +127 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +209 -0
- package/dist/types.js.map +1 -0
- package/package.json +69 -0
- package/scripts/install-sentry-macos.sh +238 -0
- package/scripts/install-sentry.sh +253 -0
- package/scripts/postinstall.js +191 -0
- package/scripts/prepack.js +33 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enforcement-engine.js","sourceRoot":"","sources":["../../src/enforcement/enforcement-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TaggedProcess, FileAccessEvent } from '../types';
|
|
2
|
+
export declare function scanFileAccess(taggedProcesses: TaggedProcess[], onAccess: (event: Omit<FileAccessEvent, 'decision' | 'timestamp'>) => void): Promise<void>;
|
|
3
|
+
export declare function scanProcEnviron(taggedProcesses: TaggedProcess[]): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=file-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-monitor.d.ts","sourceRoot":"","sources":["../../src/enforcement/file-monitor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AA0D1D,wBAAsB,cAAc,CAClC,eAAe,EAAE,aAAa,EAAE,EAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,GACzE,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,eAAe,CAAC,eAAe,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCrF"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.scanFileAccess = scanFileAccess;
|
|
7
|
+
exports.scanProcEnviron = scanProcEnviron;
|
|
8
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const logger_1 = require("../logger");
|
|
11
|
+
async function getProcessFds(pid) {
|
|
12
|
+
const fdDir = `/proc/${pid}/fd`;
|
|
13
|
+
const entries = [];
|
|
14
|
+
try {
|
|
15
|
+
const fds = await promises_1.default.readdir(fdDir);
|
|
16
|
+
for (const fd of fds) {
|
|
17
|
+
try {
|
|
18
|
+
const target = await promises_1.default.readlink(path_1.default.join(fdDir, fd));
|
|
19
|
+
entries.push({ fd: parseInt(fd, 10), target });
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// race: fd closed between readdir and readlink
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Process exited or /proc not available
|
|
28
|
+
}
|
|
29
|
+
return entries;
|
|
30
|
+
}
|
|
31
|
+
function isSensitivePath(target) {
|
|
32
|
+
const normalized = target.toLowerCase();
|
|
33
|
+
const patterns = [
|
|
34
|
+
{ pattern: /\.ssh[\\/]/, category: 'ssh_keys' },
|
|
35
|
+
{ pattern: /\.aws[\\/]/, category: 'aws_credentials' },
|
|
36
|
+
{ pattern: /\.config[\\/]gcloud/, category: 'gcloud_credentials' },
|
|
37
|
+
{ pattern: /\.kube[\\/]/, category: 'kube_config' },
|
|
38
|
+
{ pattern: /\.gnupg[\\/]/, category: 'gpg_keys' },
|
|
39
|
+
{ pattern: /\.git[\\/]config/, category: 'git_config' },
|
|
40
|
+
{ pattern: /\/etc[\\/]passwd/, category: 'passwd_file' },
|
|
41
|
+
{ pattern: /\/etc[\\/]shadow/, category: 'shadow_file' },
|
|
42
|
+
{ pattern: /\/etc[\\/]sudoers/, category: 'sudoers_file' },
|
|
43
|
+
{ pattern: /\/etc[\\/]ssl[\\/]/, category: 'ssl_certs' },
|
|
44
|
+
{ pattern: /\/var[\\/]log[\\/]auth/, category: 'auth_log' },
|
|
45
|
+
{ pattern: /\/var[\\/]log[\\/]secure/, category: 'secure_log' },
|
|
46
|
+
{ pattern: /token/i, category: 'token' },
|
|
47
|
+
{ pattern: /secret/i, category: 'secret' },
|
|
48
|
+
];
|
|
49
|
+
for (const { pattern, category } of patterns) {
|
|
50
|
+
if (pattern.test(normalized)) {
|
|
51
|
+
return { sensitive: true, category };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
async function scanFileAccess(taggedProcesses, onAccess) {
|
|
57
|
+
for (const proc of taggedProcesses) {
|
|
58
|
+
if (!proc.sandboxed)
|
|
59
|
+
continue;
|
|
60
|
+
try {
|
|
61
|
+
const fds = await getProcessFds(proc.pid);
|
|
62
|
+
for (const fdEntry of fds) {
|
|
63
|
+
const sensitive = isSensitivePath(fdEntry.target);
|
|
64
|
+
if (sensitive) {
|
|
65
|
+
const isWrite = fdEntry.fd === 1 || fdEntry.fd === 2; // stdout/stderr
|
|
66
|
+
onAccess({
|
|
67
|
+
pid: proc.pid,
|
|
68
|
+
processPath: proc.exePath,
|
|
69
|
+
targetPath: fdEntry.target,
|
|
70
|
+
operation: isWrite ? 'write' : 'read',
|
|
71
|
+
frameworkId: proc.frameworkId,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
// process may have ended, skip
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function scanProcEnviron(taggedProcesses) {
|
|
82
|
+
const sensitivePatterns = [
|
|
83
|
+
{ pattern: /key/i, category: 'api_key_in_env' },
|
|
84
|
+
{ pattern: /secret/i, category: 'secret_in_env' },
|
|
85
|
+
{ pattern: /password/i, category: 'password_in_env' },
|
|
86
|
+
{ pattern: /token/i, category: 'token_in_env' },
|
|
87
|
+
{ pattern: /credential/i, category: 'credential_in_env' },
|
|
88
|
+
];
|
|
89
|
+
for (const proc of taggedProcesses) {
|
|
90
|
+
try {
|
|
91
|
+
const content = await promises_1.default.readFile(`/proc/${proc.pid}/environ`, 'utf8');
|
|
92
|
+
const envVars = content.split('\u0000').filter(Boolean);
|
|
93
|
+
for (const envVar of envVars) {
|
|
94
|
+
const [key, value] = envVar.split('=');
|
|
95
|
+
if (!key || !value)
|
|
96
|
+
continue;
|
|
97
|
+
for (const { pattern, category } of sensitivePatterns) {
|
|
98
|
+
if (pattern.test(key) && value.length > 0) {
|
|
99
|
+
logger_1.logger.warn('Sensitive env var accessible by agent', {
|
|
100
|
+
pid: proc.pid,
|
|
101
|
+
frameworkId: proc.frameworkId,
|
|
102
|
+
key,
|
|
103
|
+
category,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// process may have ended
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=file-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-monitor.js","sourceRoot":"","sources":["../../src/enforcement/file-monitor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const http_1 = __importDefault(require("http"));
|
|
7
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const config_1 = require("./config");
|
|
11
|
+
const discovery_1 = require("./discovery");
|
|
12
|
+
const sandbox_1 = require("./sandbox");
|
|
13
|
+
const enforcement_engine_1 = require("./enforcement/enforcement-engine");
|
|
14
|
+
const file_monitor_1 = require("./enforcement/file-monitor");
|
|
15
|
+
const skill_scanner_1 = require("./skill-authz/skill-scanner");
|
|
16
|
+
const skill_evaluator_1 = require("./skill-authz/skill-evaluator");
|
|
17
|
+
const api_1 = require("./api");
|
|
18
|
+
const audit_1 = require("./audit");
|
|
19
|
+
const telemetry_1 = require("./telemetry");
|
|
20
|
+
const logger_1 = require("./logger");
|
|
21
|
+
const DEFAULT_CONFIG_PATHS = [
|
|
22
|
+
'/etc/neuroshield/sentry.yaml',
|
|
23
|
+
'./config/sentry.yaml',
|
|
24
|
+
'./sentry.yaml',
|
|
25
|
+
];
|
|
26
|
+
class SentryDaemon {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.taggedProcesses = [];
|
|
29
|
+
this.discoveryTimer = null;
|
|
30
|
+
this.healthServer = null;
|
|
31
|
+
this.policyVersion = '1.0.0';
|
|
32
|
+
this.startTime = Date.now();
|
|
33
|
+
this.running = false;
|
|
34
|
+
}
|
|
35
|
+
async start(configPath) {
|
|
36
|
+
const resolvedConfigPath = this.resolveConfigPath(configPath);
|
|
37
|
+
this.config = (0, config_1.loadConfig)(resolvedConfigPath);
|
|
38
|
+
logger_1.logger.info('NeuroShield Sentry daemon starting', {
|
|
39
|
+
version: this.config.sentry.version,
|
|
40
|
+
mode: this.config.enforcement.mode,
|
|
41
|
+
platform: os_1.default.platform(),
|
|
42
|
+
hostId: this.config.sentry.hostId,
|
|
43
|
+
});
|
|
44
|
+
await this.ensureDirectories();
|
|
45
|
+
this.auditLogger = new audit_1.AuditLogger(this.config);
|
|
46
|
+
await this.auditLogger.init();
|
|
47
|
+
this.enforcementEngine = new enforcement_engine_1.EnforcementEngine(this.config, this.auditLogger);
|
|
48
|
+
this.skillEvaluator = new skill_evaluator_1.SkillEvaluator(this.config, this.auditLogger);
|
|
49
|
+
this.apiServer = new api_1.SentryApiServer(this.config, () => this.taggedProcesses, () => this.enforcementEngine, () => this.skillEvaluator, () => this.policyVersion, () => this.telemetryReporter?.getLastSyncAt() ?? null);
|
|
50
|
+
await this.apiServer.start();
|
|
51
|
+
this.telemetryReporter = new telemetry_1.TelemetryReporter(this.config, () => this.apiServer.getStatus(), () => this.taggedProcesses, () => this.enforcementEngine.getRecentDecisions(), () => this.policyVersion);
|
|
52
|
+
this.telemetryReporter.start();
|
|
53
|
+
this.startHealthServer();
|
|
54
|
+
this.startDiscoveryLoop();
|
|
55
|
+
this.running = true;
|
|
56
|
+
logger_1.logger.info('NeuroShield Sentry daemon is operational', {
|
|
57
|
+
healthPort: this.config.sentry.healthPort,
|
|
58
|
+
apiPort: this.config.sentry.apiPort,
|
|
59
|
+
mode: this.config.enforcement.mode,
|
|
60
|
+
syncIntervalMs: this.config.neurosec.syncIntervalMs,
|
|
61
|
+
});
|
|
62
|
+
await this.writePidFile();
|
|
63
|
+
}
|
|
64
|
+
async stop() {
|
|
65
|
+
this.running = false;
|
|
66
|
+
logger_1.logger.info('Sentry daemon shutting down');
|
|
67
|
+
if (this.discoveryTimer) {
|
|
68
|
+
clearInterval(this.discoveryTimer);
|
|
69
|
+
this.discoveryTimer = null;
|
|
70
|
+
}
|
|
71
|
+
this.telemetryReporter?.stop();
|
|
72
|
+
await this.apiServer?.stop();
|
|
73
|
+
await this.auditLogger?.shutdown();
|
|
74
|
+
await this.stopHealthServer();
|
|
75
|
+
await this.removePidFile();
|
|
76
|
+
logger_1.logger.info('Sentry daemon stopped');
|
|
77
|
+
}
|
|
78
|
+
async runDiscoveryCycle() {
|
|
79
|
+
try {
|
|
80
|
+
const discovered = await (0, discovery_1.discoverProcesses)(this.config);
|
|
81
|
+
const previousPids = new Set(this.taggedProcesses.map(p => p.pid));
|
|
82
|
+
const newPids = new Set(discovered.map(p => p.pid));
|
|
83
|
+
for (const proc of discovered) {
|
|
84
|
+
if (!previousPids.has(proc.pid)) {
|
|
85
|
+
logger_1.logger.info('New agent process discovered', {
|
|
86
|
+
pid: proc.pid,
|
|
87
|
+
framework: proc.frameworkId,
|
|
88
|
+
command: proc.command.slice(0, 120),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const departedPids = [...previousPids].filter(p => !newPids.has(p));
|
|
93
|
+
for (const pid of departedPids) {
|
|
94
|
+
logger_1.logger.info('Agent process departed', { pid });
|
|
95
|
+
}
|
|
96
|
+
this.taggedProcesses = discovered;
|
|
97
|
+
// Remove sandboxes for departed processes
|
|
98
|
+
for (const pid of departedPids) {
|
|
99
|
+
try {
|
|
100
|
+
await (0, sandbox_1.removeSandbox)(pid);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// best-effort
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Apply sandbox to unsandboxed processes
|
|
107
|
+
if (this.config.enforcement.sandboxEnabled) {
|
|
108
|
+
for (const proc of this.taggedProcesses) {
|
|
109
|
+
if (!proc.sandboxed && proc.sandboxProfileName) {
|
|
110
|
+
const applied = await (0, sandbox_1.applySandbox)(proc, this.config);
|
|
111
|
+
if (applied) {
|
|
112
|
+
proc.sandboxed = true;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Scan for sensitive file access
|
|
118
|
+
if (this.config.enforcement.filesystemFilterEnabled) {
|
|
119
|
+
await (0, file_monitor_1.scanFileAccess)(this.taggedProcesses, event => {
|
|
120
|
+
const decision = this.enforcementEngine.evaluateFileAccess(event);
|
|
121
|
+
logger_1.logger.debug('File access evaluated', {
|
|
122
|
+
pid: event.pid,
|
|
123
|
+
path: event.targetPath,
|
|
124
|
+
operation: event.operation,
|
|
125
|
+
decision: decision.action,
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
await (0, file_monitor_1.scanProcEnviron)(this.taggedProcesses);
|
|
129
|
+
}
|
|
130
|
+
// Scan for skills
|
|
131
|
+
if (this.config.skillAuthz.enabled) {
|
|
132
|
+
const skills = await (0, skill_scanner_1.scanSkills)(this.config, this.taggedProcesses);
|
|
133
|
+
if (skills.length > 0) {
|
|
134
|
+
logger_1.logger.info('Skills detected', { processCount: skills.length });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Update enforcement engine with latest process state
|
|
138
|
+
this.enforcementEngine.updateTaggedProcesses(this.taggedProcesses);
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
logger_1.logger.error('Discovery cycle failed', { err: err.message });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
startDiscoveryLoop() {
|
|
145
|
+
const initialDelay = 2000;
|
|
146
|
+
setTimeout(() => {
|
|
147
|
+
this.runDiscoveryCycle().catch(err => {
|
|
148
|
+
logger_1.logger.error('Initial discovery failed', { err: err.message });
|
|
149
|
+
});
|
|
150
|
+
}, initialDelay);
|
|
151
|
+
this.discoveryTimer = setInterval(() => {
|
|
152
|
+
this.runDiscoveryCycle().catch(err => {
|
|
153
|
+
logger_1.logger.error('Discovery cycle failed', { err: err.message });
|
|
154
|
+
});
|
|
155
|
+
}, this.config.discovery.intervalMs);
|
|
156
|
+
logger_1.logger.info('Discovery loop started', { intervalMs: this.config.discovery.intervalMs });
|
|
157
|
+
}
|
|
158
|
+
startHealthServer() {
|
|
159
|
+
this.healthServer = http_1.default.createServer((_req, res) => {
|
|
160
|
+
const status = this.apiServer?.getStatus() ?? { version: 'starting' };
|
|
161
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
162
|
+
res.end(JSON.stringify({ status: 'ok', ...status }));
|
|
163
|
+
});
|
|
164
|
+
this.healthServer.listen(this.config.sentry.healthPort, '0.0.0.0', () => {
|
|
165
|
+
logger_1.logger.info('Health server listening', { port: this.config.sentry.healthPort });
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
async stopHealthServer() {
|
|
169
|
+
if (!this.healthServer)
|
|
170
|
+
return;
|
|
171
|
+
await new Promise((resolve, reject) => {
|
|
172
|
+
this.healthServer?.close(err => (err ? reject(err) : resolve()));
|
|
173
|
+
});
|
|
174
|
+
this.healthServer = null;
|
|
175
|
+
}
|
|
176
|
+
async ensureDirectories() {
|
|
177
|
+
const dirs = [
|
|
178
|
+
this.config.sentry.stateDir,
|
|
179
|
+
path_1.default.dirname(this.config.audit.logPath),
|
|
180
|
+
path_1.default.dirname(this.config.sentry.pidFilePath),
|
|
181
|
+
path_1.default.dirname(this.config.neurosec.tokenPath),
|
|
182
|
+
];
|
|
183
|
+
for (const dir of dirs) {
|
|
184
|
+
if (dir) {
|
|
185
|
+
await promises_1.default.mkdir(dir, { recursive: true }).catch(() => { });
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
async writePidFile() {
|
|
190
|
+
try {
|
|
191
|
+
await promises_1.default.writeFile(this.config.sentry.pidFilePath, String(process.pid), 'utf8');
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
// non-fatal
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async removePidFile() {
|
|
198
|
+
try {
|
|
199
|
+
await promises_1.default.unlink(this.config.sentry.pidFilePath);
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// non-fatal
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
resolveConfigPath(cliPath) {
|
|
206
|
+
if (cliPath)
|
|
207
|
+
return cliPath;
|
|
208
|
+
for (const p of DEFAULT_CONFIG_PATHS) {
|
|
209
|
+
try {
|
|
210
|
+
require('fs').accessSync(p);
|
|
211
|
+
return p;
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return undefined;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
async function main() {
|
|
221
|
+
const configPath = process.argv[2]; // optional config path
|
|
222
|
+
const daemon = new SentryDaemon();
|
|
223
|
+
process.on('SIGTERM', async () => {
|
|
224
|
+
logger_1.logger.info('SIGTERM received');
|
|
225
|
+
await daemon.stop();
|
|
226
|
+
process.exit(0);
|
|
227
|
+
});
|
|
228
|
+
process.on('SIGINT', async () => {
|
|
229
|
+
logger_1.logger.info('SIGINT received');
|
|
230
|
+
await daemon.stop();
|
|
231
|
+
process.exit(0);
|
|
232
|
+
});
|
|
233
|
+
process.on('uncaughtException', err => {
|
|
234
|
+
logger_1.logger.error('Uncaught exception', { err: err.message, stack: err.stack });
|
|
235
|
+
});
|
|
236
|
+
process.on('unhandledRejection', reason => {
|
|
237
|
+
logger_1.logger.warn('Unhandled rejection', { reason });
|
|
238
|
+
});
|
|
239
|
+
try {
|
|
240
|
+
await daemon.start(configPath);
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
logger_1.logger.error('Failed to start sentry daemon', { err: err.message });
|
|
244
|
+
process.exit(1);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
main();
|
|
248
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,0BAejB,CAAC"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logger = void 0;
|
|
4
|
+
const winston_1 = require("winston");
|
|
5
|
+
exports.logger = (0, winston_1.createLogger)({
|
|
6
|
+
level: process.env.LOG_LEVEL ?? 'info',
|
|
7
|
+
format: winston_1.format.combine(winston_1.format.timestamp(), winston_1.format.errors({ stack: true }), winston_1.format.json()),
|
|
8
|
+
defaultMeta: { service: 'neuroshield-sentry' },
|
|
9
|
+
transports: [
|
|
10
|
+
new winston_1.transports.Console({
|
|
11
|
+
format: process.env.NODE_ENV === 'development'
|
|
12
|
+
? winston_1.format.combine(winston_1.format.colorize(), winston_1.format.simple())
|
|
13
|
+
: winston_1.format.json(),
|
|
14
|
+
}),
|
|
15
|
+
],
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AAAA,qCAA2D;AAE9C,QAAA,MAAM,GAAG,IAAA,sBAAY,EAAC;IACjC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;IACtC,MAAM,EAAE,gBAAM,CAAC,OAAO,CACpB,gBAAM,CAAC,SAAS,EAAE,EAClB,gBAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAC9B,gBAAM,CAAC,IAAI,EAAE,CACd;IACD,WAAW,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;IAC9C,UAAU,EAAE;QACV,IAAI,oBAAU,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;gBAC5C,CAAC,CAAC,gBAAM,CAAC,OAAO,CAAC,gBAAM,CAAC,QAAQ,EAAE,EAAE,gBAAM,CAAC,MAAM,EAAE,CAAC;gBACpD,CAAC,CAAC,gBAAM,CAAC,IAAI,EAAE;SAClB,CAAC;KACH;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TaggedProcess, SandboxProfile } from '../types';
|
|
2
|
+
import { SentryConfig } from '../config';
|
|
3
|
+
export interface SandboxBackend {
|
|
4
|
+
applySandbox(pid: number, profile: SandboxProfile, defaults: SentryConfig['sandboxDefaults']): Promise<boolean>;
|
|
5
|
+
removeSandbox(pid: number): Promise<boolean>;
|
|
6
|
+
isSandboxed(pid: number): Promise<boolean>;
|
|
7
|
+
getSandboxStats(pid: number): Promise<Record<string, string | number> | null>;
|
|
8
|
+
}
|
|
9
|
+
export declare function getProfileForFramework(frameworkId: string): SandboxProfile | null;
|
|
10
|
+
export declare function applySandbox(process: TaggedProcess, config: SentryConfig): Promise<boolean>;
|
|
11
|
+
export declare function removeSandbox(pid: number): Promise<boolean>;
|
|
12
|
+
export declare function isSandboxed(pid: number): Promise<boolean>;
|
|
13
|
+
export declare function getSandboxStats(pid: number): Promise<Record<string, string | number> | null>;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sandbox/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,cAAc,EAA0B,MAAM,UAAU,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAKzC,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;CAC/E;AAyBD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAYjF;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBjG;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQjE;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAElG"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getProfileForFramework = getProfileForFramework;
|
|
7
|
+
exports.applySandbox = applySandbox;
|
|
8
|
+
exports.removeSandbox = removeSandbox;
|
|
9
|
+
exports.isSandboxed = isSandboxed;
|
|
10
|
+
exports.getSandboxStats = getSandboxStats;
|
|
11
|
+
const os_1 = __importDefault(require("os"));
|
|
12
|
+
const types_1 = require("../types");
|
|
13
|
+
const logger_1 = require("../logger");
|
|
14
|
+
const linux_sandbox_1 = require("./linux-sandbox");
|
|
15
|
+
const macos_sandbox_1 = require("./macos-sandbox");
|
|
16
|
+
let backend = null;
|
|
17
|
+
function getBackend() {
|
|
18
|
+
if (backend)
|
|
19
|
+
return backend;
|
|
20
|
+
const platform = os_1.default.platform();
|
|
21
|
+
if (platform === 'linux') {
|
|
22
|
+
backend = new linux_sandbox_1.LinuxSandbox();
|
|
23
|
+
}
|
|
24
|
+
else if (platform === 'darwin') {
|
|
25
|
+
backend = new macos_sandbox_1.MacOSSandbox();
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
logger_1.logger.warn('No sandbox backend for platform, using no-op', { platform });
|
|
29
|
+
backend = {
|
|
30
|
+
applySandbox: async () => false,
|
|
31
|
+
removeSandbox: async () => false,
|
|
32
|
+
isSandboxed: async () => false,
|
|
33
|
+
getSandboxStats: async () => null,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return backend;
|
|
37
|
+
}
|
|
38
|
+
function getProfileForFramework(frameworkId) {
|
|
39
|
+
for (const profile of types_1.AGENT_SANDBOX_PROFILES) {
|
|
40
|
+
if (profile.frameworkIds.includes(frameworkId)) {
|
|
41
|
+
return profile;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
for (const profile of types_1.AGENT_SANDBOX_PROFILES) {
|
|
45
|
+
if (profile.name === 'default-restrictive') {
|
|
46
|
+
return profile;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
async function applySandbox(process, config) {
|
|
52
|
+
const profileName = process.sandboxProfileName ?? 'default-restrictive';
|
|
53
|
+
const profile = types_1.AGENT_SANDBOX_PROFILES.find(p => p.name === profileName)
|
|
54
|
+
?? getProfileForFramework('unknown');
|
|
55
|
+
if (!profile) {
|
|
56
|
+
logger_1.logger.warn('No sandbox profile available for process', { pid: process.pid, framework: process.frameworkId });
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
const bk = getBackend();
|
|
60
|
+
try {
|
|
61
|
+
const result = await bk.applySandbox(process.pid, profile, config.sandboxDefaults);
|
|
62
|
+
if (result) {
|
|
63
|
+
logger_1.logger.info('Sandbox applied', { pid: process.pid, framework: process.frameworkId, profile: profile.name });
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
logger_1.logger.warn('Sandbox application returned false', { pid: process.pid, framework: process.frameworkId });
|
|
67
|
+
}
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
logger_1.logger.error('Failed to apply sandbox', { pid: process.pid, framework: process.frameworkId, err: err.message });
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async function removeSandbox(pid) {
|
|
76
|
+
const bk = getBackend();
|
|
77
|
+
try {
|
|
78
|
+
return await bk.removeSandbox(pid);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
logger_1.logger.error('Failed to remove sandbox', { pid, err: err.message });
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async function isSandboxed(pid) {
|
|
86
|
+
return getBackend().isSandboxed(pid);
|
|
87
|
+
}
|
|
88
|
+
async function getSandboxStats(pid) {
|
|
89
|
+
return getBackend().getSandboxStats(pid);
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sandbox/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SandboxProfile } from '../types';
|
|
2
|
+
import { SandboxBackend } from './index';
|
|
3
|
+
export declare class LinuxSandbox implements SandboxBackend {
|
|
4
|
+
private cgroupV2;
|
|
5
|
+
constructor();
|
|
6
|
+
private detectCgroupVersion;
|
|
7
|
+
applySandbox(pid: number, profile: SandboxProfile, defaults: {
|
|
8
|
+
cpuMax: string;
|
|
9
|
+
memoryMax: string;
|
|
10
|
+
pidMax: number;
|
|
11
|
+
}): Promise<boolean>;
|
|
12
|
+
private applyCgroupV2;
|
|
13
|
+
private applyCgroupV1;
|
|
14
|
+
private addPidToCgroup;
|
|
15
|
+
removeSandbox(pid: number): Promise<boolean>;
|
|
16
|
+
isSandboxed(pid: number): Promise<boolean>;
|
|
17
|
+
getSandboxStats(pid: number): Promise<Record<string, string | number> | null>;
|
|
18
|
+
private parseMemoryBytes;
|
|
19
|
+
private parseCpuQuota;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=linux-sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linux-sandbox.d.ts","sourceRoot":"","sources":["../../src/sandbox/linux-sandbox.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAMzC,qBAAa,YAAa,YAAW,cAAc;IACjD,OAAO,CAAC,QAAQ,CAAU;;IAM1B,OAAO,CAAC,mBAAmB;IAYrB,YAAY,CAChB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAC9D,OAAO,CAAC,OAAO,CAAC;YAuBL,aAAa;YA2Bb,aAAa;YA+Bb,cAAc;IActB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB5C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1C,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;IA2BnF,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,aAAa;CAKtB"}
|