safemode 2.0.8 → 2.0.10
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
CHANGED
|
@@ -132,7 +132,7 @@ safemode phone --test # Send a test notification
|
|
|
132
132
|
| 1 | Loop Killer | Repeated identical tool calls |
|
|
133
133
|
| 2 | Oscillation | Write-undo-write cycles |
|
|
134
134
|
| 3 | Velocity Limiter | Too many calls per minute |
|
|
135
|
-
| 4 | Cost Exposure |
|
|
135
|
+
| 4 | Cost Exposure | Estimated session cost approaching budget |
|
|
136
136
|
| 5 | Action Growth | Escalating permission requests |
|
|
137
137
|
| 6 | Latency Spike | Abnormal response times |
|
|
138
138
|
| 7 | Error Rate | Sustained error patterns |
|
|
@@ -142,7 +142,7 @@ safemode phone --test # Send a test notification
|
|
|
142
142
|
| 11 | Prompt Injection | Injection attempts in tool outputs |
|
|
143
143
|
| 12 | Jailbreak | Attempts to bypass safety controls |
|
|
144
144
|
| 13 | Command Firewall | Dangerous shell commands (rm -rf, chmod 777, etc.) |
|
|
145
|
-
| 14 | Budget Cap | Hard spending
|
|
145
|
+
| 14 | Budget Cap | Hard estimated spending limit |
|
|
146
146
|
| 15 | Action-Label Mismatch | Tool says "read" but actually writes |
|
|
147
147
|
|
|
148
148
|
## Config
|
|
@@ -5696,9 +5696,23 @@ var SecretsScanner = class {
|
|
|
5696
5696
|
const severityOrder = { low: 0, medium: 1, high: 2, critical: 3 };
|
|
5697
5697
|
for (const { name, pattern, severity } of SECRET_PATTERNS) {
|
|
5698
5698
|
pattern.lastIndex = 0;
|
|
5699
|
-
|
|
5700
|
-
|
|
5701
|
-
|
|
5699
|
+
let matchCount = 0;
|
|
5700
|
+
let match;
|
|
5701
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
5702
|
+
const matched = match[0];
|
|
5703
|
+
if (name === "aws_secret_key" && !/[/+]/.test(matched)) {
|
|
5704
|
+
continue;
|
|
5705
|
+
}
|
|
5706
|
+
const ctxStart = Math.max(0, match.index - 80);
|
|
5707
|
+
const ctxEnd = Math.min(content.length, match.index + matched.length + 80);
|
|
5708
|
+
const nearby = content.slice(ctxStart, ctxEnd).toLowerCase();
|
|
5709
|
+
if (/\b(?:patterns?|detects?|scanning|scans?|coverage|engine)\b/.test(nearby)) {
|
|
5710
|
+
continue;
|
|
5711
|
+
}
|
|
5712
|
+
matchCount++;
|
|
5713
|
+
}
|
|
5714
|
+
if (matchCount > 0) {
|
|
5715
|
+
findings.push({ type: name, severity, count: matchCount });
|
|
5702
5716
|
if (severityOrder[severity] > severityOrder[maxSeverity]) {
|
|
5703
5717
|
maxSeverity = severity;
|
|
5704
5718
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"10-secrets-scanner.d.ts","sourceRoot":"","sources":["../../../src/engines/10-secrets-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AA8F9E,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,EAAE,MAAM;IACjB,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,WAAW,8CAA8C;IAE5D,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"10-secrets-scanner.d.ts","sourceRoot":"","sources":["../../../src/engines/10-secrets-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AA8F9E,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,EAAE,MAAM;IACjB,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,WAAW,8CAA8C;IAE5D,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAgF9D"}
|
|
@@ -82,9 +82,25 @@ export class SecretsScanner {
|
|
|
82
82
|
for (const { name, pattern, severity } of SECRET_PATTERNS) {
|
|
83
83
|
// Reset regex state
|
|
84
84
|
pattern.lastIndex = 0;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
let matchCount = 0;
|
|
86
|
+
let match;
|
|
87
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
88
|
+
const matched = match[0];
|
|
89
|
+
// AWS secret key: must contain / or + (real keys always do, identifiers don't)
|
|
90
|
+
if (name === 'aws_secret_key' && !/[/+]/.test(matched)) {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
// Skip documentation context: nearby text about patterns/detection is not a secret
|
|
94
|
+
const ctxStart = Math.max(0, match.index - 80);
|
|
95
|
+
const ctxEnd = Math.min(content.length, match.index + matched.length + 80);
|
|
96
|
+
const nearby = content.slice(ctxStart, ctxEnd).toLowerCase();
|
|
97
|
+
if (/\b(?:patterns?|detects?|scanning|scans?|coverage|engine)\b/.test(nearby)) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
matchCount++;
|
|
101
|
+
}
|
|
102
|
+
if (matchCount > 0) {
|
|
103
|
+
findings.push({ type: name, severity, count: matchCount });
|
|
88
104
|
if (severityOrder[severity] > severityOrder[maxSeverity]) {
|
|
89
105
|
maxSeverity = severity;
|
|
90
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"10-secrets-scanner.js","sourceRoot":"","sources":["../../../src/engines/10-secrets-scanner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"10-secrets-scanner.js","sourceRoot":"","sources":["../../../src/engines/10-secrets-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,MAAM,eAAe,GAAoB;IACvC,MAAM;IACN,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,UAAU,EAAE;IAClF,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,UAAU,EAAE;IACpF,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,+EAA+E,EAAE,QAAQ,EAAE,UAAU,EAAE;IAEvI,SAAS;IACT,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,UAAU,EAAE;IACjF,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,UAAU,EAAE;IACnF,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,UAAU,EAAE;IACjF,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,UAAU,EAAE;IACrF,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,iDAAiD,EAAE,QAAQ,EAAE,UAAU,EAAE;IAEjH,SAAS;IACT,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,UAAU,EAAE;IAC9F,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC1F,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,UAAU,EAAE;IAClG,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,EAAE;IAEpF,SAAS;IACT,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnF,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,0DAA0D,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC/G,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAEzF,QAAQ;IACR,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,iDAAiD,EAAE,QAAQ,EAAE,UAAU,EAAE;IAC7G,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,iDAAiD,EAAE,QAAQ,EAAE,UAAU,EAAE;IAC9G,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,mFAAmF,EAAE,QAAQ,EAAE,MAAM,EAAE;IAEzI,UAAU;IACV,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,+CAA+C,EAAE,QAAQ,EAAE,UAAU,EAAE;IACzG,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,kEAAkE,EAAE,QAAQ,EAAE,MAAM,EAAE;IAE1H,MAAM;IACN,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,UAAU,EAAE;IAEhF,OAAO;IACP,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,UAAU,EAAE;IAEtF,SAAS;IACT,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC/E,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAE3E,WAAW;IACX,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,+CAA+C,EAAE,QAAQ,EAAE,UAAU,EAAE;IAE5G,YAAY;IACZ,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE;IAE3F,SAAS;IACT,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,oEAAoE,EAAE,QAAQ,EAAE,MAAM,EAAE;IAE3H,eAAe;IACf,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,UAAU,EAAE;IAEzF,SAAS;IACT,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,UAAU,EAAE;IACpF,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAE/E,YAAY;IACZ,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,gCAAgC,EAAE,QAAQ,EAAE,UAAU,EAAE;IAE9F,WAAW;IACX,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,6CAA6C,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAEpG,mBAAmB;IACnB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,yDAAyD,EAAE,QAAQ,EAAE,UAAU,EAAE;IACjH,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,2DAA2D,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC7G,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,mCAAmC,EAAE,QAAQ,EAAE,MAAM,EAAE;IACtF,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,mCAAmC,EAAE,QAAQ,EAAE,MAAM,EAAE;IAExF,8BAA8B;IAC9B,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,kDAAkD,EAAE,QAAQ,EAAE,UAAU,EAAE;IAC3G,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,wCAAwC,EAAE,QAAQ,EAAE,UAAU,EAAE;IAC9F,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,qDAAqD,EAAE,QAAQ,EAAE,UAAU,EAAE;IAC7G,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,kCAAkC,EAAE,QAAQ,EAAE,UAAU,EAAE;CACzF,CAAC;AAEF,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,MAAM,OAAO,cAAc;IAChB,EAAE,GAAG,EAAE,CAAC;IACR,IAAI,GAAG,iBAAiB,CAAC;IACzB,WAAW,GAAG,0CAA0C,CAAC;IAElE,KAAK,CAAC,QAAQ,CAAC,OAAsB;QACnC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAE/B,4CAA4C;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE3C,MAAM,QAAQ,GAA6D,EAAE,CAAC;QAC9E,IAAI,WAAW,GAA8B,KAAK,CAAC;QAEnD,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAElE,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,eAAe,EAAE,CAAC;YAC1D,oBAAoB;YACpB,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;YAEtB,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,KAA6B,CAAC;YAElC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAEzB,+EAA+E;gBAC/E,IAAI,IAAI,KAAK,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACvD,SAAS;gBACX,CAAC;gBAED,mFAAmF;gBACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;gBAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7D,IAAI,4DAA4D,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9E,SAAS;gBACX,CAAC;gBAED,UAAU,EAAE,CAAC;YACf,CAAC;YAED,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;gBAE3D,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;oBACzD,WAAW,GAAG,QAAQ,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvE,+BAA+B;YAC/B,MAAM,WAAW,GAAG,WAAW,KAAK,UAAU,CAAC;YAE/C,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,EAAE;gBAClB,WAAW,EAAE,IAAI,CAAC,IAAI;gBACtB,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,WAAW;gBACrB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;gBACvC,OAAO,EAAE;oBACP,MAAM,EAAE,qBAAqB,OAAO,EAAE;oBACtC,QAAQ;oBACR,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC7D,YAAY,EAAE,WAAW;iBAC1B;gBACD,UAAU,EAAE,CAAC;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,EAAE;YAClB,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,GAAG;YACf,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,CAAC;SACd,CAAC;IACJ,CAAC;CACF"}
|