vigile-scan 0.2.6 → 3.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/README.md +3 -3
- package/dist/index.js +52 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -160,15 +160,15 @@ When you run `--sentinel`, Vigile intercepts outbound network traffic from your
|
|
|
160
160
|
- **DNS tunneling** — data exfiltration hidden in DNS queries
|
|
161
161
|
- **Unexpected destinations** — connections to IPs/domains outside the expected set
|
|
162
162
|
|
|
163
|
-
Sentinel is available on Pro ($
|
|
163
|
+
Sentinel is available on Pro ($29/mo) and Pro+ ($99/mo) plans. Free users can run static scans with no limits.
|
|
164
164
|
|
|
165
165
|
## Pricing
|
|
166
166
|
|
|
167
167
|
| Tier | Price | Highlights |
|
|
168
168
|
|------|-------|------------|
|
|
169
169
|
| Free | $0/forever | Unlimited CLI scans, 50 API scans/month, registry browsing |
|
|
170
|
-
| Pro | $
|
|
171
|
-
| Pro+ | $
|
|
170
|
+
| Pro | $29/mo | Sentinel monitoring (5 min, 3 servers), 1,000 API scans |
|
|
171
|
+
| Pro+ | $99/mo | Sentinel (30 min, 10 servers), DNS tunneling & C2 detection, alerts |
|
|
172
172
|
|
|
173
173
|
## Links
|
|
174
174
|
|
package/dist/index.js
CHANGED
|
@@ -31,7 +31,7 @@ var require_package = __commonJS({
|
|
|
31
31
|
"package.json"(exports2, module2) {
|
|
32
32
|
module2.exports = {
|
|
33
33
|
name: "vigile-scan",
|
|
34
|
-
version: "0.
|
|
34
|
+
version: "3.0.0",
|
|
35
35
|
description: "Security scanner for AI agent tools \u2014 detect tool poisoning, permission abuse, and supply chain attacks in MCP servers and agent skills",
|
|
36
36
|
main: "dist/index.js",
|
|
37
37
|
bin: {
|
|
@@ -1277,13 +1277,61 @@ var SKILL_EXFILTRATION_PATTERNS = [
|
|
|
1277
1277
|
recommendation: "Review why this skill needs access to all environment variables."
|
|
1278
1278
|
}
|
|
1279
1279
|
];
|
|
1280
|
+
var LOCATION_PATTERNS = [
|
|
1281
|
+
{
|
|
1282
|
+
id: "SK-060",
|
|
1283
|
+
category: "location-privacy",
|
|
1284
|
+
severity: "high",
|
|
1285
|
+
title: "Browser geolocation access",
|
|
1286
|
+
pattern: /(?:navigator\s*\.\s*geolocation|getCurrentPosition|watchPosition|GeolocationPosition|geolocation\s*\.\s*(?:get|watch|clear))/i,
|
|
1287
|
+
description: "Skill accesses browser geolocation API, which reveals the user's precise physical location.",
|
|
1288
|
+
recommendation: "Verify this skill genuinely needs location data. Geolocation exposes latitude/longitude \u2014 high privacy risk if exfiltrated."
|
|
1289
|
+
},
|
|
1290
|
+
{
|
|
1291
|
+
id: "SK-061",
|
|
1292
|
+
category: "location-privacy",
|
|
1293
|
+
severity: "high",
|
|
1294
|
+
title: "Mobile/native geolocation library",
|
|
1295
|
+
pattern: /(?:@react-native-community\/geolocation|expo-location|react-native-geolocation|Geolocation\.requestAuthorization|CLLocationManager|LocationManager|FusedLocationProvider|ACCESS_FINE_LOCATION|ACCESS_COARSE_LOCATION|requestLocationPermission)/i,
|
|
1296
|
+
description: "Skill uses a native mobile geolocation library to access device GPS coordinates.",
|
|
1297
|
+
recommendation: "Mobile location APIs provide high-precision GPS data. Ensure this skill has a legitimate need for physical location and does not transmit it externally."
|
|
1298
|
+
},
|
|
1299
|
+
{
|
|
1300
|
+
id: "SK-062",
|
|
1301
|
+
category: "location-privacy",
|
|
1302
|
+
severity: "critical",
|
|
1303
|
+
title: "Location data exfiltration",
|
|
1304
|
+
pattern: /(?:(?:send|post|upload|transmit|exfiltrate|forward|share|log|track|record)\s+(?:the\s+)?(?:user(?:'s)?\s+)?(?:location|coordinates?|gps|lat(?:itude)?|lng|lon(?:gitude)?|geo(?:location)?|position|whereabouts))|(?:(?:location|coordinates?|gps|lat(?:itude)?|lng|lon(?:gitude)?|geo(?:location)?|position)\s+(?:to|via|through|using)\s+(?:https?|api|endpoint|server|webhook|url))/i,
|
|
1305
|
+
description: "Skill instructs the agent to send location data to an external endpoint. This is a location exfiltration pattern.",
|
|
1306
|
+
recommendation: "CRITICAL: Do NOT install. This skill attempts to exfiltrate physical location data \u2014 a severe privacy violation."
|
|
1307
|
+
},
|
|
1308
|
+
{
|
|
1309
|
+
id: "SK-063",
|
|
1310
|
+
category: "location-privacy",
|
|
1311
|
+
severity: "medium",
|
|
1312
|
+
title: "IP-based geolocation lookup",
|
|
1313
|
+
pattern: /(?:ip-api\.com|ipinfo\.io|ipgeolocation|ip2location|geoip|maxmind|freegeoip|geolite|ip\s*(?:to|2)\s*(?:geo|location))|(?:(?:get|fetch|lookup|resolve)\s+(?:the\s+)?(?:user(?:'s)?\s+)?(?:location|city|country|region|timezone)\s+(?:from|via|using)\s+(?:ip|IP))/i,
|
|
1314
|
+
description: "Skill performs IP-based geolocation to approximate the user's physical location without explicit GPS access.",
|
|
1315
|
+
recommendation: "IP geolocation bypasses browser permission prompts. Verify this skill needs approximate location and isn't using it to fingerprint or track users."
|
|
1316
|
+
},
|
|
1317
|
+
{
|
|
1318
|
+
id: "SK-064",
|
|
1319
|
+
category: "location-privacy",
|
|
1320
|
+
severity: "medium",
|
|
1321
|
+
title: "Geofencing or location boundary check",
|
|
1322
|
+
pattern: /(?:geofenc(?:e|ing)|location\s*(?:boundary|fence|perimeter|zone|radius|range)|within\s+(?:\d+\s*)?(?:meters?|miles?|km|kilometers?)\s+of|haversine|vincenty|h3\s*(?:cell|index|resolution|boundary)|(?:enter|exit|cross)(?:ing|ed)?\s+(?:the\s+)?(?:geo)?fence)/i,
|
|
1323
|
+
description: "Skill implements geofencing or location boundary detection, which requires continuous location monitoring.",
|
|
1324
|
+
recommendation: "Geofencing requires persistent location tracking. Review whether the boundary checks are appropriate and data isn't being logged or exfiltrated."
|
|
1325
|
+
}
|
|
1326
|
+
];
|
|
1280
1327
|
var ALL_SKILL_PATTERNS = [
|
|
1281
1328
|
...INSTRUCTION_INJECTION_PATTERNS,
|
|
1282
1329
|
...MALWARE_DELIVERY_PATTERNS,
|
|
1283
1330
|
...STEALTH_PATTERNS,
|
|
1284
1331
|
...SAFETY_BYPASS_PATTERNS,
|
|
1285
1332
|
...PERSISTENCE_PATTERNS,
|
|
1286
|
-
...SKILL_EXFILTRATION_PATTERNS
|
|
1333
|
+
...SKILL_EXFILTRATION_PATTERNS,
|
|
1334
|
+
...LOCATION_PATTERNS
|
|
1287
1335
|
];
|
|
1288
1336
|
|
|
1289
1337
|
// src/scanner/skill-scanner.ts
|
|
@@ -2435,8 +2483,8 @@ function printSentinelUpgrade() {
|
|
|
2435
2483
|
console.log(import_chalk.default.yellow(` \u26A1 Sentinel is a Pro feature. Upgrade to unlock runtime monitoring:`));
|
|
2436
2484
|
console.log(import_chalk.default.cyan(` https://vigile.dev/pricing`));
|
|
2437
2485
|
console.log("");
|
|
2438
|
-
console.log(import_chalk.default.gray(` Pro ($
|
|
2439
|
-
console.log(import_chalk.default.gray(` Pro+ ($
|
|
2486
|
+
console.log(import_chalk.default.gray(` Pro ($29/mo) \u2014 5-min sessions, 3 servers, behavioral detection`));
|
|
2487
|
+
console.log(import_chalk.default.gray(` Pro+ ($99/mo) \u2014 30-min sessions, 10 servers, DNS tunneling & C2 detection`));
|
|
2440
2488
|
console.log("");
|
|
2441
2489
|
}
|
|
2442
2490
|
function printAuthStatus(info) {
|