Skip to content

Commit

Permalink
obfuscate authorization header by default
Browse files Browse the repository at this point in the history
  • Loading branch information
SOOS-JAlvarez committed Feb 2, 2024
1 parent 8521ea9 commit cc5f50b
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 15 deletions.
19 changes: 4 additions & 15 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {
IntegrationType,
} from "@soos-io/api-client";
import { version } from "../package.json";
import { ZAPCommandGenerator } from "./utilities";
import { ZAPCommandGenerator, ZAPReportTransformer } from "./utilities";
import AnalysisService from "@soos-io/api-client/dist/services/AnalysisService";
import AnalysisArgumentParser, {
IBaseScanArguments,
Expand Down Expand Up @@ -324,23 +324,12 @@ class SOOSDASTAnalysis {
const runSuccess = fs.existsSync(SOOS_DAST_CONSTANTS.Files.ReportScanResultFile);
soosLogger.info(`Scan finished with success: ${runSuccess}`);

const discoveredUrls =
fs.existsSync(SOOS_DAST_CONSTANTS.Files.SpideredUrlsFile) &&
fs.statSync(SOOS_DAST_CONSTANTS.Files.SpideredUrlsFile).isFile()
? fs
.readFileSync(SOOS_DAST_CONSTANTS.Files.SpideredUrlsFile, "utf-8")
.split("\n")
.filter((url) => url.trim() !== "")
: [];

const data = JSON.parse(
fs.readFileSync(SOOS_DAST_CONSTANTS.Files.ReportScanResultFile, "utf-8"),
);
data["discoveredUrls"] = discoveredUrls;
fs.writeFileSync(
SOOS_DAST_CONSTANTS.Files.ReportScanResultFile,
JSON.stringify(data, null, 4),
);

ZAPReportTransformer.transformReport();

const formData = new FormData();

formData.append("resultVersion", data["@version"]);
Expand Down
51 changes: 51 additions & 0 deletions src/utilities/ZAPReportTransformer.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import * as fs from "fs";
import { SOOS_DAST_CONSTANTS } from "../constants";

export class ZAPReportTransformer {
// TODO - PA-12868 Rework this approach
public static transformReport(): void {
const reportData = JSON.parse(
fs.readFileSync(SOOS_DAST_CONSTANTS.Files.ReportScanResultFile, "utf-8"),
);

this.addDiscoveredUrls(reportData);
this.obfuscateFields(reportData);
this.saveReportContent(reportData);
}

public static addDiscoveredUrls(reportData: any): void {
const discoveredUrls =
fs.existsSync(SOOS_DAST_CONSTANTS.Files.SpideredUrlsFile) &&
fs.statSync(SOOS_DAST_CONSTANTS.Files.SpideredUrlsFile).isFile()
? fs
.readFileSync(SOOS_DAST_CONSTANTS.Files.SpideredUrlsFile, "utf-8")
.split("\n")
.filter((url) => url.trim() !== "")
: [];

reportData["discoveredUrls"] = discoveredUrls;
}

public static obfuscateFields(reportData: any): void {
for (let key in reportData) {
if (typeof reportData[key] === "object" && reportData[key] !== null) {
this.obfuscateFields(reportData[key]);
} else {
if (key === "request-header") {
reportData[key] = this.obfuscateBearerToken(reportData[key]);
}
}
}
}

private static obfuscateBearerToken(field: string): string {
return field.replace(/(Authorization:\s*)[^\r\n]+/, "$1****");
}

private static saveReportContent = (reportData: any) => {
fs.writeFileSync(
SOOS_DAST_CONSTANTS.Files.ReportScanResultFile,
JSON.stringify(reportData, null, 4),
);
};
}
1 change: 1 addition & 0 deletions src/utilities/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * from "./ZAPCommandGenerator";
export * from "./ZAPReportTransformer";

0 comments on commit cc5f50b

Please sign in to comment.