erosolar-cli 1.7.410 → 1.7.411
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 +6 -6
- package/dist/StringUtils.d.ts +1 -4
- package/dist/StringUtils.d.ts.map +1 -1
- package/dist/StringUtils.js +2 -8
- package/dist/StringUtils.js.map +1 -1
- package/dist/browser/BrowserSessionManager.d.ts +1 -3
- package/dist/browser/BrowserSessionManager.d.ts.map +1 -1
- package/dist/browser/BrowserSessionManager.js +4 -24
- package/dist/browser/BrowserSessionManager.js.map +1 -1
- package/dist/capabilities/askUserCapability.d.ts.map +1 -1
- package/dist/capabilities/askUserCapability.js +64 -10
- package/dist/capabilities/askUserCapability.js.map +1 -1
- package/dist/capabilities/toolRegistry.d.ts +2 -0
- package/dist/capabilities/toolRegistry.d.ts.map +1 -1
- package/dist/capabilities/toolRegistry.js +40 -5
- package/dist/capabilities/toolRegistry.js.map +1 -1
- package/dist/contracts/agent-profiles.schema.json +5 -5
- package/dist/contracts/agent-schemas.json +6 -16
- package/dist/contracts/schemas/agent.schema.json +1 -5
- package/dist/contracts/schemas/tool-selection.schema.json +1 -7
- package/dist/contracts/tools.schema.json +80 -207
- package/dist/contracts/unified-schema.json +4 -5
- package/dist/contracts/v1/agent.d.ts +0 -3
- package/dist/contracts/v1/agent.d.ts.map +1 -1
- package/dist/contracts/v1/provider.d.ts +1 -2
- package/dist/contracts/v1/provider.d.ts.map +1 -1
- package/dist/contracts/v1/toolAccess.d.ts +1 -1
- package/dist/contracts/v1/toolAccess.d.ts.map +1 -1
- package/dist/core/agent.d.ts +1 -7
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +2 -131
- package/dist/core/agent.js.map +1 -1
- package/dist/core/alphaZeroEngine.d.ts +0 -8
- package/dist/core/alphaZeroEngine.d.ts.map +1 -1
- package/dist/core/alphaZeroEngine.js +35 -149
- package/dist/core/alphaZeroEngine.js.map +1 -1
- package/dist/core/alphaZeroOrchestrator.d.ts +0 -17
- package/dist/core/alphaZeroOrchestrator.d.ts.map +1 -1
- package/dist/core/alphaZeroOrchestrator.js +8 -95
- package/dist/core/alphaZeroOrchestrator.js.map +1 -1
- package/dist/core/claudeCodeFeatures.d.ts +2 -1
- package/dist/core/claudeCodeFeatures.d.ts.map +1 -1
- package/dist/core/claudeCodeFeatures.js +2 -1
- package/dist/core/claudeCodeFeatures.js.map +1 -1
- package/dist/core/cliTestHarness.d.ts +0 -5
- package/dist/core/cliTestHarness.d.ts.map +1 -1
- package/dist/core/cliTestHarness.js +3 -14
- package/dist/core/cliTestHarness.js.map +1 -1
- package/dist/core/contextManager.d.ts +0 -30
- package/dist/core/contextManager.d.ts.map +1 -1
- package/dist/core/contextManager.js +5 -87
- package/dist/core/contextManager.js.map +1 -1
- package/dist/core/contextWindow.d.ts +4 -4
- package/dist/core/contextWindow.js +9 -9
- package/dist/core/contextWindow.js.map +1 -1
- package/dist/core/modelDiscovery.js +3 -3
- package/dist/core/modelDiscovery.js.map +1 -1
- package/dist/core/preferences.d.ts +2 -3
- package/dist/core/preferences.d.ts.map +1 -1
- package/dist/core/preferences.js +11 -18
- package/dist/core/preferences.js.map +1 -1
- package/dist/core/secretStore.d.ts.map +1 -1
- package/dist/core/secretStore.js +31 -0
- package/dist/core/secretStore.js.map +1 -1
- package/dist/core/toolPreconditions.d.ts.map +1 -1
- package/dist/core/toolPreconditions.js +0 -60
- package/dist/core/toolPreconditions.js.map +1 -1
- package/dist/core/toolRuntime.d.ts.map +1 -1
- package/dist/core/toolRuntime.js +0 -17
- package/dist/core/toolRuntime.js.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/headless/headlessApp.d.ts.map +1 -1
- package/dist/headless/headlessApp.js +6 -22
- package/dist/headless/headlessApp.js.map +1 -1
- package/dist/plugins/providers/google/index.js +3 -2
- package/dist/plugins/providers/google/index.js.map +1 -1
- package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -1
- package/dist/providers/openaiChatCompletionsProvider.js +6 -60
- package/dist/providers/openaiChatCompletionsProvider.js.map +1 -1
- package/dist/runtime/agentController.d.ts.map +1 -1
- package/dist/runtime/agentController.js +6 -27
- package/dist/runtime/agentController.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +30 -79
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +726 -1511
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/shellApp.d.ts.map +1 -1
- package/dist/shell/shellApp.js +41 -15
- package/dist/shell/shellApp.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +0 -1
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/shell/terminalInput.d.ts +21 -85
- package/dist/shell/terminalInput.d.ts.map +1 -1
- package/dist/shell/terminalInput.js +60 -517
- package/dist/shell/terminalInput.js.map +1 -1
- package/dist/shell/terminalInputAdapter.d.ts +16 -37
- package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
- package/dist/shell/terminalInputAdapter.js +22 -44
- package/dist/shell/terminalInputAdapter.js.map +1 -1
- package/dist/shell/updateManager.d.ts.map +1 -1
- package/dist/shell/updateManager.js +17 -1
- package/dist/shell/updateManager.js.map +1 -1
- package/dist/subagents/parallelAgentManager.d.ts.map +1 -1
- package/dist/subagents/parallelAgentManager.js +2 -1
- package/dist/subagents/parallelAgentManager.js.map +1 -1
- package/dist/tools/buildTools.d.ts.map +1 -1
- package/dist/tools/buildTools.js +76 -19
- package/dist/tools/buildTools.js.map +1 -1
- package/dist/tools/editTools.js +1 -1
- package/dist/tools/editTools.js.map +1 -1
- package/dist/tools/enhancedCodeIntelligenceTools.js +2 -1
- package/dist/tools/enhancedCodeIntelligenceTools.js.map +1 -1
- package/dist/tools/fileTools.js +0 -3
- package/dist/tools/fileTools.js.map +1 -1
- package/dist/tools/frontendTestingTools.js +1 -1
- package/dist/tools/frontendTestingTools.js.map +1 -1
- package/dist/tools/interactionTools.d.ts.map +1 -1
- package/dist/tools/interactionTools.js +82 -15
- package/dist/tools/interactionTools.js.map +1 -1
- package/dist/tools/learnTools.d.ts +0 -2
- package/dist/tools/learnTools.d.ts.map +1 -1
- package/dist/tools/learnTools.js +81 -29
- package/dist/tools/learnTools.js.map +1 -1
- package/dist/tools/localExplore.d.ts.map +1 -1
- package/dist/tools/localExplore.js +1 -0
- package/dist/tools/localExplore.js.map +1 -1
- package/dist/tools/notebookEditTools.js.map +1 -1
- package/dist/tools/repoChecksTools.js +3 -4
- package/dist/tools/repoChecksTools.js.map +1 -1
- package/dist/tools/searchTools.js +0 -4
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/tools/softwareEngineeringTools.d.ts.map +1 -1
- package/dist/tools/softwareEngineeringTools.js +0 -1
- package/dist/tools/softwareEngineeringTools.js.map +1 -1
- package/dist/tools/webTools.d.ts.map +1 -1
- package/dist/tools/webTools.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts +17 -54
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +90 -378
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/display.d.ts +38 -19
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +311 -96
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.js +3 -5
- package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -1
- package/dist/ui/shortcutsHelp.d.ts +11 -1
- package/dist/ui/shortcutsHelp.d.ts.map +1 -1
- package/dist/ui/shortcutsHelp.js +54 -8
- package/dist/ui/shortcutsHelp.js.map +1 -1
- package/dist/ui/streamingFormatter.d.ts +16 -0
- package/dist/ui/streamingFormatter.d.ts.map +1 -0
- package/dist/ui/streamingFormatter.js +62 -0
- package/dist/ui/streamingFormatter.js.map +1 -0
- package/dist/ui/theme.d.ts +100 -100
- package/dist/ui/theme.d.ts.map +1 -1
- package/dist/ui/theme.js.map +1 -1
- package/dist/ui/toolDisplay.d.ts +3 -3
- package/dist/ui/toolDisplay.d.ts.map +1 -1
- package/dist/ui/toolDisplay.js +8 -7
- package/dist/ui/toolDisplay.js.map +1 -1
- package/dist/ui/unified/index.d.ts +3 -2
- package/dist/ui/unified/index.d.ts.map +1 -1
- package/dist/ui/unified/index.js +1 -0
- package/dist/ui/unified/index.js.map +1 -1
- package/dist/ui/unified/layout.d.ts +23 -0
- package/dist/ui/unified/layout.d.ts.map +1 -1
- package/dist/ui/unified/layout.js +113 -11
- package/dist/ui/unified/layout.js.map +1 -1
- package/package.json +24 -37
- package/dist/core/alphaZeroConfig.d.ts +0 -11
- package/dist/core/alphaZeroConfig.d.ts.map +0 -1
- package/dist/core/alphaZeroConfig.js +0 -59
- package/dist/core/alphaZeroConfig.js.map +0 -1
- package/dist/core/alphaZeroEnhanced.d.ts +0 -125
- package/dist/core/alphaZeroEnhanced.d.ts.map +0 -1
- package/dist/core/alphaZeroEnhanced.js +0 -386
- package/dist/core/alphaZeroEnhanced.js.map +0 -1
- package/dist/core/autonomousVerification.d.ts +0 -103
- package/dist/core/autonomousVerification.d.ts.map +0 -1
- package/dist/core/autonomousVerification.js +0 -583
- package/dist/core/autonomousVerification.js.map +0 -1
- package/dist/core/offsecAlphaZeroEnhanced.d.ts +0 -98
- package/dist/core/offsecAlphaZeroEnhanced.d.ts.map +0 -1
- package/dist/core/offsecAlphaZeroEnhanced.js +0 -441
- package/dist/core/offsecAlphaZeroEnhanced.js.map +0 -1
- package/dist/core/parallelAgentOrchestrator.d.ts +0 -171
- package/dist/core/parallelAgentOrchestrator.d.ts.map +0 -1
- package/dist/core/parallelAgentOrchestrator.js +0 -459
- package/dist/core/parallelAgentOrchestrator.js.map +0 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
- package/dist/tools/detectCommands.d.ts +0 -8
- package/dist/tools/detectCommands.d.ts.map +0 -1
- package/dist/tools/detectCommands.js +0 -183
- package/dist/tools/detectCommands.js.map +0 -1
- package/dist/ui/assistantBlockRenderer.d.ts +0 -30
- package/dist/ui/assistantBlockRenderer.d.ts.map +0 -1
- package/dist/ui/assistantBlockRenderer.js +0 -121
- package/dist/ui/assistantBlockRenderer.js.map +0 -1
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Enhanced AlphaZero Offensive Security Coordinator
|
|
3
|
-
*
|
|
4
|
-
* Extends offsecAlphaZero with:
|
|
5
|
-
* - Autonomous verification for strict confirmation of success
|
|
6
|
-
* - Retry strategies with alternative approaches
|
|
7
|
-
* - Confidence-based outcome recording
|
|
8
|
-
* - Multi-method verification before confirming success
|
|
9
|
-
*/
|
|
10
|
-
import { OffsecRun, OffsecOutcome, OffsecSuggestion, OffsecActionCategory, startOffsecRun, resumeOffsecRun, getOffsecNextActions, listOffsecRuns, formatOffsecStatus } from './offsecAlphaZero.js';
|
|
11
|
-
import { VerificationOutcome, VerificationMethod } from './autonomousVerification.js';
|
|
12
|
-
export interface OffsecVerificationConfig {
|
|
13
|
-
methods: VerificationMethod[];
|
|
14
|
-
minConfidence: number;
|
|
15
|
-
maxRetries: number;
|
|
16
|
-
retryStrategies: RetryStrategy[];
|
|
17
|
-
timeout: number;
|
|
18
|
-
}
|
|
19
|
-
export interface RetryStrategy {
|
|
20
|
-
name: string;
|
|
21
|
-
description: string;
|
|
22
|
-
modifyCommand: (original: string, attemptNumber: number) => string;
|
|
23
|
-
applicableCategories: OffsecActionCategory[];
|
|
24
|
-
}
|
|
25
|
-
export interface OffsecExecutionResult {
|
|
26
|
-
actionId: string;
|
|
27
|
-
command: string;
|
|
28
|
-
output: string;
|
|
29
|
-
exitCode: number;
|
|
30
|
-
verification: VerificationOutcome;
|
|
31
|
-
retryAttempt: number;
|
|
32
|
-
finalOutcome: OffsecOutcome;
|
|
33
|
-
confidence: number;
|
|
34
|
-
executionTimeMs: number;
|
|
35
|
-
}
|
|
36
|
-
export interface OffsecActionContext {
|
|
37
|
-
target: string;
|
|
38
|
-
url: string;
|
|
39
|
-
previousOutputs: string[];
|
|
40
|
-
discoveredCredentials: string[];
|
|
41
|
-
discoveredHosts: string[];
|
|
42
|
-
currentPrivilegeLevel: 'user' | 'admin' | 'root' | 'unknown';
|
|
43
|
-
detectionRisk: 'low' | 'medium' | 'high';
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Enhanced offensive security coordinator with autonomous verification
|
|
47
|
-
*/
|
|
48
|
-
export declare class OffsecAlphaZeroEnhanced {
|
|
49
|
-
private context;
|
|
50
|
-
private verificationConfig;
|
|
51
|
-
constructor(initialContext?: Partial<OffsecActionContext>, verificationConfig?: Partial<OffsecVerificationConfig>);
|
|
52
|
-
/**
|
|
53
|
-
* Execute an offensive security action with autonomous verification
|
|
54
|
-
*/
|
|
55
|
-
executeWithVerification(run: OffsecRun, action: OffsecSuggestion): Promise<OffsecExecutionResult>;
|
|
56
|
-
/**
|
|
57
|
-
* Get command for a specific retry attempt
|
|
58
|
-
*/
|
|
59
|
-
private getCommandForAttempt;
|
|
60
|
-
/**
|
|
61
|
-
* Execute a shell command with timeout
|
|
62
|
-
*/
|
|
63
|
-
private executeCommand;
|
|
64
|
-
/**
|
|
65
|
-
* Extract context information from command output
|
|
66
|
-
*/
|
|
67
|
-
private extractContextFromOutput;
|
|
68
|
-
/**
|
|
69
|
-
* Determine outcome from verification result
|
|
70
|
-
*/
|
|
71
|
-
private determineOutcome;
|
|
72
|
-
/**
|
|
73
|
-
* Update internal context based on execution result
|
|
74
|
-
*/
|
|
75
|
-
private updateContextFromResult;
|
|
76
|
-
/**
|
|
77
|
-
* Format result as a note for storage
|
|
78
|
-
*/
|
|
79
|
-
private formatResultNote;
|
|
80
|
-
/**
|
|
81
|
-
* Execute a full offensive security run with autonomous verification
|
|
82
|
-
*/
|
|
83
|
-
executeAutonomousRun(objective: string, scope: string[], maxActions?: number): Promise<OffsecRun>;
|
|
84
|
-
/**
|
|
85
|
-
* Get current context
|
|
86
|
-
*/
|
|
87
|
-
getContext(): OffsecActionContext;
|
|
88
|
-
/**
|
|
89
|
-
* Update context
|
|
90
|
-
*/
|
|
91
|
-
updateContext(updates: Partial<OffsecActionContext>): void;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Convenience function to execute an action with verification
|
|
95
|
-
*/
|
|
96
|
-
export declare function executeOffsecActionWithVerification(run: OffsecRun, actionId: string, context?: Partial<OffsecActionContext>): Promise<OffsecExecutionResult>;
|
|
97
|
-
export { startOffsecRun, resumeOffsecRun, listOffsecRuns, getOffsecNextActions, formatOffsecStatus, };
|
|
98
|
-
//# sourceMappingURL=offsecAlphaZeroEnhanced.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"offsecAlphaZeroEnhanced.d.ts","sourceRoot":"","sources":["../../src/core/offsecAlphaZeroEnhanced.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,441 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Enhanced AlphaZero Offensive Security Coordinator
|
|
3
|
-
*
|
|
4
|
-
* Extends offsecAlphaZero with:
|
|
5
|
-
* - Autonomous verification for strict confirmation of success
|
|
6
|
-
* - Retry strategies with alternative approaches
|
|
7
|
-
* - Confidence-based outcome recording
|
|
8
|
-
* - Multi-method verification before confirming success
|
|
9
|
-
*/
|
|
10
|
-
import { startOffsecRun, resumeOffsecRun, recordOffsecOutcome, getOffsecNextActions, listOffsecRuns, formatOffsecStatus, } from './offsecAlphaZero.js';
|
|
11
|
-
import { autonomousVerification, } from './autonomousVerification.js';
|
|
12
|
-
import { spawn } from 'child_process';
|
|
13
|
-
/**
|
|
14
|
-
* Default retry strategies for offensive security actions
|
|
15
|
-
*/
|
|
16
|
-
const DEFAULT_RETRY_STRATEGIES = [
|
|
17
|
-
{
|
|
18
|
-
name: 'stealth-mode',
|
|
19
|
-
description: 'Reduce scan speed and use evasion techniques',
|
|
20
|
-
modifyCommand: (cmd, attempt) => {
|
|
21
|
-
// Add stealth flags for nmap
|
|
22
|
-
if (cmd.includes('nmap')) {
|
|
23
|
-
return cmd.replace(/-T[0-5]/, `-T${Math.max(0, 4 - attempt)}`);
|
|
24
|
-
}
|
|
25
|
-
// Add delays for other tools
|
|
26
|
-
if (cmd.includes('dirsearch')) {
|
|
27
|
-
return cmd + ` --delay=${attempt * 500}`;
|
|
28
|
-
}
|
|
29
|
-
return cmd;
|
|
30
|
-
},
|
|
31
|
-
applicableCategories: ['recon', 'web'],
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: 'alt-user-agent',
|
|
35
|
-
description: 'Try different user agents to bypass WAF',
|
|
36
|
-
modifyCommand: (cmd, attempt) => {
|
|
37
|
-
const userAgents = [
|
|
38
|
-
'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
|
|
39
|
-
'Googlebot/2.1 (+http://www.google.com/bot.html)',
|
|
40
|
-
'curl/7.68.0',
|
|
41
|
-
];
|
|
42
|
-
const ua = userAgents[attempt % userAgents.length];
|
|
43
|
-
if (cmd.includes('curl')) {
|
|
44
|
-
return cmd.replace(/curl/, `curl -A "${ua}"`);
|
|
45
|
-
}
|
|
46
|
-
return cmd;
|
|
47
|
-
},
|
|
48
|
-
applicableCategories: ['web', 'payload'],
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
name: 'encoding-bypass',
|
|
52
|
-
description: 'Apply encoding to bypass filters',
|
|
53
|
-
modifyCommand: (cmd, attempt) => {
|
|
54
|
-
// URL encode parameters
|
|
55
|
-
if (cmd.includes('sqlmap')) {
|
|
56
|
-
const encodings = ['', '--tamper=base64encode', '--tamper=charencode'];
|
|
57
|
-
const tamper = encodings[attempt % encodings.length];
|
|
58
|
-
return cmd + ` ${tamper}`;
|
|
59
|
-
}
|
|
60
|
-
return cmd;
|
|
61
|
-
},
|
|
62
|
-
applicableCategories: ['payload', 'web'],
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
name: 'alt-port',
|
|
66
|
-
description: 'Try alternative ports for the same service',
|
|
67
|
-
modifyCommand: (cmd, attempt) => {
|
|
68
|
-
// Common alternative ports
|
|
69
|
-
const altPorts = {
|
|
70
|
-
80: [8080, 8000, 8888],
|
|
71
|
-
443: [8443, 4443],
|
|
72
|
-
22: [2222, 2200],
|
|
73
|
-
3306: [3307, 13306],
|
|
74
|
-
};
|
|
75
|
-
// Modify port in command if possible
|
|
76
|
-
for (const [standard, alts] of Object.entries(altPorts)) {
|
|
77
|
-
if (cmd.includes(`:${standard}`)) {
|
|
78
|
-
const alt = alts[(attempt - 1) % alts.length];
|
|
79
|
-
return cmd.replace(`:${standard}`, `:${alt}`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return cmd;
|
|
83
|
-
},
|
|
84
|
-
applicableCategories: ['recon', 'lateral'],
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
name: 'credential-variation',
|
|
88
|
-
description: 'Try credential variations (case changes, common mutations)',
|
|
89
|
-
modifyCommand: (cmd, attempt) => {
|
|
90
|
-
// Apply common password variations
|
|
91
|
-
// This is a simplified example
|
|
92
|
-
return cmd;
|
|
93
|
-
},
|
|
94
|
-
applicableCategories: ['creds', 'lateral'],
|
|
95
|
-
},
|
|
96
|
-
];
|
|
97
|
-
/**
|
|
98
|
-
* Enhanced offensive security coordinator with autonomous verification
|
|
99
|
-
*/
|
|
100
|
-
export class OffsecAlphaZeroEnhanced {
|
|
101
|
-
context;
|
|
102
|
-
verificationConfig;
|
|
103
|
-
constructor(initialContext = {}, verificationConfig) {
|
|
104
|
-
this.context = {
|
|
105
|
-
target: initialContext.target || '<target>',
|
|
106
|
-
url: initialContext.url || 'http://<target>',
|
|
107
|
-
previousOutputs: initialContext.previousOutputs || [],
|
|
108
|
-
discoveredCredentials: initialContext.discoveredCredentials || [],
|
|
109
|
-
discoveredHosts: initialContext.discoveredHosts || [],
|
|
110
|
-
currentPrivilegeLevel: initialContext.currentPrivilegeLevel || 'unknown',
|
|
111
|
-
detectionRisk: initialContext.detectionRisk || 'low',
|
|
112
|
-
};
|
|
113
|
-
this.verificationConfig = {
|
|
114
|
-
methods: verificationConfig?.methods || [
|
|
115
|
-
'output_parsing',
|
|
116
|
-
'state_validation',
|
|
117
|
-
'behavioral_check',
|
|
118
|
-
'response_validation',
|
|
119
|
-
],
|
|
120
|
-
minConfidence: verificationConfig?.minConfidence || 0.75,
|
|
121
|
-
maxRetries: verificationConfig?.maxRetries || 3,
|
|
122
|
-
retryStrategies: verificationConfig?.retryStrategies || DEFAULT_RETRY_STRATEGIES,
|
|
123
|
-
timeout: verificationConfig?.timeout || 60000,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Execute an offensive security action with autonomous verification
|
|
128
|
-
*/
|
|
129
|
-
async executeWithVerification(run, action) {
|
|
130
|
-
let retryAttempt = 0;
|
|
131
|
-
let bestResult = null;
|
|
132
|
-
let bestConfidence = 0;
|
|
133
|
-
while (retryAttempt < this.verificationConfig.maxRetries) {
|
|
134
|
-
const startTime = Date.now();
|
|
135
|
-
// Get command (possibly modified by retry strategy)
|
|
136
|
-
const command = this.getCommandForAttempt(action, retryAttempt);
|
|
137
|
-
// Execute command
|
|
138
|
-
const { output, exitCode } = await this.executeCommand(command, this.verificationConfig.timeout);
|
|
139
|
-
// Extract context from output
|
|
140
|
-
const executionContext = this.extractContextFromOutput(output, action.category);
|
|
141
|
-
// Run autonomous verification
|
|
142
|
-
const verification = await autonomousVerification.verify('offensive-security', action.command, output, {
|
|
143
|
-
...this.context,
|
|
144
|
-
...executionContext,
|
|
145
|
-
exitCode,
|
|
146
|
-
category: action.category,
|
|
147
|
-
});
|
|
148
|
-
const executionTimeMs = Date.now() - startTime;
|
|
149
|
-
// Determine outcome based on verification
|
|
150
|
-
const finalOutcome = this.determineOutcome(verification, exitCode, output);
|
|
151
|
-
const result = {
|
|
152
|
-
actionId: action.id,
|
|
153
|
-
command,
|
|
154
|
-
output,
|
|
155
|
-
exitCode,
|
|
156
|
-
verification,
|
|
157
|
-
retryAttempt,
|
|
158
|
-
finalOutcome,
|
|
159
|
-
confidence: verification.confidence,
|
|
160
|
-
executionTimeMs,
|
|
161
|
-
};
|
|
162
|
-
// Track best result
|
|
163
|
-
if (verification.confidence > bestConfidence) {
|
|
164
|
-
bestConfidence = verification.confidence;
|
|
165
|
-
bestResult = result;
|
|
166
|
-
}
|
|
167
|
-
// If we have strong confirmation of success, stop retrying
|
|
168
|
-
if (verification.approved && verification.confidence >= this.verificationConfig.minConfidence) {
|
|
169
|
-
// Update context with discoveries
|
|
170
|
-
this.updateContextFromResult(result);
|
|
171
|
-
// Record outcome in the run
|
|
172
|
-
recordOffsecOutcome(run.id, action.id, finalOutcome, this.formatResultNote(result));
|
|
173
|
-
return result;
|
|
174
|
-
}
|
|
175
|
-
// If detected, stop immediately
|
|
176
|
-
if (finalOutcome === 'detected') {
|
|
177
|
-
recordOffsecOutcome(run.id, action.id, finalOutcome, this.formatResultNote(result));
|
|
178
|
-
return result;
|
|
179
|
-
}
|
|
180
|
-
retryAttempt++;
|
|
181
|
-
}
|
|
182
|
-
// All retries exhausted, use best result
|
|
183
|
-
if (!bestResult) {
|
|
184
|
-
throw new Error('No execution results available');
|
|
185
|
-
}
|
|
186
|
-
// Record the best outcome
|
|
187
|
-
recordOffsecOutcome(run.id, action.id, bestResult.finalOutcome, this.formatResultNote(bestResult));
|
|
188
|
-
return bestResult;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Get command for a specific retry attempt
|
|
192
|
-
*/
|
|
193
|
-
getCommandForAttempt(action, attempt) {
|
|
194
|
-
if (attempt === 0) {
|
|
195
|
-
return action.command;
|
|
196
|
-
}
|
|
197
|
-
// Apply retry strategies
|
|
198
|
-
const applicableStrategies = this.verificationConfig.retryStrategies.filter((s) => s.applicableCategories.includes(action.category));
|
|
199
|
-
if (applicableStrategies.length === 0) {
|
|
200
|
-
return action.command;
|
|
201
|
-
}
|
|
202
|
-
// Use a different strategy for each attempt
|
|
203
|
-
const strategy = applicableStrategies[(attempt - 1) % applicableStrategies.length];
|
|
204
|
-
if (!strategy) {
|
|
205
|
-
return action.command;
|
|
206
|
-
}
|
|
207
|
-
return strategy.modifyCommand(action.command, attempt);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Execute a shell command with timeout
|
|
211
|
-
*/
|
|
212
|
-
async executeCommand(command, timeout) {
|
|
213
|
-
return new Promise((resolve, reject) => {
|
|
214
|
-
const child = spawn(command, { shell: true });
|
|
215
|
-
let output = '';
|
|
216
|
-
let timedOut = false;
|
|
217
|
-
const timer = setTimeout(() => {
|
|
218
|
-
timedOut = true;
|
|
219
|
-
child.kill('SIGTERM');
|
|
220
|
-
resolve({ output: output + '\n[TIMEOUT]', exitCode: 124 });
|
|
221
|
-
}, timeout);
|
|
222
|
-
child.stdout?.on('data', (data) => {
|
|
223
|
-
output += data.toString();
|
|
224
|
-
});
|
|
225
|
-
child.stderr?.on('data', (data) => {
|
|
226
|
-
output += data.toString();
|
|
227
|
-
});
|
|
228
|
-
child.on('close', (code) => {
|
|
229
|
-
clearTimeout(timer);
|
|
230
|
-
if (!timedOut) {
|
|
231
|
-
resolve({ output, exitCode: code || 0 });
|
|
232
|
-
}
|
|
233
|
-
});
|
|
234
|
-
child.on('error', (error) => {
|
|
235
|
-
clearTimeout(timer);
|
|
236
|
-
reject(error);
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Extract context information from command output
|
|
242
|
-
*/
|
|
243
|
-
extractContextFromOutput(output, category) {
|
|
244
|
-
const context = {
|
|
245
|
-
states: [],
|
|
246
|
-
};
|
|
247
|
-
// Extract based on category
|
|
248
|
-
switch (category) {
|
|
249
|
-
case 'recon':
|
|
250
|
-
// Look for open ports
|
|
251
|
-
const portMatches = output.match(/(\d+)\/tcp\s+open/gi);
|
|
252
|
-
if (portMatches) {
|
|
253
|
-
context.states.push('ports_discovered');
|
|
254
|
-
context.discoveredPorts = portMatches
|
|
255
|
-
.map((m) => m.match(/\d+/)?.[0])
|
|
256
|
-
.filter((value) => Boolean(value));
|
|
257
|
-
}
|
|
258
|
-
break;
|
|
259
|
-
case 'web':
|
|
260
|
-
// Look for interesting endpoints
|
|
261
|
-
if (output.match(/200|301|302/)) {
|
|
262
|
-
context.states.push('endpoints_found');
|
|
263
|
-
}
|
|
264
|
-
break;
|
|
265
|
-
case 'creds':
|
|
266
|
-
// Look for credentials
|
|
267
|
-
if (output.match(/password|token|key|secret/i)) {
|
|
268
|
-
context.states.push('new_credentials');
|
|
269
|
-
}
|
|
270
|
-
break;
|
|
271
|
-
case 'payload':
|
|
272
|
-
// Look for successful exploitation
|
|
273
|
-
if (output.match(/shell|uid=|gid=|root|admin/i)) {
|
|
274
|
-
context.states.push('new_access');
|
|
275
|
-
context.states.push('shell_obtained');
|
|
276
|
-
}
|
|
277
|
-
break;
|
|
278
|
-
case 'lateral':
|
|
279
|
-
// Look for successful lateral movement
|
|
280
|
-
if (output.match(/logged in|authenticated|connected/i)) {
|
|
281
|
-
context.states.push('new_access');
|
|
282
|
-
}
|
|
283
|
-
break;
|
|
284
|
-
case 'privilege':
|
|
285
|
-
// Look for privilege escalation
|
|
286
|
-
if (output.match(/root|administrator|SYSTEM/i)) {
|
|
287
|
-
context.states.push('privilege_escalated');
|
|
288
|
-
}
|
|
289
|
-
break;
|
|
290
|
-
case 'cloud':
|
|
291
|
-
// Look for cloud metadata access
|
|
292
|
-
if (output.match(/ami-|AccessKeyId|SecretAccessKey/i)) {
|
|
293
|
-
context.states.push('cloud_metadata_accessed');
|
|
294
|
-
}
|
|
295
|
-
break;
|
|
296
|
-
}
|
|
297
|
-
return context;
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Determine outcome from verification result
|
|
301
|
-
*/
|
|
302
|
-
determineOutcome(verification, exitCode, output) {
|
|
303
|
-
// Check for detection indicators
|
|
304
|
-
const detectionPatterns = [
|
|
305
|
-
/blocked|banned|firewall|WAF/i,
|
|
306
|
-
/rate.?limit|too many requests/i,
|
|
307
|
-
/suspicious.?activity/i,
|
|
308
|
-
/blacklist/i,
|
|
309
|
-
];
|
|
310
|
-
const isDetected = detectionPatterns.some((pattern) => pattern.test(output));
|
|
311
|
-
if (isDetected) {
|
|
312
|
-
return 'detected';
|
|
313
|
-
}
|
|
314
|
-
// If verification approved with high confidence, it's a success
|
|
315
|
-
if (verification.approved && verification.confidence >= this.verificationConfig.minConfidence) {
|
|
316
|
-
return 'success';
|
|
317
|
-
}
|
|
318
|
-
// If verification confidence is moderate, treat as success with note
|
|
319
|
-
if (verification.confidence >= 0.5) {
|
|
320
|
-
return 'success';
|
|
321
|
-
}
|
|
322
|
-
// Otherwise it's a failure
|
|
323
|
-
return 'fail';
|
|
324
|
-
}
|
|
325
|
-
/**
|
|
326
|
-
* Update internal context based on execution result
|
|
327
|
-
*/
|
|
328
|
-
updateContextFromResult(result) {
|
|
329
|
-
this.context.previousOutputs.push(result.output);
|
|
330
|
-
// Extract and store credentials
|
|
331
|
-
const credMatches = result.output.match(/(?:password|token|key)[:=]\s*(\S+)/gi);
|
|
332
|
-
if (credMatches) {
|
|
333
|
-
this.context.discoveredCredentials.push(...credMatches);
|
|
334
|
-
}
|
|
335
|
-
// Extract and store discovered hosts
|
|
336
|
-
const hostMatches = result.output.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/g);
|
|
337
|
-
if (hostMatches) {
|
|
338
|
-
this.context.discoveredHosts.push(...hostMatches);
|
|
339
|
-
}
|
|
340
|
-
// Update privilege level
|
|
341
|
-
if (result.output.match(/root|administrator|SYSTEM/i)) {
|
|
342
|
-
this.context.currentPrivilegeLevel = 'root';
|
|
343
|
-
}
|
|
344
|
-
else if (result.output.match(/admin/i)) {
|
|
345
|
-
this.context.currentPrivilegeLevel = 'admin';
|
|
346
|
-
}
|
|
347
|
-
else if (result.output.match(/uid=/i)) {
|
|
348
|
-
this.context.currentPrivilegeLevel = 'user';
|
|
349
|
-
}
|
|
350
|
-
// Adjust detection risk
|
|
351
|
-
if (result.finalOutcome === 'detected') {
|
|
352
|
-
this.context.detectionRisk = 'high';
|
|
353
|
-
}
|
|
354
|
-
else if (result.verification.confidence < 0.5) {
|
|
355
|
-
this.context.detectionRisk = this.context.detectionRisk === 'low' ? 'medium' : 'high';
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
* Format result as a note for storage
|
|
360
|
-
*/
|
|
361
|
-
formatResultNote(result) {
|
|
362
|
-
const lines = [];
|
|
363
|
-
lines.push(`Confidence: ${(result.confidence * 100).toFixed(1)}%`);
|
|
364
|
-
lines.push(`Verification: ${result.verification.reason}`);
|
|
365
|
-
lines.push(`Attempts: ${result.retryAttempt + 1}`);
|
|
366
|
-
lines.push(`Time: ${result.executionTimeMs}ms`);
|
|
367
|
-
if (result.verification.results.length > 0) {
|
|
368
|
-
lines.push('Checks:');
|
|
369
|
-
for (const check of result.verification.results) {
|
|
370
|
-
lines.push(` - ${check.method}: ${check.passed ? '✓' : '✗'} (${(check.confidence * 100).toFixed(0)}%)`);
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
return lines.join('\n');
|
|
374
|
-
}
|
|
375
|
-
/**
|
|
376
|
-
* Execute a full offensive security run with autonomous verification
|
|
377
|
-
*/
|
|
378
|
-
async executeAutonomousRun(objective, scope, maxActions = 10) {
|
|
379
|
-
// Start or resume run
|
|
380
|
-
const run = startOffsecRun(objective, scope);
|
|
381
|
-
let actionsExecuted = 0;
|
|
382
|
-
while (actionsExecuted < maxActions) {
|
|
383
|
-
// Get next action
|
|
384
|
-
const nextActions = getOffsecNextActions(run.id, 1);
|
|
385
|
-
if (nextActions.length === 0) {
|
|
386
|
-
console.log('No more actions available');
|
|
387
|
-
break;
|
|
388
|
-
}
|
|
389
|
-
const nextAction = nextActions[0];
|
|
390
|
-
if (!nextAction) {
|
|
391
|
-
break;
|
|
392
|
-
}
|
|
393
|
-
console.log(`Executing: ${nextAction.label}`);
|
|
394
|
-
console.log(`Command: ${nextAction.command}`);
|
|
395
|
-
try {
|
|
396
|
-
// Execute with verification
|
|
397
|
-
const result = await this.executeWithVerification(run, nextAction);
|
|
398
|
-
console.log(`Result: ${result.finalOutcome} (confidence: ${(result.confidence * 100).toFixed(1)}%)`);
|
|
399
|
-
// Stop if detected
|
|
400
|
-
if (result.finalOutcome === 'detected') {
|
|
401
|
-
console.log('Detected! Stopping autonomous run.');
|
|
402
|
-
break;
|
|
403
|
-
}
|
|
404
|
-
actionsExecuted++;
|
|
405
|
-
}
|
|
406
|
-
catch (error) {
|
|
407
|
-
console.error(`Error executing action: ${error instanceof Error ? error.message : String(error)}`);
|
|
408
|
-
recordOffsecOutcome(run.id, nextAction.id, 'fail', `Error: ${error}`);
|
|
409
|
-
actionsExecuted++;
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
return run;
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* Get current context
|
|
416
|
-
*/
|
|
417
|
-
getContext() {
|
|
418
|
-
return { ...this.context };
|
|
419
|
-
}
|
|
420
|
-
/**
|
|
421
|
-
* Update context
|
|
422
|
-
*/
|
|
423
|
-
updateContext(updates) {
|
|
424
|
-
this.context = { ...this.context, ...updates };
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
/**
|
|
428
|
-
* Convenience function to execute an action with verification
|
|
429
|
-
*/
|
|
430
|
-
export async function executeOffsecActionWithVerification(run, actionId, context) {
|
|
431
|
-
const coordinator = new OffsecAlphaZeroEnhanced(context);
|
|
432
|
-
const actions = getOffsecNextActions(run.id, 100);
|
|
433
|
-
const action = actions.find((a) => a.id === actionId);
|
|
434
|
-
if (!action) {
|
|
435
|
-
throw new Error(`Action ${actionId} not found`);
|
|
436
|
-
}
|
|
437
|
-
return coordinator.executeWithVerification(run, action);
|
|
438
|
-
}
|
|
439
|
-
// Re-export for convenience
|
|
440
|
-
export { startOffsecRun, resumeOffsecRun, listOffsecRuns, getOffsecNextActions, formatOffsecStatus, };
|
|
441
|
-
//# sourceMappingURL=offsecAlphaZeroEnhanced.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"offsecAlphaZeroEnhanced.js","sourceRoot":"","sources":["../../src/core/offsecAlphaZeroEnhanced.ts"],"names":[],"mappings":"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"}
|