Skip to content

Commit 499c077

Browse files
committed
Cascading Scans: merge environment variables from parent scan and cascading rule
Signed-off-by: Jop Zitman <jop-zitman@hotmail.com>
1 parent cff9af4 commit 499c077

3 files changed

Lines changed: 96 additions & 9 deletions

File tree

hooks/cascading-scans/hook.test.js

Lines changed: 94 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ test("Should create subsequent scans for open HTTPS ports (NMAP findings)", () =
8181
Array [
8282
Object {
8383
"cascades": Object {},
84-
"env": undefined,
84+
"env": Array [],
8585
"finding": Object {
8686
"attributes": Object {
8787
"hostname": "foobar.com",
@@ -154,7 +154,7 @@ test("Should not try to do magic to the scan name if its something random", () =
154154
Array [
155155
Object {
156156
"cascades": Object {},
157-
"env": undefined,
157+
"env": Array [],
158158
"finding": Object {
159159
"attributes": Object {
160160
"hostname": undefined,
@@ -232,7 +232,7 @@ test("Should not crash when the annotations are not set", () => {
232232
Array [
233233
Object {
234234
"cascades": Object {},
235-
"env": undefined,
235+
"env": Array [],
236236
"finding": Object {
237237
"attributes": Object {
238238
"hostname": "foobar.com",
@@ -374,7 +374,7 @@ test("Should allow wildcards in cascadingRules", () => {
374374
Array [
375375
Object {
376376
"cascades": Object {},
377-
"env": undefined,
377+
"env": Array [],
378378
"finding": Object {
379379
"attributes": Object {
380380
"hostname": "foobar.com",
@@ -642,7 +642,7 @@ test("should copy scanLabels from CascadingRule to cascading scan", () => {
642642
Array [
643643
Object {
644644
"cascades": Object {},
645-
"env": undefined,
645+
"env": Array [],
646646
"finding": Object {
647647
"attributes": Object {
648648
"hostname": "foobar.com",
@@ -707,7 +707,7 @@ test("should copy scanAnnotations from CascadingRule to cascading scan", () => {
707707
Array [
708708
Object {
709709
"cascades": Object {},
710-
"env": undefined,
710+
"env": Array [],
711711
"finding": Object {
712712
"attributes": Object {
713713
"hostname": "foobar.com",
@@ -825,7 +825,7 @@ test("should copy proper finding ID into annotations", () => {
825825
Array [
826826
Object {
827827
"cascades": Object {},
828-
"env": undefined,
828+
"env": Array [],
829829
"finding": Object {
830830
"attributes": Object {
831831
"hostname": "foobar.com",
@@ -859,3 +859,90 @@ test("should copy proper finding ID into annotations", () => {
859859
}
860860
)).toBe(true)
861861
});
862+
863+
test("should merge environment variables into cascaded scan", () => {
864+
const findings = [
865+
{
866+
name: "Port 443 is open",
867+
category: "Open Port",
868+
attributes: {
869+
state: "open",
870+
hostname: "foobar.com",
871+
port: 443,
872+
service: "https"
873+
}
874+
}
875+
];
876+
877+
parentScan.spec.env = [
878+
{
879+
"name": "parent_environment_variable_name",
880+
"value": "parent_environment_variable_value"
881+
}
882+
]
883+
884+
sslyzeCascadingRules[0].spec.scanSpec.env = [
885+
{
886+
"name": "rule_environment_variable_name",
887+
"value": "rule_environment_variable_value"
888+
}
889+
]
890+
891+
const cascadedScans = getCascadingScans(
892+
parentScan,
893+
findings,
894+
sslyzeCascadingRules
895+
);
896+
897+
const cascadedScan = cascadedScans[0]
898+
899+
expect(cascadedScans).toMatchInlineSnapshot(`
900+
Array [
901+
Object {
902+
"cascades": Object {},
903+
"env": Array [
904+
Object {
905+
"name": "rule_environment_variable_name",
906+
"value": "rule_environment_variable_value",
907+
},
908+
],
909+
"finding": Object {
910+
"attributes": Object {
911+
"hostname": "foobar.com",
912+
"port": 443,
913+
"service": "https",
914+
"state": "open",
915+
},
916+
"category": "Open Port",
917+
"name": "Port 443 is open",
918+
},
919+
"generatedBy": "tls-scans",
920+
"name": "sslyze-foobar.com-tls-scans",
921+
"parameters": Array [
922+
"--regular",
923+
"foobar.com:443",
924+
],
925+
"scanAnnotations": Object {},
926+
"scanLabels": Object {},
927+
"scanType": "sslyze",
928+
"volumeMounts": Array [],
929+
"volumes": Array [],
930+
},
931+
]
932+
`);
933+
934+
const cascadingScanDefinition = getCascadingScanDefinition(cascadedScan, parentScan);
935+
936+
expect(cascadingScanDefinition.spec.env).toMatchInlineSnapshot(`
937+
Array [
938+
Object {
939+
"name": "rule_environment_variable_name",
940+
"value": "rule_environment_variable_value",
941+
},
942+
Object {
943+
"name": "parent_environment_variable_name",
944+
"value": "parent_environment_variable_value",
945+
},
946+
]
947+
`);
948+
});

hooks/cascading-scans/hook.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ function getCascadingScan(
100100
finding: Finding,
101101
cascadingRule: CascadingRule
102102
) {
103-
const { scanType, parameters, env } = cascadingRule.spec.scanSpec;
103+
const { scanType, parameters, env = [] } = cascadingRule.spec.scanSpec;
104104

105105
const templateArgs = {
106106
...finding,

hooks/cascading-scans/scan-helpers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ export function getCascadingScanDefinition({
153153
scanType,
154154
parameters,
155155
cascades,
156-
env,
156+
env: env.concat(parentScan.spec.env || []),
157157
}
158158
};
159159
}

0 commit comments

Comments
 (0)