codeslick-cli 1.4.0 → 1.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/dist/packages/cli/src/commands/scan.d.ts.map +1 -1
- package/dist/packages/cli/src/commands/scan.js +7 -3
- package/dist/packages/cli/src/commands/scan.js.map +1 -1
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts +11 -0
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts.map +1 -1
- package/dist/packages/cli/src/reporters/cli-reporter.js +150 -45
- package/dist/packages/cli/src/reporters/cli-reporter.js.map +1 -1
- package/dist/packages/cli/src/scanner/local-scanner.d.ts +2 -2
- package/dist/packages/cli/src/scanner/local-scanner.d.ts.map +1 -1
- package/dist/packages/cli/src/scanner/local-scanner.js +40 -9
- package/dist/packages/cli/src/scanner/local-scanner.js.map +1 -1
- package/dist/src/lib/analyzers/go-analyzer.d.ts +12 -0
- package/dist/src/lib/analyzers/go-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/go-analyzer.js +113 -0
- package/dist/src/lib/analyzers/go-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/iac/pii-detector.d.ts +27 -0
- package/dist/src/lib/analyzers/iac/pii-detector.d.ts.map +1 -0
- package/dist/src/lib/analyzers/iac/pii-detector.js +199 -0
- package/dist/src/lib/analyzers/iac/pii-detector.js.map +1 -0
- package/dist/src/lib/analyzers/iac/pii-patterns.d.ts +43 -0
- package/dist/src/lib/analyzers/iac/pii-patterns.d.ts.map +1 -0
- package/dist/src/lib/analyzers/iac/pii-patterns.js +228 -0
- package/dist/src/lib/analyzers/iac/pii-patterns.js.map +1 -0
- package/dist/src/lib/analyzers/java-analyzer.d.ts +5 -0
- package/dist/src/lib/analyzers/java-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/java-analyzer.js +51 -0
- package/dist/src/lib/analyzers/java-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts +8 -4
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts.map +1 -1
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js +109 -13
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js.map +1 -1
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.d.ts.map +1 -1
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js +7 -8
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js.map +1 -1
- package/dist/src/lib/analyzers/javascript-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/javascript-analyzer.js +16 -12
- package/dist/src/lib/analyzers/javascript-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/kubernetes/checks/network-security.d.ts +33 -0
- package/dist/src/lib/analyzers/kubernetes/checks/network-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/network-security.js +184 -0
- package/dist/src/lib/analyzers/kubernetes/checks/network-security.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/pod-security.d.ts +60 -0
- package/dist/src/lib/analyzers/kubernetes/checks/pod-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/pod-security.js +418 -0
- package/dist/src/lib/analyzers/kubernetes/checks/pod-security.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.d.ts +44 -0
- package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.js +275 -0
- package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/resource-management.d.ts +32 -0
- package/dist/src/lib/analyzers/kubernetes/checks/resource-management.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/resource-management.js +176 -0
- package/dist/src/lib/analyzers/kubernetes/checks/resource-management.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.d.ts +38 -0
- package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.js +266 -0
- package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/service-security.d.ts +26 -0
- package/dist/src/lib/analyzers/kubernetes/checks/service-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/service-security.js +120 -0
- package/dist/src/lib/analyzers/kubernetes/checks/service-security.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/parser.d.ts +74 -0
- package/dist/src/lib/analyzers/kubernetes/parser.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/parser.js +233 -0
- package/dist/src/lib/analyzers/kubernetes/parser.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/pii-detector.d.ts +34 -0
- package/dist/src/lib/analyzers/kubernetes/pii-detector.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/pii-detector.js +182 -0
- package/dist/src/lib/analyzers/kubernetes/pii-detector.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/types.d.ts +266 -0
- package/dist/src/lib/analyzers/kubernetes/types.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/types.js +77 -0
- package/dist/src/lib/analyzers/kubernetes/types.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes-analyzer.d.ts +93 -0
- package/dist/src/lib/analyzers/kubernetes-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes-analyzer.js +215 -0
- package/dist/src/lib/analyzers/kubernetes-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/python-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/python-analyzer.js +32 -48
- package/dist/src/lib/analyzers/python-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts +2 -32
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/secrets/types.d.ts +40 -0
- package/dist/src/lib/analyzers/secrets/types.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/types.js +10 -0
- package/dist/src/lib/analyzers/secrets/types.js.map +1 -0
- package/dist/src/lib/analyzers/terraform-analyzer.d.ts +1 -0
- package/dist/src/lib/analyzers/terraform-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/terraform-analyzer.js +28 -0
- package/dist/src/lib/analyzers/terraform-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/typescript-analyzer.d.ts +5 -0
- package/dist/src/lib/analyzers/typescript-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/typescript-analyzer.js +76 -0
- package/dist/src/lib/analyzers/typescript-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/utils/false-positive-filter.d.ts +27 -0
- package/dist/src/lib/analyzers/utils/false-positive-filter.d.ts.map +1 -0
- package/dist/src/lib/analyzers/utils/false-positive-filter.js +176 -0
- package/dist/src/lib/analyzers/utils/false-positive-filter.js.map +1 -0
- package/dist/src/lib/security/epss-service.d.ts.map +1 -1
- package/dist/src/lib/security/epss-service.js +27 -8
- package/dist/src/lib/security/epss-service.js.map +1 -1
- package/dist/src/lib/security/severity-scoring.d.ts.map +1 -1
- package/dist/src/lib/security/severity-scoring.js +24 -0
- package/dist/src/lib/security/severity-scoring.js.map +1 -1
- package/dist/src/lib/types/index.d.ts +3 -3
- package/dist/src/lib/types/index.d.ts.map +1 -1
- package/dist/src/lib/utils/ignore-patterns.d.ts +60 -0
- package/dist/src/lib/utils/ignore-patterns.d.ts.map +1 -0
- package/dist/src/lib/utils/ignore-patterns.js +212 -0
- package/dist/src/lib/utils/ignore-patterns.js.map +1 -0
- package/package.json +1 -1
- package/src/commands/scan.ts +7 -3
- package/src/reporters/cli-reporter.ts +174 -48
- package/src/scanner/local-scanner.ts +54 -10
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Kubernetes YAML Parser
|
|
4
|
+
*
|
|
5
|
+
* WR3 Week 6: Kubernetes YAML Security Scanner
|
|
6
|
+
* Parses Kubernetes YAML manifests (single and multi-document)
|
|
7
|
+
*
|
|
8
|
+
* Created: February 5, 2026
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.parseKubernetes = parseKubernetes;
|
|
45
|
+
exports.isKubernetesResource = isKubernetesResource;
|
|
46
|
+
exports.isKubernetesYAML = isKubernetesYAML;
|
|
47
|
+
exports.extractContainers = extractContainers;
|
|
48
|
+
exports.getPodSpec = getPodSpec;
|
|
49
|
+
exports.getResourceIdentifier = getResourceIdentifier;
|
|
50
|
+
exports.isProductionResource = isProductionResource;
|
|
51
|
+
exports.getContainerEnvVars = getContainerEnvVars;
|
|
52
|
+
const yaml = __importStar(require("js-yaml"));
|
|
53
|
+
/**
|
|
54
|
+
* Parse Kubernetes YAML content (supports multi-document YAML with ---)
|
|
55
|
+
*
|
|
56
|
+
* @param yamlContent - YAML string to parse
|
|
57
|
+
* @returns Array of Kubernetes resources
|
|
58
|
+
*/
|
|
59
|
+
function parseKubernetes(yamlContent) {
|
|
60
|
+
const resources = [];
|
|
61
|
+
try {
|
|
62
|
+
// Split by document separator (---)
|
|
63
|
+
const documents = yamlContent.split(/^---$/m);
|
|
64
|
+
for (const doc of documents) {
|
|
65
|
+
const trimmed = doc.trim();
|
|
66
|
+
if (!trimmed) {
|
|
67
|
+
continue; // Skip empty documents
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
const parsed = yaml.load(trimmed);
|
|
71
|
+
if (parsed && isKubernetesResource(parsed)) {
|
|
72
|
+
resources.push(parsed);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// Log why resource was rejected for debugging
|
|
76
|
+
console.log('[K8s Parser] Resource rejected:', {
|
|
77
|
+
parsed: !!parsed,
|
|
78
|
+
hasApiVersion: parsed && 'apiVersion' in parsed,
|
|
79
|
+
hasKind: parsed && 'kind' in parsed,
|
|
80
|
+
hasMetadata: parsed && 'metadata' in parsed,
|
|
81
|
+
hasName: parsed && parsed.metadata && 'name' in parsed.metadata,
|
|
82
|
+
kind: parsed?.kind,
|
|
83
|
+
name: parsed?.metadata?.name
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
// Skip invalid YAML documents, continue with others
|
|
89
|
+
console.error('[K8s Parser] Failed to parse YAML document:', err);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
throw new Error(`YAML parsing error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
95
|
+
}
|
|
96
|
+
return resources;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if an object is a valid Kubernetes resource
|
|
100
|
+
*
|
|
101
|
+
* @param obj - Object to check
|
|
102
|
+
* @returns True if object has apiVersion and kind
|
|
103
|
+
*/
|
|
104
|
+
function isKubernetesResource(obj) {
|
|
105
|
+
return (obj &&
|
|
106
|
+
typeof obj === 'object' &&
|
|
107
|
+
'apiVersion' in obj &&
|
|
108
|
+
'kind' in obj &&
|
|
109
|
+
'metadata' in obj &&
|
|
110
|
+
obj.metadata &&
|
|
111
|
+
typeof obj.metadata === 'object' &&
|
|
112
|
+
'name' in obj.metadata);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if YAML content contains Kubernetes resources
|
|
116
|
+
*
|
|
117
|
+
* @param yamlContent - YAML string to check
|
|
118
|
+
* @returns True if content contains K8s resources
|
|
119
|
+
*/
|
|
120
|
+
function isKubernetesYAML(yamlContent) {
|
|
121
|
+
try {
|
|
122
|
+
// Quick check for common K8s indicators
|
|
123
|
+
return (yamlContent.includes('apiVersion:') &&
|
|
124
|
+
yamlContent.includes('kind:') &&
|
|
125
|
+
yamlContent.includes('metadata:'));
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Extract all containers from a Kubernetes resource
|
|
133
|
+
* Handles Pod, Deployment, StatefulSet, DaemonSet, Job, CronJob
|
|
134
|
+
*
|
|
135
|
+
* @param resource - Kubernetes resource
|
|
136
|
+
* @returns Array of containers (including initContainers)
|
|
137
|
+
*/
|
|
138
|
+
function extractContainers(resource) {
|
|
139
|
+
const containers = [];
|
|
140
|
+
let podSpec = null;
|
|
141
|
+
// Extract pod spec based on resource kind
|
|
142
|
+
if (resource.kind === 'Pod') {
|
|
143
|
+
podSpec = resource.spec;
|
|
144
|
+
}
|
|
145
|
+
else if (['Deployment', 'StatefulSet', 'DaemonSet', 'ReplicaSet'].includes(resource.kind)) {
|
|
146
|
+
podSpec = resource.spec?.template?.spec;
|
|
147
|
+
}
|
|
148
|
+
else if (resource.kind === 'Job') {
|
|
149
|
+
podSpec = resource.spec?.template?.spec;
|
|
150
|
+
}
|
|
151
|
+
else if (resource.kind === 'CronJob') {
|
|
152
|
+
podSpec = resource.spec?.jobTemplate?.spec?.template?.spec;
|
|
153
|
+
}
|
|
154
|
+
if (!podSpec) {
|
|
155
|
+
return containers;
|
|
156
|
+
}
|
|
157
|
+
// Add regular containers
|
|
158
|
+
if (Array.isArray(podSpec.containers)) {
|
|
159
|
+
for (const container of podSpec.containers) {
|
|
160
|
+
containers.push({ container, isInitContainer: false });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Add init containers
|
|
164
|
+
if (Array.isArray(podSpec.initContainers)) {
|
|
165
|
+
for (const container of podSpec.initContainers) {
|
|
166
|
+
containers.push({ container, isInitContainer: true });
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return containers;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get pod spec from various Kubernetes workload resources
|
|
173
|
+
*
|
|
174
|
+
* @param resource - Kubernetes resource
|
|
175
|
+
* @returns Pod spec or null
|
|
176
|
+
*/
|
|
177
|
+
function getPodSpec(resource) {
|
|
178
|
+
if (resource.kind === 'Pod') {
|
|
179
|
+
return resource.spec;
|
|
180
|
+
}
|
|
181
|
+
if (['Deployment', 'StatefulSet', 'DaemonSet', 'ReplicaSet'].includes(resource.kind)) {
|
|
182
|
+
return resource.spec?.template?.spec;
|
|
183
|
+
}
|
|
184
|
+
if (resource.kind === 'Job') {
|
|
185
|
+
return resource.spec?.template?.spec;
|
|
186
|
+
}
|
|
187
|
+
if (resource.kind === 'CronJob') {
|
|
188
|
+
return resource.spec?.jobTemplate?.spec?.template?.spec;
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get resource identifier for error messages
|
|
194
|
+
*
|
|
195
|
+
* @param resource - Kubernetes resource
|
|
196
|
+
* @returns Formatted identifier (e.g., "Deployment/default/nginx")
|
|
197
|
+
*/
|
|
198
|
+
function getResourceIdentifier(resource) {
|
|
199
|
+
const namespace = resource.metadata.namespace || 'default';
|
|
200
|
+
return `${resource.kind}/${namespace}/${resource.metadata.name}`;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Check if resource is in a production-like namespace
|
|
204
|
+
*
|
|
205
|
+
* @param resource - Kubernetes resource
|
|
206
|
+
* @returns True if in prod/production/live namespace
|
|
207
|
+
*/
|
|
208
|
+
function isProductionResource(resource) {
|
|
209
|
+
const namespace = (resource.metadata.namespace || '').toLowerCase();
|
|
210
|
+
const prodIndicators = ['prod', 'production', 'live', 'prd'];
|
|
211
|
+
return prodIndicators.some(indicator => namespace.includes(indicator));
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get all environment variables from a container (including valueFrom)
|
|
215
|
+
*
|
|
216
|
+
* @param container - Container spec
|
|
217
|
+
* @returns Array of environment variable names and values
|
|
218
|
+
*/
|
|
219
|
+
function getContainerEnvVars(container) {
|
|
220
|
+
const envVars = [];
|
|
221
|
+
// Direct env vars
|
|
222
|
+
if (Array.isArray(container.env)) {
|
|
223
|
+
for (const env of container.env) {
|
|
224
|
+
envVars.push({
|
|
225
|
+
name: env.name,
|
|
226
|
+
value: env.value,
|
|
227
|
+
source: env.valueFrom ? 'valueFrom' : 'direct',
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return envVars;
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../../../../src/lib/analyzers/kubernetes/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PII Detection for Kubernetes Resources
|
|
3
|
+
*
|
|
4
|
+
* Reuses the 12 PII patterns from Terraform/IaC scanning and applies them to:
|
|
5
|
+
* - ConfigMap data fields
|
|
6
|
+
* - Secret data fields (stringData and decoded data)
|
|
7
|
+
* - Environment variables (env and envFrom)
|
|
8
|
+
* - Annotations and labels
|
|
9
|
+
*
|
|
10
|
+
* Created: February 5, 2026
|
|
11
|
+
*/
|
|
12
|
+
import { SecurityVulnerability } from '../types';
|
|
13
|
+
import type { KubernetesResource } from './types';
|
|
14
|
+
/**
|
|
15
|
+
* Check ConfigMap resources for PII in data fields
|
|
16
|
+
*/
|
|
17
|
+
export declare function checkConfigMapPII(resource: KubernetesResource): SecurityVulnerability[];
|
|
18
|
+
/**
|
|
19
|
+
* Check Secret resources for PII in stringData fields
|
|
20
|
+
*/
|
|
21
|
+
export declare function checkSecretPII(resource: KubernetesResource): SecurityVulnerability[];
|
|
22
|
+
/**
|
|
23
|
+
* Check pod environment variables for PII
|
|
24
|
+
*/
|
|
25
|
+
export declare function checkEnvironmentVariablesPII(resource: KubernetesResource): SecurityVulnerability[];
|
|
26
|
+
/**
|
|
27
|
+
* Check annotations and labels for PII
|
|
28
|
+
*/
|
|
29
|
+
export declare function checkMetadataPII(resource: KubernetesResource): SecurityVulnerability[];
|
|
30
|
+
/**
|
|
31
|
+
* Run all PII detection checks on a Kubernetes resource
|
|
32
|
+
*/
|
|
33
|
+
export declare function runKubernetesPIIChecks(resource: KubernetesResource): SecurityVulnerability[];
|
|
34
|
+
//# sourceMappingURL=pii-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pii-detector.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/analyzers/kubernetes/pii-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAyElD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,qBAAqB,EAAE,CAmBvF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,qBAAqB,EAAE,CAuBpF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,GAC3B,qBAAqB,EAAE,CA2BzB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,qBAAqB,EAAE,CA4BtF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,qBAAqB,EAAE,CAoB5F"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PII Detection for Kubernetes Resources
|
|
4
|
+
*
|
|
5
|
+
* Reuses the 12 PII patterns from Terraform/IaC scanning and applies them to:
|
|
6
|
+
* - ConfigMap data fields
|
|
7
|
+
* - Secret data fields (stringData and decoded data)
|
|
8
|
+
* - Environment variables (env and envFrom)
|
|
9
|
+
* - Annotations and labels
|
|
10
|
+
*
|
|
11
|
+
* Created: February 5, 2026
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.checkConfigMapPII = checkConfigMapPII;
|
|
15
|
+
exports.checkSecretPII = checkSecretPII;
|
|
16
|
+
exports.checkEnvironmentVariablesPII = checkEnvironmentVariablesPII;
|
|
17
|
+
exports.checkMetadataPII = checkMetadataPII;
|
|
18
|
+
exports.runKubernetesPIIChecks = runKubernetesPIIChecks;
|
|
19
|
+
const parser_1 = require("./parser");
|
|
20
|
+
const pii_patterns_1 = require("../iac/pii-patterns");
|
|
21
|
+
/**
|
|
22
|
+
* Scan text content for PII patterns
|
|
23
|
+
* Reuses the same logic as Terraform PII detection
|
|
24
|
+
*/
|
|
25
|
+
function scanTextForPII(text, context) {
|
|
26
|
+
const vulnerabilities = [];
|
|
27
|
+
// Check each PII pattern
|
|
28
|
+
for (const [type, pattern] of Object.entries(pii_patterns_1.PII_PATTERNS)) {
|
|
29
|
+
const matches = text.matchAll(pattern.regex);
|
|
30
|
+
for (const match of matches) {
|
|
31
|
+
const matchedText = match[0];
|
|
32
|
+
// Check if match should be excluded
|
|
33
|
+
if ((0, pii_patterns_1.shouldExcludeMatch)(matchedText, pattern)) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
// Validate if pattern has custom validation function
|
|
37
|
+
if (pattern.validate && !pattern.validate(matchedText)) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
vulnerabilities.push((0, pii_patterns_1.createPIIVulnerability)(type, pattern, matchedText, context));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return vulnerabilities;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Scan nested objects recursively for PII
|
|
47
|
+
*/
|
|
48
|
+
function scanNestedObject(obj, context) {
|
|
49
|
+
const vulnerabilities = [];
|
|
50
|
+
if (typeof obj === 'string') {
|
|
51
|
+
return scanTextForPII(obj, context);
|
|
52
|
+
}
|
|
53
|
+
if (typeof obj === 'object' && obj !== null) {
|
|
54
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
55
|
+
const nestedContext = {
|
|
56
|
+
...context,
|
|
57
|
+
attributePath: `${context.attributePath}.${key}`,
|
|
58
|
+
};
|
|
59
|
+
if (typeof value === 'string') {
|
|
60
|
+
vulnerabilities.push(...scanTextForPII(value, nestedContext));
|
|
61
|
+
}
|
|
62
|
+
else if (typeof value === 'object') {
|
|
63
|
+
vulnerabilities.push(...scanNestedObject(value, nestedContext));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return vulnerabilities;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check ConfigMap resources for PII in data fields
|
|
71
|
+
*/
|
|
72
|
+
function checkConfigMapPII(resource) {
|
|
73
|
+
if (resource.kind !== 'ConfigMap') {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const vulnerabilities = [];
|
|
77
|
+
const data = resource.data || {};
|
|
78
|
+
for (const [key, value] of Object.entries(data)) {
|
|
79
|
+
const context = {
|
|
80
|
+
resourceName: (0, parser_1.getResourceIdentifier)(resource),
|
|
81
|
+
attributePath: `data.${key}`,
|
|
82
|
+
line: resource.line,
|
|
83
|
+
};
|
|
84
|
+
vulnerabilities.push(...scanTextForPII(value, context));
|
|
85
|
+
}
|
|
86
|
+
return vulnerabilities;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check Secret resources for PII in stringData fields
|
|
90
|
+
*/
|
|
91
|
+
function checkSecretPII(resource) {
|
|
92
|
+
if (resource.kind !== 'Secret') {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
const vulnerabilities = [];
|
|
96
|
+
// Check stringData (plain text secrets)
|
|
97
|
+
const stringData = resource.stringData || {};
|
|
98
|
+
for (const [key, value] of Object.entries(stringData)) {
|
|
99
|
+
const context = {
|
|
100
|
+
resourceName: (0, parser_1.getResourceIdentifier)(resource),
|
|
101
|
+
attributePath: `stringData.${key}`,
|
|
102
|
+
line: resource.line,
|
|
103
|
+
};
|
|
104
|
+
vulnerabilities.push(...scanTextForPII(value, context));
|
|
105
|
+
}
|
|
106
|
+
// Note: We don't scan base64-encoded 'data' fields to avoid false positives
|
|
107
|
+
// The secrets-management checks already flag hardcoded secrets
|
|
108
|
+
return vulnerabilities;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Check pod environment variables for PII
|
|
112
|
+
*/
|
|
113
|
+
function checkEnvironmentVariablesPII(resource) {
|
|
114
|
+
const podSpec = (0, parser_1.getPodSpec)(resource);
|
|
115
|
+
if (!podSpec) {
|
|
116
|
+
return [];
|
|
117
|
+
}
|
|
118
|
+
const vulnerabilities = [];
|
|
119
|
+
const containers = [...(podSpec.containers || []), ...(podSpec.initContainers || [])];
|
|
120
|
+
for (const container of containers) {
|
|
121
|
+
const env = container.env || [];
|
|
122
|
+
for (const envVar of env) {
|
|
123
|
+
// Only check direct values (not secretKeyRef, configMapKeyRef, etc.)
|
|
124
|
+
if (envVar.value) {
|
|
125
|
+
const context = {
|
|
126
|
+
resourceName: (0, parser_1.getResourceIdentifier)(resource),
|
|
127
|
+
attributePath: `env.${envVar.name}`,
|
|
128
|
+
line: resource.line,
|
|
129
|
+
};
|
|
130
|
+
vulnerabilities.push(...scanTextForPII(envVar.value, context));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return vulnerabilities;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Check annotations and labels for PII
|
|
138
|
+
*/
|
|
139
|
+
function checkMetadataPII(resource) {
|
|
140
|
+
const vulnerabilities = [];
|
|
141
|
+
// Check annotations
|
|
142
|
+
const annotations = resource.metadata.annotations || {};
|
|
143
|
+
for (const [key, value] of Object.entries(annotations)) {
|
|
144
|
+
const context = {
|
|
145
|
+
resourceName: (0, parser_1.getResourceIdentifier)(resource),
|
|
146
|
+
attributePath: `annotations.${key}`,
|
|
147
|
+
line: resource.line,
|
|
148
|
+
};
|
|
149
|
+
vulnerabilities.push(...scanTextForPII(value, context));
|
|
150
|
+
}
|
|
151
|
+
// Check labels
|
|
152
|
+
const labels = resource.metadata.labels || {};
|
|
153
|
+
for (const [key, value] of Object.entries(labels)) {
|
|
154
|
+
const context = {
|
|
155
|
+
resourceName: (0, parser_1.getResourceIdentifier)(resource),
|
|
156
|
+
attributePath: `labels.${key}`,
|
|
157
|
+
line: resource.line,
|
|
158
|
+
};
|
|
159
|
+
vulnerabilities.push(...scanTextForPII(value, context));
|
|
160
|
+
}
|
|
161
|
+
return vulnerabilities;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Run all PII detection checks on a Kubernetes resource
|
|
165
|
+
*/
|
|
166
|
+
function runKubernetesPIIChecks(resource) {
|
|
167
|
+
const vulnerabilities = [];
|
|
168
|
+
// Check all resource types for metadata PII
|
|
169
|
+
vulnerabilities.push(...checkMetadataPII(resource));
|
|
170
|
+
// Check ConfigMaps
|
|
171
|
+
if (resource.kind === 'ConfigMap') {
|
|
172
|
+
vulnerabilities.push(...checkConfigMapPII(resource));
|
|
173
|
+
}
|
|
174
|
+
// Check Secrets
|
|
175
|
+
if (resource.kind === 'Secret') {
|
|
176
|
+
vulnerabilities.push(...checkSecretPII(resource));
|
|
177
|
+
}
|
|
178
|
+
// Check pod environment variables (all pod-based resources)
|
|
179
|
+
vulnerabilities.push(...checkEnvironmentVariablesPII(resource));
|
|
180
|
+
return vulnerabilities;
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=pii-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pii-detector.js","sourceRoot":"","sources":["../../../../../../../src/lib/analyzers/kubernetes/pii-detector.ts"],"names":[],"mappings":"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"}
|