nox-openclaw-hunter 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 +140 -0
- package/bin/nox.js +2 -0
- package/dist/branding.d.ts +39 -0
- package/dist/branding.d.ts.map +1 -0
- package/dist/branding.js +66 -0
- package/dist/branding.js.map +1 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +94 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/export.d.ts +21 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +616 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/index.d.ts +8 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +8 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/isolate.d.ts +30 -0
- package/dist/commands/isolate.d.ts.map +1 -0
- package/dist/commands/isolate.js +547 -0
- package/dist/commands/isolate.js.map +1 -0
- package/dist/commands/purge.d.ts +22 -0
- package/dist/commands/purge.d.ts.map +1 -0
- package/dist/commands/purge.js +295 -0
- package/dist/commands/purge.js.map +1 -0
- package/dist/commands/scan.d.ts +23 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +155 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/detector/app-bundle.d.ts +13 -0
- package/dist/detector/app-bundle.d.ts.map +1 -0
- package/dist/detector/app-bundle.js +27 -0
- package/dist/detector/app-bundle.js.map +1 -0
- package/dist/detector/cli-binary.d.ts +12 -0
- package/dist/detector/cli-binary.d.ts.map +1 -0
- package/dist/detector/cli-binary.js +66 -0
- package/dist/detector/cli-binary.js.map +1 -0
- package/dist/detector/config.d.ts +21 -0
- package/dist/detector/config.d.ts.map +1 -0
- package/dist/detector/config.js +337 -0
- package/dist/detector/config.js.map +1 -0
- package/dist/detector/detection-config.d.ts +24 -0
- package/dist/detector/detection-config.d.ts.map +1 -0
- package/dist/detector/detection-config.js +242 -0
- package/dist/detector/detection-config.js.map +1 -0
- package/dist/detector/docker.d.ts +10 -0
- package/dist/detector/docker.d.ts.map +1 -0
- package/dist/detector/docker.js +94 -0
- package/dist/detector/docker.js.map +1 -0
- package/dist/detector/index.d.ts +50 -0
- package/dist/detector/index.d.ts.map +1 -0
- package/dist/detector/index.js +155 -0
- package/dist/detector/index.js.map +1 -0
- package/dist/detector/network.d.ts +34 -0
- package/dist/detector/network.d.ts.map +1 -0
- package/dist/detector/network.js +205 -0
- package/dist/detector/network.js.map +1 -0
- package/dist/detector/process.d.ts +16 -0
- package/dist/detector/process.d.ts.map +1 -0
- package/dist/detector/process.js +47 -0
- package/dist/detector/process.js.map +1 -0
- package/dist/detector/service.d.ts +17 -0
- package/dist/detector/service.d.ts.map +1 -0
- package/dist/detector/service.js +51 -0
- package/dist/detector/service.js.map +1 -0
- package/dist/enforcer/docker-cleaner.d.ts +30 -0
- package/dist/enforcer/docker-cleaner.d.ts.map +1 -0
- package/dist/enforcer/docker-cleaner.js +163 -0
- package/dist/enforcer/docker-cleaner.js.map +1 -0
- package/dist/enforcer/file-remover.d.ts +34 -0
- package/dist/enforcer/file-remover.d.ts.map +1 -0
- package/dist/enforcer/file-remover.js +137 -0
- package/dist/enforcer/file-remover.js.map +1 -0
- package/dist/enforcer/index.d.ts +33 -0
- package/dist/enforcer/index.d.ts.map +1 -0
- package/dist/enforcer/index.js +142 -0
- package/dist/enforcer/index.js.map +1 -0
- package/dist/enforcer/process-killer.d.ts +18 -0
- package/dist/enforcer/process-killer.d.ts.map +1 -0
- package/dist/enforcer/process-killer.js +80 -0
- package/dist/enforcer/process-killer.js.map +1 -0
- package/dist/enforcer/service-stopper.d.ts +23 -0
- package/dist/enforcer/service-stopper.d.ts.map +1 -0
- package/dist/enforcer/service-stopper.js +95 -0
- package/dist/enforcer/service-stopper.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/isolator/firewall.d.ts +25 -0
- package/dist/isolator/firewall.d.ts.map +1 -0
- package/dist/isolator/firewall.js +114 -0
- package/dist/isolator/firewall.js.map +1 -0
- package/dist/isolator/index.d.ts +63 -0
- package/dist/isolator/index.d.ts.map +1 -0
- package/dist/isolator/index.js +201 -0
- package/dist/isolator/index.js.map +1 -0
- package/dist/isolator/lockdown.d.ts +22 -0
- package/dist/isolator/lockdown.d.ts.map +1 -0
- package/dist/isolator/lockdown.js +401 -0
- package/dist/isolator/lockdown.js.map +1 -0
- package/dist/isolator/quarantine.d.ts +39 -0
- package/dist/isolator/quarantine.d.ts.map +1 -0
- package/dist/isolator/quarantine.js +364 -0
- package/dist/isolator/quarantine.js.map +1 -0
- package/dist/mdm/index.d.ts +93 -0
- package/dist/mdm/index.d.ts.map +1 -0
- package/dist/mdm/index.js +414 -0
- package/dist/mdm/index.js.map +1 -0
- package/dist/mdm/intune.d.ts +69 -0
- package/dist/mdm/intune.d.ts.map +1 -0
- package/dist/mdm/intune.js +409 -0
- package/dist/mdm/intune.js.map +1 -0
- package/dist/mdm/jamf.d.ts +58 -0
- package/dist/mdm/jamf.d.ts.map +1 -0
- package/dist/mdm/jamf.js +441 -0
- package/dist/mdm/jamf.js.map +1 -0
- package/dist/mdm/jumpcloud.d.ts +73 -0
- package/dist/mdm/jumpcloud.d.ts.map +1 -0
- package/dist/mdm/jumpcloud.js +470 -0
- package/dist/mdm/jumpcloud.js.map +1 -0
- package/dist/mdm/templates/detect.ps1.d.ts +30 -0
- package/dist/mdm/templates/detect.ps1.d.ts.map +1 -0
- package/dist/mdm/templates/detect.ps1.js +463 -0
- package/dist/mdm/templates/detect.ps1.js.map +1 -0
- package/dist/mdm/templates/detect.sh.d.ts +30 -0
- package/dist/mdm/templates/detect.sh.d.ts.map +1 -0
- package/dist/mdm/templates/detect.sh.js +474 -0
- package/dist/mdm/templates/detect.sh.js.map +1 -0
- package/dist/mdm/templates/enforce.ps1.d.ts +33 -0
- package/dist/mdm/templates/enforce.ps1.d.ts.map +1 -0
- package/dist/mdm/templates/enforce.ps1.js +681 -0
- package/dist/mdm/templates/enforce.ps1.js.map +1 -0
- package/dist/mdm/templates/enforce.sh.d.ts +33 -0
- package/dist/mdm/templates/enforce.sh.d.ts.map +1 -0
- package/dist/mdm/templates/enforce.sh.js +591 -0
- package/dist/mdm/templates/enforce.sh.js.map +1 -0
- package/dist/platform/darwin.d.ts +6 -0
- package/dist/platform/darwin.d.ts.map +1 -0
- package/dist/platform/darwin.js +192 -0
- package/dist/platform/darwin.js.map +1 -0
- package/dist/platform/index.d.ts +43 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +27 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/linux.d.ts +6 -0
- package/dist/platform/linux.d.ts.map +1 -0
- package/dist/platform/linux.js +134 -0
- package/dist/platform/linux.js.map +1 -0
- package/dist/platform/windows.d.ts +6 -0
- package/dist/platform/windows.d.ts.map +1 -0
- package/dist/platform/windows.js +134 -0
- package/dist/platform/windows.js.map +1 -0
- package/dist/reporter/console.d.ts +27 -0
- package/dist/reporter/console.d.ts.map +1 -0
- package/dist/reporter/console.js +431 -0
- package/dist/reporter/console.js.map +1 -0
- package/dist/reporter/index.d.ts +11 -0
- package/dist/reporter/index.d.ts.map +1 -0
- package/dist/reporter/index.js +13 -0
- package/dist/reporter/index.js.map +1 -0
- package/dist/reporter/json.d.ts +61 -0
- package/dist/reporter/json.d.ts.map +1 -0
- package/dist/reporter/json.js +75 -0
- package/dist/reporter/json.js.map +1 -0
- package/dist/reporter/webhook.d.ts +57 -0
- package/dist/reporter/webhook.d.ts.map +1 -0
- package/dist/reporter/webhook.js +230 -0
- package/dist/reporter/webhook.js.map +1 -0
- package/dist/types/config.d.ts +116 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/detection.d.ts +85 -0
- package/dist/types/detection.d.ts.map +1 -0
- package/dist/types/detection.js +5 -0
- package/dist/types/detection.js.map +1 -0
- package/dist/types/enforcement.d.ts +33 -0
- package/dist/types/enforcement.d.ts.map +1 -0
- package/dist/types/enforcement.js +5 -0
- package/dist/types/enforcement.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/isolation.d.ts +55 -0
- package/dist/types/isolation.d.ts.map +1 -0
- package/dist/types/isolation.js +5 -0
- package/dist/types/isolation.js.map +1 -0
- package/dist/utils/exec.d.ts +48 -0
- package/dist/utils/exec.d.ts.map +1 -0
- package/dist/utils/exec.js +103 -0
- package/dist/utils/exec.js.map +1 -0
- package/dist/utils/fs.d.ts +34 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +111 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +48 -0
- package/dist/utils/logger.js.map +1 -0
- package/docs/intune.md +390 -0
- package/docs/jamf.md +400 -0
- package/docs/jumpcloud.md +510 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/isolator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lockdown functionality to prevent OpenClaw reinstallation.
|
|
3
|
+
*/
|
|
4
|
+
import type { IsolationAction } from '../types/isolation.js';
|
|
5
|
+
import type { Platform } from '../platform/index.js';
|
|
6
|
+
export interface LockdownOptions {
|
|
7
|
+
dryRun?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Apply lockdown to prevent OpenClaw reinstallation.
|
|
11
|
+
* Creates blocking files/directories in known installation paths.
|
|
12
|
+
*/
|
|
13
|
+
export declare function applyLockdown(platform: Platform, options?: LockdownOptions): Promise<IsolationAction[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Remove lockdown protections.
|
|
16
|
+
*/
|
|
17
|
+
export declare function removeLockdown(platform: Platform, options?: LockdownOptions): Promise<IsolationAction[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Check if lockdown is currently active.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isLockdownActive(platform: Platform): Promise<boolean>;
|
|
22
|
+
//# sourceMappingURL=lockdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockdown.d.ts","sourceRoot":"","sources":["../../src/isolator/lockdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKrD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAYD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,eAAe,EAAE,CAAC,CAiC5B;AAgQD;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,eAAe,EAAE,CAAC,CA6D5B;AAgED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAU3E"}
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lockdown functionality to prevent OpenClaw reinstallation.
|
|
3
|
+
*/
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import { writeFile } from 'node:fs/promises';
|
|
6
|
+
import { exec } from '../utils/exec.js';
|
|
7
|
+
import { pathExists, ensureDir, safeRemove } from '../utils/fs.js';
|
|
8
|
+
import { logger } from '../utils/logger.js';
|
|
9
|
+
/**
|
|
10
|
+
* Marker file content indicating a lockdown is in place.
|
|
11
|
+
*/
|
|
12
|
+
const LOCKDOWN_MARKER_CONTENT = `# Nox OpenClaw Lockdown
|
|
13
|
+
# This directory is protected by Nox Security
|
|
14
|
+
# OpenClaw installation has been blocked on this device
|
|
15
|
+
# Contact your IT administrator for more information
|
|
16
|
+
# Generated: ${new Date().toISOString()}
|
|
17
|
+
`;
|
|
18
|
+
/**
|
|
19
|
+
* Apply lockdown to prevent OpenClaw reinstallation.
|
|
20
|
+
* Creates blocking files/directories in known installation paths.
|
|
21
|
+
*/
|
|
22
|
+
export async function applyLockdown(platform, options = {}) {
|
|
23
|
+
const actions = [];
|
|
24
|
+
if (options.dryRun) {
|
|
25
|
+
logger.info('[dry-run] Would apply lockdown to prevent reinstallation');
|
|
26
|
+
actions.push({
|
|
27
|
+
type: 'lockdown',
|
|
28
|
+
target: 'cli-paths',
|
|
29
|
+
status: 'success',
|
|
30
|
+
});
|
|
31
|
+
actions.push({
|
|
32
|
+
type: 'lockdown',
|
|
33
|
+
target: 'config-paths',
|
|
34
|
+
status: 'success',
|
|
35
|
+
});
|
|
36
|
+
return actions;
|
|
37
|
+
}
|
|
38
|
+
// Lock CLI paths
|
|
39
|
+
actions.push(await lockCliPaths(platform));
|
|
40
|
+
// Lock config/state directory paths
|
|
41
|
+
actions.push(await lockConfigPaths(platform));
|
|
42
|
+
// Lock app bundle path (macOS)
|
|
43
|
+
if (platform.name === 'darwin') {
|
|
44
|
+
actions.push(await lockAppPath(platform));
|
|
45
|
+
}
|
|
46
|
+
// Add system-level protections
|
|
47
|
+
actions.push(await addSystemProtections(platform));
|
|
48
|
+
return actions;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create blocking entries at CLI binary locations.
|
|
52
|
+
* Creates immutable files that prevent installation.
|
|
53
|
+
*/
|
|
54
|
+
async function lockCliPaths(platform) {
|
|
55
|
+
const action = {
|
|
56
|
+
type: 'lockdown',
|
|
57
|
+
target: 'cli-paths',
|
|
58
|
+
status: 'pending',
|
|
59
|
+
};
|
|
60
|
+
const locations = platform.getCliLocations();
|
|
61
|
+
const errors = [];
|
|
62
|
+
for (const location of locations) {
|
|
63
|
+
try {
|
|
64
|
+
// Create parent directory if needed
|
|
65
|
+
const dir = path.dirname(location);
|
|
66
|
+
if (!(await pathExists(dir))) {
|
|
67
|
+
continue; // Skip if parent doesn't exist (e.g., homebrew not installed)
|
|
68
|
+
}
|
|
69
|
+
// Remove existing file if present
|
|
70
|
+
if (await pathExists(location)) {
|
|
71
|
+
await safeRemove(location);
|
|
72
|
+
}
|
|
73
|
+
// Create a blocking directory (harder to overwrite than a file)
|
|
74
|
+
await ensureDir(location);
|
|
75
|
+
await writeFile(path.join(location, '.nox-lockdown'), LOCKDOWN_MARKER_CONTENT, 'utf8');
|
|
76
|
+
// Make directory immutable (platform-specific)
|
|
77
|
+
await makeImmutable(platform, location);
|
|
78
|
+
logger.success(`Locked CLI path: ${location}`);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
errors.push(`${location}: ${err instanceof Error ? err.message : String(err)}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (errors.length === 0) {
|
|
85
|
+
action.status = 'success';
|
|
86
|
+
}
|
|
87
|
+
else if (errors.length < locations.length) {
|
|
88
|
+
action.status = 'success'; // Partial success
|
|
89
|
+
action.error = errors.join('; ');
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
action.status = 'failed';
|
|
93
|
+
action.error = errors.join('; ');
|
|
94
|
+
}
|
|
95
|
+
return action;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Create blocking entries at config directory locations.
|
|
99
|
+
*/
|
|
100
|
+
async function lockConfigPaths(platform) {
|
|
101
|
+
const action = {
|
|
102
|
+
type: 'lockdown',
|
|
103
|
+
target: 'config-paths',
|
|
104
|
+
status: 'pending',
|
|
105
|
+
};
|
|
106
|
+
try {
|
|
107
|
+
const users = await platform.getAllUsers();
|
|
108
|
+
const errors = [];
|
|
109
|
+
for (const user of users) {
|
|
110
|
+
const statePath = platform.getStateDirPath(user);
|
|
111
|
+
try {
|
|
112
|
+
// Remove existing directory if present
|
|
113
|
+
if (await pathExists(statePath)) {
|
|
114
|
+
await safeRemove(statePath);
|
|
115
|
+
}
|
|
116
|
+
// Create blocking directory
|
|
117
|
+
await ensureDir(statePath);
|
|
118
|
+
await writeFile(path.join(statePath, '.nox-lockdown'), LOCKDOWN_MARKER_CONTENT, 'utf8');
|
|
119
|
+
// Make directory immutable
|
|
120
|
+
await makeImmutable(platform, statePath);
|
|
121
|
+
logger.success(`Locked config path for user ${user}: ${statePath}`);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
errors.push(`${statePath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (errors.length === 0) {
|
|
128
|
+
action.status = 'success';
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
action.status = 'failed';
|
|
132
|
+
action.error = errors.join('; ');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
action.status = 'failed';
|
|
137
|
+
action.error = err instanceof Error ? err.message : String(err);
|
|
138
|
+
}
|
|
139
|
+
return action;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Create blocking entry at app bundle location (macOS only).
|
|
143
|
+
*/
|
|
144
|
+
async function lockAppPath(platform) {
|
|
145
|
+
const action = {
|
|
146
|
+
type: 'lockdown',
|
|
147
|
+
target: 'app-path',
|
|
148
|
+
status: 'pending',
|
|
149
|
+
};
|
|
150
|
+
const locations = platform.getAppLocations();
|
|
151
|
+
const errors = [];
|
|
152
|
+
for (const location of locations) {
|
|
153
|
+
try {
|
|
154
|
+
// Remove existing app if present
|
|
155
|
+
if (await pathExists(location)) {
|
|
156
|
+
await safeRemove(location);
|
|
157
|
+
}
|
|
158
|
+
// Create blocking directory
|
|
159
|
+
await ensureDir(location);
|
|
160
|
+
await writeFile(path.join(location, '.nox-lockdown'), LOCKDOWN_MARKER_CONTENT, 'utf8');
|
|
161
|
+
// Make directory immutable
|
|
162
|
+
await makeImmutable(platform, location);
|
|
163
|
+
logger.success(`Locked app path: ${location}`);
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
errors.push(`${location}: ${err instanceof Error ? err.message : String(err)}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (errors.length === 0) {
|
|
170
|
+
action.status = 'success';
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
action.status = 'failed';
|
|
174
|
+
action.error = errors.join('; ');
|
|
175
|
+
}
|
|
176
|
+
return action;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Add system-level protections.
|
|
180
|
+
* - Block OpenClaw domains in hosts file
|
|
181
|
+
* - Add firewall rules
|
|
182
|
+
*/
|
|
183
|
+
async function addSystemProtections(platform) {
|
|
184
|
+
const action = {
|
|
185
|
+
type: 'lockdown',
|
|
186
|
+
target: 'system-protections',
|
|
187
|
+
status: 'pending',
|
|
188
|
+
};
|
|
189
|
+
const errors = [];
|
|
190
|
+
// Block known OpenClaw domains via hosts file
|
|
191
|
+
try {
|
|
192
|
+
await blockDomainsInHosts(platform);
|
|
193
|
+
logger.success('Added domain blocks to hosts file');
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
errors.push(`hosts: ${err instanceof Error ? err.message : String(err)}`);
|
|
197
|
+
}
|
|
198
|
+
if (errors.length === 0) {
|
|
199
|
+
action.status = 'success';
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
action.status = 'failed';
|
|
203
|
+
action.error = errors.join('; ');
|
|
204
|
+
}
|
|
205
|
+
return action;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Make a file or directory immutable (platform-specific).
|
|
209
|
+
*/
|
|
210
|
+
async function makeImmutable(platform, filePath) {
|
|
211
|
+
try {
|
|
212
|
+
if (platform.name === 'darwin') {
|
|
213
|
+
// Use chflags on macOS
|
|
214
|
+
await exec(`sudo chflags schg "${filePath}" 2>/dev/null || true`);
|
|
215
|
+
await exec(`sudo chflags uchg "${filePath}" 2>/dev/null || true`);
|
|
216
|
+
}
|
|
217
|
+
else if (platform.name === 'linux') {
|
|
218
|
+
// Use chattr on Linux
|
|
219
|
+
await exec(`sudo chattr +i "${filePath}" 2>/dev/null || true`);
|
|
220
|
+
}
|
|
221
|
+
else if (platform.name === 'windows') {
|
|
222
|
+
// Use attrib on Windows
|
|
223
|
+
await exec(`attrib +R +S +H "${filePath}" 2>nul || echo.`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
// Immutability is best-effort; continue if it fails
|
|
228
|
+
logger.warn(`Could not make ${filePath} immutable (requires elevated permissions)`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Block OpenClaw-related domains in the hosts file.
|
|
233
|
+
*/
|
|
234
|
+
async function blockDomainsInHosts(platform) {
|
|
235
|
+
const domains = [
|
|
236
|
+
'api.openclaw.ai',
|
|
237
|
+
'gateway.openclaw.ai',
|
|
238
|
+
'download.openclaw.ai',
|
|
239
|
+
'update.openclaw.ai',
|
|
240
|
+
'molt.bot',
|
|
241
|
+
'api.molt.bot',
|
|
242
|
+
'gateway.molt.bot',
|
|
243
|
+
];
|
|
244
|
+
const marker = '# Nox OpenClaw Lockdown';
|
|
245
|
+
const blockEntries = domains.map((d) => `0.0.0.0 ${d}`).join('\n');
|
|
246
|
+
const content = `\n${marker} - START\n${blockEntries}\n${marker} - END\n`;
|
|
247
|
+
const hostsPath = platform.name === 'windows' ? 'C:\\Windows\\System32\\drivers\\etc\\hosts' : '/etc/hosts';
|
|
248
|
+
try {
|
|
249
|
+
const { readFile: readF, appendFile } = await import('node:fs/promises');
|
|
250
|
+
const existing = await readF(hostsPath, 'utf8');
|
|
251
|
+
// Check if already blocked
|
|
252
|
+
if (existing.includes(marker)) {
|
|
253
|
+
logger.info('Domain blocks already present in hosts file');
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
// Append blocks (requires sudo on Unix, admin on Windows)
|
|
257
|
+
if (platform.name === 'windows') {
|
|
258
|
+
await appendFile(hostsPath, content, 'utf8');
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
// Use sudo on Unix
|
|
262
|
+
await exec(`echo '${content}' | sudo tee -a "${hostsPath}" > /dev/null`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
throw new Error(`Failed to modify hosts file: ${err instanceof Error ? err.message : String(err)}`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Remove lockdown protections.
|
|
271
|
+
*/
|
|
272
|
+
export async function removeLockdown(platform, options = {}) {
|
|
273
|
+
const actions = [];
|
|
274
|
+
if (options.dryRun) {
|
|
275
|
+
logger.info('[dry-run] Would remove lockdown protections');
|
|
276
|
+
actions.push({
|
|
277
|
+
type: 'lockdown',
|
|
278
|
+
target: 'all',
|
|
279
|
+
status: 'success',
|
|
280
|
+
});
|
|
281
|
+
return actions;
|
|
282
|
+
}
|
|
283
|
+
// Remove immutability and blocking directories
|
|
284
|
+
const allPaths = [
|
|
285
|
+
...platform.getCliLocations(),
|
|
286
|
+
...platform.getAppLocations(),
|
|
287
|
+
];
|
|
288
|
+
// Add user config paths
|
|
289
|
+
try {
|
|
290
|
+
const users = await platform.getAllUsers();
|
|
291
|
+
for (const user of users) {
|
|
292
|
+
allPaths.push(platform.getStateDirPath(user));
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
// Continue with available paths
|
|
297
|
+
}
|
|
298
|
+
for (const p of allPaths) {
|
|
299
|
+
if (await pathExists(p)) {
|
|
300
|
+
try {
|
|
301
|
+
// Remove immutability first
|
|
302
|
+
await removeImmutable(platform, p);
|
|
303
|
+
// Check if it's a lockdown directory
|
|
304
|
+
const lockdownMarker = path.join(p, '.nox-lockdown');
|
|
305
|
+
if (await pathExists(lockdownMarker)) {
|
|
306
|
+
await safeRemove(p);
|
|
307
|
+
logger.success(`Removed lockdown at: ${p}`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
catch (err) {
|
|
311
|
+
logger.warn(`Could not remove lockdown at ${p}: ${err instanceof Error ? err.message : String(err)}`);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
// Remove hosts file entries
|
|
316
|
+
try {
|
|
317
|
+
await removeHostsBlocks(platform);
|
|
318
|
+
logger.success('Removed domain blocks from hosts file');
|
|
319
|
+
}
|
|
320
|
+
catch (err) {
|
|
321
|
+
logger.warn(`Could not remove hosts blocks: ${err instanceof Error ? err.message : String(err)}`);
|
|
322
|
+
}
|
|
323
|
+
actions.push({
|
|
324
|
+
type: 'lockdown',
|
|
325
|
+
target: 'all',
|
|
326
|
+
status: 'success',
|
|
327
|
+
});
|
|
328
|
+
return actions;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Remove immutability from a file or directory.
|
|
332
|
+
*/
|
|
333
|
+
async function removeImmutable(platform, filePath) {
|
|
334
|
+
try {
|
|
335
|
+
if (platform.name === 'darwin') {
|
|
336
|
+
await exec(`sudo chflags noschg "${filePath}" 2>/dev/null || true`);
|
|
337
|
+
await exec(`sudo chflags nouchg "${filePath}" 2>/dev/null || true`);
|
|
338
|
+
}
|
|
339
|
+
else if (platform.name === 'linux') {
|
|
340
|
+
await exec(`sudo chattr -i "${filePath}" 2>/dev/null || true`);
|
|
341
|
+
}
|
|
342
|
+
else if (platform.name === 'windows') {
|
|
343
|
+
await exec(`attrib -R -S -H "${filePath}" 2>nul || echo.`);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
// Continue even if removal fails
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Remove OpenClaw domain blocks from hosts file.
|
|
352
|
+
*/
|
|
353
|
+
async function removeHostsBlocks(platform) {
|
|
354
|
+
const marker = '# Nox OpenClaw Lockdown';
|
|
355
|
+
const hostsPath = platform.name === 'windows' ? 'C:\\Windows\\System32\\drivers\\etc\\hosts' : '/etc/hosts';
|
|
356
|
+
try {
|
|
357
|
+
const { readFile: readF, writeFile: writeF } = await import('node:fs/promises');
|
|
358
|
+
const content = await readF(hostsPath, 'utf8');
|
|
359
|
+
if (!content.includes(marker)) {
|
|
360
|
+
return; // Nothing to remove
|
|
361
|
+
}
|
|
362
|
+
// Remove the lockdown block
|
|
363
|
+
const startMarker = `${marker} - START`;
|
|
364
|
+
const endMarker = `${marker} - END`;
|
|
365
|
+
const startIdx = content.indexOf(startMarker);
|
|
366
|
+
const endIdx = content.indexOf(endMarker);
|
|
367
|
+
if (startIdx === -1 || endIdx === -1) {
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
const newContent = content.substring(0, startIdx) +
|
|
371
|
+
content.substring(endIdx + endMarker.length);
|
|
372
|
+
if (platform.name === 'windows') {
|
|
373
|
+
await writeF(hostsPath, newContent, 'utf8');
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
// Use temp file + sudo on Unix
|
|
377
|
+
const tempFile = '/tmp/nox-hosts-clean';
|
|
378
|
+
await writeF(tempFile, newContent, 'utf8');
|
|
379
|
+
await exec(`sudo cp "${tempFile}" "${hostsPath}"`);
|
|
380
|
+
await safeRemove(tempFile);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
catch (err) {
|
|
384
|
+
throw new Error(`Failed to modify hosts file: ${err instanceof Error ? err.message : String(err)}`);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Check if lockdown is currently active.
|
|
389
|
+
*/
|
|
390
|
+
export async function isLockdownActive(platform) {
|
|
391
|
+
// Check if any lockdown markers exist
|
|
392
|
+
const locations = platform.getCliLocations();
|
|
393
|
+
for (const location of locations) {
|
|
394
|
+
const markerPath = path.join(location, '.nox-lockdown');
|
|
395
|
+
if (await pathExists(markerPath)) {
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return false;
|
|
400
|
+
}
|
|
401
|
+
//# sourceMappingURL=lockdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockdown.js","sourceRoot":"","sources":["../../src/isolator/lockdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quarantine management for OpenClaw artifacts.
|
|
3
|
+
* Moves files to a secure quarantine directory with manifest tracking.
|
|
4
|
+
*/
|
|
5
|
+
import type { DetectionResult } from '../types/detection.js';
|
|
6
|
+
import type { IsolationAction, QuarantineManifest, QuarantineResult } from '../types/isolation.js';
|
|
7
|
+
import type { Platform } from '../platform/index.js';
|
|
8
|
+
export interface QuarantineOptions {
|
|
9
|
+
dryRun?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Quarantine all detected OpenClaw artifacts.
|
|
13
|
+
* Moves files to a secure location and creates a manifest for potential restoration.
|
|
14
|
+
*/
|
|
15
|
+
export declare function quarantineArtifacts(platform: Platform, detection: DetectionResult, options?: QuarantineOptions): Promise<{
|
|
16
|
+
action: IsolationAction;
|
|
17
|
+
result?: QuarantineResult;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* List all quarantined items.
|
|
21
|
+
*/
|
|
22
|
+
export declare function listQuarantined(platform: Platform): Promise<QuarantineManifest[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Restore quarantined artifacts to their original locations.
|
|
25
|
+
* If the destination already exists, it will be removed first.
|
|
26
|
+
*/
|
|
27
|
+
export declare function restoreQuarantined(platform: Platform, quarantineId: string): Promise<{
|
|
28
|
+
success: boolean;
|
|
29
|
+
restored: number;
|
|
30
|
+
errors: string[];
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Permanently delete quarantined artifacts.
|
|
34
|
+
*/
|
|
35
|
+
export declare function deleteQuarantined(platform: Platform, quarantineId: string): Promise<{
|
|
36
|
+
success: boolean;
|
|
37
|
+
error?: string;
|
|
38
|
+
}>;
|
|
39
|
+
//# sourceMappingURL=quarantine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quarantine.d.ts","sourceRoot":"","sources":["../../src/isolator/quarantine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EAEf,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAcD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,eAAe,EAC1B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAgJjE;AAgED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA8B/B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAyGnE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA6B/C"}
|