sicario-red-team 0.4.0 → 0.4.2
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/bin/sicario.js +1 -1
- package/package.json +1 -1
- package/src-cli/commands/hit.js +12 -3
- package/src-cli/nodes/breacher.js +8 -7
package/bin/sicario.js
CHANGED
|
@@ -28,7 +28,7 @@ const program = new Command();
|
|
|
28
28
|
program
|
|
29
29
|
.name('sicario')
|
|
30
30
|
.description('Autonomous Agentic Red-Teaming Swarm Protocol')
|
|
31
|
-
.version('0.4.
|
|
31
|
+
.version('0.4.2');
|
|
32
32
|
|
|
33
33
|
// Use a more robust way to import the command logic relative to this file
|
|
34
34
|
const hitCommandPath = pathToFileURL(path.join(__dirname, '../src-cli/commands/hit.js')).href;
|
package/package.json
CHANGED
package/src-cli/commands/hit.js
CHANGED
|
@@ -109,6 +109,7 @@ export async function hitCommand(target, options) {
|
|
|
109
109
|
log.success(`[Breacher] : Analysis complete. ${breachReports.length} vulnerabilities isolated.`);
|
|
110
110
|
if (client && missionId) await client.mutation('handler:logMessage', { missionId, type: 'Breacher', message: `Analysis complete. Found ${breachReports.length} vectors.` });
|
|
111
111
|
|
|
112
|
+
const verifiedBreachReports = [];
|
|
112
113
|
for (const breachReport of breachReports) {
|
|
113
114
|
// 5.1 [Critic] Verification (Internal Affairs)
|
|
114
115
|
log.step(`[Critic] : Verifying ${breachReport.title}...`);
|
|
@@ -120,6 +121,8 @@ export async function hitCommand(target, options) {
|
|
|
120
121
|
continue; // Skip false positive
|
|
121
122
|
}
|
|
122
123
|
|
|
124
|
+
verifiedBreachReports.push(breachReport);
|
|
125
|
+
|
|
123
126
|
// 6. Sanitization Layer (The Anti-Crash Upgrade)
|
|
124
127
|
const sanitize = (raw) => ({
|
|
125
128
|
title: raw.title || "Unknown Logic Flaw",
|
|
@@ -191,7 +194,7 @@ export async function hitCommand(target, options) {
|
|
|
191
194
|
}
|
|
192
195
|
}
|
|
193
196
|
|
|
194
|
-
if (
|
|
197
|
+
if (verifiedBreachReports.length === 0) {
|
|
195
198
|
const forms = elements.filter(e => e.tag === 'form').length;
|
|
196
199
|
const inputs = elements.filter(e => e.tag === 'input' || e.tag === 'textarea').length;
|
|
197
200
|
const actions = elements.filter(e => e.tag === 'button' || e.tag === 'a').length;
|
|
@@ -208,8 +211,8 @@ export async function hitCommand(target, options) {
|
|
|
208
211
|
// 6. Mission Dossier
|
|
209
212
|
const summaryLines = [
|
|
210
213
|
`${theme.dim('Target')} ${theme.bold(finalTarget)}`,
|
|
211
|
-
`${theme.dim('Nodes Recalled')} ${theme.bold(options.swarm ? '
|
|
212
|
-
`${theme.dim('Breaches Found')} ${
|
|
214
|
+
`${theme.dim('Nodes Recalled')} ${theme.bold(options.swarm ? '6 (Scout, Ghost, Accountant, Admin, Chaos, Architect)' : '3 (Scout, Ghost, Breacher)')}`,
|
|
215
|
+
`${theme.dim('Breaches Found')} ${verifiedBreachReports.length > 0 ? pc.red(pc.bold(verifiedBreachReports.length)) : theme.bold('0')}`,
|
|
213
216
|
`${theme.dim('Status')} ${theme.success('MISSION SUCCESSFUL')}`
|
|
214
217
|
];
|
|
215
218
|
|
|
@@ -217,6 +220,12 @@ export async function hitCommand(target, options) {
|
|
|
217
220
|
summaryLines.forEach(line => console.log(pc.green(`│ ${line.padEnd(54)} │`)));
|
|
218
221
|
console.log(pc.green(`└ Mission complete. Trace extraction successful. ╯`));
|
|
219
222
|
|
|
223
|
+
// 7. Security Signature (Certificate of Authenticity)
|
|
224
|
+
console.log(pc.dim('\nSYSTEM SIGNATURE:'));
|
|
225
|
+
console.log(pc.dim(`SHA-256: ${require('crypto').createHash('sha256').update(finalTarget + Date.now()).digest('hex').substring(0, 32)}`));
|
|
226
|
+
console.log(pc.dim(`AGENT ID: ${Math.random().toString(36).substring(7).toUpperCase()}`));
|
|
227
|
+
console.log(pc.dim(`TIMESTAMP: ${new Date().toISOString()}`));
|
|
228
|
+
|
|
220
229
|
} catch (error) {
|
|
221
230
|
log.error('[Breacher] : Analysis node failure.');
|
|
222
231
|
log.error(error.message);
|
|
@@ -86,13 +86,14 @@ export async function runCritic(finding, elements) {
|
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
const systemPrompt = `
|
|
89
|
-
You are the "Internal Affairs" auditor for the Sicario Swarm.
|
|
90
|
-
Your goal is to debunk high-value findings from the Breacher nodes.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
1.
|
|
94
|
-
2.
|
|
95
|
-
3.
|
|
89
|
+
You are the "Internal Affairs" auditor for the Sicario Swarm.
|
|
90
|
+
Your goal is to mercilessly debunk high-value findings from the Breacher nodes to ensure zero-false-positive reports.
|
|
91
|
+
|
|
92
|
+
ADVERSARIAL AUDIT PROTOCOL:
|
|
93
|
+
1. BUG vs. EXPLOIT: Is it just a "best practice" violation (e.g. missing label) or a real technical path to catastrophe? Debunk the former.
|
|
94
|
+
2. FRAMEWORK GUARDS: Modern frameworks (React, Next.js, Django) auto-sanitize many vectors. Does this finding survive server-side auto-escaping?
|
|
95
|
+
3. SKEPTICISM: Treat every finding as a hallucination until you can map a specific, realistic user-flow to exploitation.
|
|
96
|
+
4. IDOR/STATE FOCUS: Prioritize Insecure Direct Object References and state-bypass. Be ruthless with generic "Input Validation" reports.
|
|
96
97
|
|
|
97
98
|
RETURN VALID JSON:
|
|
98
99
|
{
|