@socketsecurity/cli-with-sentry 1.0.103 → 1.0.105
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/cli.js +5 -3
- package/dist/cli.js.map +1 -1
- package/dist/constants.js +3 -3
- package/dist/constants.js.map +1 -1
- package/dist/tsconfig.dts.tsbuildinfo +1 -1
- package/dist/types/commands/scan/perform-reachability-analysis.d.mts.map +1 -1
- package/dist/vendor.js +2 -2
- package/external/@coana-tech/cli/cli.mjs +95 -68
- package/external/@coana-tech/cli/reachability-analyzers-cli.mjs +90 -73
- package/external/@coana-tech/cli/repos/coana-tech/alucard/alucard.jar +0 -0
- package/external/@coana-tech/cli/repos/coana-tech/goana/bin/goana-darwin-amd64.gz +0 -0
- package/external/@coana-tech/cli/repos/coana-tech/goana/bin/goana-darwin-arm64.gz +0 -0
- package/external/@coana-tech/cli/repos/coana-tech/goana/bin/goana-linux-amd64.gz +0 -0
- package/external/@coana-tech/cli/repos/coana-tech/goana/bin/goana-linux-arm64.gz +0 -0
- package/external/@coana-tech/cli/repos/coana-tech/mambalade/dist/mambalade-0.3.11-py3-none-any.whl +0 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perform-reachability-analysis.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/perform-reachability-analysis.mts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAEnE,MAAM,MAAM,mBAAmB,GAAG;IAChC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,wBAAwB,EAAE,MAAM,CAAA;IAChC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,eAAe,EAAE,SAAS,EAAE,CAAA;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACnC,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5C,CAAA;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,CAAC,EAAE,2BAA2B,GAAG,SAAS,GAChD,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"perform-reachability-analysis.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/perform-reachability-analysis.mts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAEnE,MAAM,MAAM,mBAAmB,GAAG;IAChC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,wBAAwB,EAAE,MAAM,CAAA;IAChC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,eAAe,EAAE,SAAS,EAAE,CAAA;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACnC,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5C,CAAA;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,CAAC,EAAE,2BAA2B,GAAG,SAAS,GAChD,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CA+J9C"}
|
package/dist/vendor.js
CHANGED
|
@@ -27442,7 +27442,7 @@ var isInteractiveExports = /*@__PURE__*/ requireIsInteractive();
|
|
|
27442
27442
|
var dist$e = {};
|
|
27443
27443
|
|
|
27444
27444
|
var name$2 = "@socketsecurity/sdk";
|
|
27445
|
-
var version$5 = "1.4.
|
|
27445
|
+
var version$5 = "1.4.80";
|
|
27446
27446
|
var license = "MIT";
|
|
27447
27447
|
var description = "SDK for the Socket API client";
|
|
27448
27448
|
var author = {
|
|
@@ -175287,5 +175287,5 @@ exports.terminalLinkExports = terminalLinkExports;
|
|
|
175287
175287
|
exports.updater = updater$1;
|
|
175288
175288
|
exports.yargsParser = yargsParser;
|
|
175289
175289
|
exports.yoctocolorsCjsExports = yoctocolorsCjsExports;
|
|
175290
|
-
//# debugId=
|
|
175290
|
+
//# debugId=63796303-c4df-4409-b8a5-da5950acd29d
|
|
175291
175291
|
//# sourceMappingURL=vendor.js.map
|
|
@@ -190952,25 +190952,25 @@ var Spinner = class _Spinner {
|
|
|
190952
190952
|
};
|
|
190953
190953
|
|
|
190954
190954
|
// ../utils/src/command-utils.ts
|
|
190955
|
-
async function execAndLogOnFailure(cmd, dir, options) {
|
|
190955
|
+
async function execAndLogOnFailure(cmd, dir, options, logLevel = "info") {
|
|
190956
190956
|
const result = await execNeverFail(cmd, dir, options);
|
|
190957
|
-
if (result.error) logCommandOutput(result, cmd, dir);
|
|
190957
|
+
if (result.error) logCommandOutput(result, cmd, dir, logLevel);
|
|
190958
190958
|
return !result.error;
|
|
190959
190959
|
}
|
|
190960
190960
|
async function execPipeAndLogOnFailure(cmd, dir, options) {
|
|
190961
190961
|
return execAndLogOnFailure(cmd, dir, { ...options, pipe: true });
|
|
190962
190962
|
}
|
|
190963
|
-
function logCommandOutput(cmdResult, cmd, dir) {
|
|
190963
|
+
function logCommandOutput(cmdResult, cmd, dir, logLevel = "info") {
|
|
190964
190964
|
const { error, stdout, stderr } = cmdResult;
|
|
190965
|
-
logger
|
|
190966
|
-
logger
|
|
190965
|
+
logger[logLevel](error ? `Error running command: ${cmd}` : `Result of running command: ${cmd}`);
|
|
190966
|
+
logger[logLevel](`Directory: ${dir}`);
|
|
190967
190967
|
if (error) {
|
|
190968
190968
|
const em = error.message;
|
|
190969
|
-
logger
|
|
190969
|
+
logger[logLevel](`Error: ${em?.endsWith?.(`
|
|
190970
190970
|
${stderr}`) ? em.slice(0, -stderr.length - 1) : em}`);
|
|
190971
190971
|
}
|
|
190972
|
-
logger
|
|
190973
|
-
logger
|
|
190972
|
+
logger[logLevel](`stdout: ${stdout}`);
|
|
190973
|
+
logger[logLevel](`stderr: ${stderr}`);
|
|
190974
190974
|
}
|
|
190975
190975
|
async function execNeverFail(cmd, dir, options) {
|
|
190976
190976
|
return new Promise((resolve24) => {
|
|
@@ -197761,6 +197761,14 @@ function parseSocketResponse(responseData) {
|
|
|
197761
197761
|
throw new Error(`Unexpected response type from Socket API: ${typeof responseData}`);
|
|
197762
197762
|
}
|
|
197763
197763
|
}
|
|
197764
|
+
function parseComputeArtifactsResponse(responseData) {
|
|
197765
|
+
const response = parseSocketResponse(responseData);
|
|
197766
|
+
return {
|
|
197767
|
+
artifacts: response.filter((r2) => r2.type === "artifact").map((r2) => r2.value),
|
|
197768
|
+
metadata: response.filter((r2) => r2.type === "metadata").flatMap((r2) => r2.value)
|
|
197769
|
+
// There should always only be one metadata object
|
|
197770
|
+
};
|
|
197771
|
+
}
|
|
197764
197772
|
async function createSocketTier1Scan(cliOptions, coanaCliVersion) {
|
|
197765
197773
|
try {
|
|
197766
197774
|
const url2 = getSocketApiUrl("tier1-reachability-scan");
|
|
@@ -197883,6 +197891,7 @@ async function registerAnalysisMetadataSocket(subprojectPath, workspacePath, eco
|
|
|
197883
197891
|
}
|
|
197884
197892
|
async function getLatestBucketsSocket(subprojectPath, workspacePath) {
|
|
197885
197893
|
try {
|
|
197894
|
+
if (!process.env.SOCKET_REPO_NAME || !process.env.SOCKET_BRANCH_NAME) return void 0;
|
|
197886
197895
|
const url2 = getSocketApiUrl("tier1-reachability-scan/latest-buckets");
|
|
197887
197896
|
const params = {
|
|
197888
197897
|
workspacePath,
|
|
@@ -197948,7 +197957,7 @@ async function fetchArtifactsFromManifestsTarHash(manifestsTarHash) {
|
|
|
197948
197957
|
try {
|
|
197949
197958
|
const url2 = getSocketApiUrl(`orgs/${process.env.SOCKET_ORG_SLUG}/compute-artifacts?tarHash=${manifestsTarHash}`);
|
|
197950
197959
|
const responseData = (await axios2.post(url2, {}, { headers: getAuthHeaders() })).data;
|
|
197951
|
-
return
|
|
197960
|
+
return parseComputeArtifactsResponse(responseData);
|
|
197952
197961
|
} catch (e) {
|
|
197953
197962
|
if (e instanceof AxiosError2) {
|
|
197954
197963
|
prettyPrintAxiosError(e);
|
|
@@ -197975,23 +197984,20 @@ async function computeSocketFactArtifacts(rootDir, relativeManifestFilePaths) {
|
|
|
197975
197984
|
if (!uploadData.tarHash) {
|
|
197976
197985
|
throw new Error("No tarHash received from upload-manifest-files response");
|
|
197977
197986
|
}
|
|
197978
|
-
|
|
197979
|
-
`orgs/${process.env.SOCKET_ORG_SLUG}/compute-artifacts?tarHash=${uploadData.tarHash}`
|
|
197980
|
-
);
|
|
197981
|
-
const computeResponse = await axios2.post(computeUrl, {}, { headers: getAuthHeaders() });
|
|
197982
|
-
const responseData = computeResponse.data;
|
|
197983
|
-
return parseSocketResponse(responseData);
|
|
197987
|
+
return (await fetchArtifactsFromManifestsTarHash(uploadData.tarHash)).artifacts;
|
|
197984
197988
|
} catch (error) {
|
|
197985
197989
|
logger.warn("Failed to compute socket fact artifacts", error);
|
|
197986
197990
|
return void 0;
|
|
197987
197991
|
}
|
|
197988
197992
|
}
|
|
197989
|
-
async function registerAutofixOrUpgradePurlRun(manifestsTarHash,
|
|
197993
|
+
async function registerAutofixOrUpgradePurlRun(manifestsTarHash, options, cliCommand) {
|
|
197990
197994
|
try {
|
|
197991
197995
|
const url2 = getSocketApiUrl(`orgs/${process.env.SOCKET_ORG_SLUG}/fixes/register-autofix-or-upgrade-cli-run`);
|
|
197992
197996
|
const data2 = {
|
|
197993
197997
|
manifestsTarHash,
|
|
197994
|
-
|
|
197998
|
+
// disabling rule to also catch case where process.env.SOCKET_REPO_NAME is the empty string.
|
|
197999
|
+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
198000
|
+
repositoryName: process.env.SOCKET_REPO_NAME || "unknown-repo",
|
|
197995
198001
|
options,
|
|
197996
198002
|
cliCommand
|
|
197997
198003
|
};
|
|
@@ -205296,23 +205302,23 @@ var Spinner2 = class _Spinner {
|
|
|
205296
205302
|
};
|
|
205297
205303
|
|
|
205298
205304
|
// ../utils/dist/command-utils.js
|
|
205299
|
-
async function execAndLogOnFailure2(cmd, dir, options) {
|
|
205305
|
+
async function execAndLogOnFailure2(cmd, dir, options, logLevel = "info") {
|
|
205300
205306
|
const result = await execNeverFail2(cmd, dir, options);
|
|
205301
205307
|
if (result.error)
|
|
205302
|
-
logCommandOutput2(result, cmd, dir);
|
|
205308
|
+
logCommandOutput2(result, cmd, dir, logLevel);
|
|
205303
205309
|
return !result.error;
|
|
205304
205310
|
}
|
|
205305
|
-
function logCommandOutput2(cmdResult, cmd, dir) {
|
|
205311
|
+
function logCommandOutput2(cmdResult, cmd, dir, logLevel = "info") {
|
|
205306
205312
|
const { error, stdout, stderr } = cmdResult;
|
|
205307
|
-
logger
|
|
205308
|
-
logger
|
|
205313
|
+
logger[logLevel](error ? `Error running command: ${cmd}` : `Result of running command: ${cmd}`);
|
|
205314
|
+
logger[logLevel](`Directory: ${dir}`);
|
|
205309
205315
|
if (error) {
|
|
205310
205316
|
const em = error.message;
|
|
205311
|
-
logger
|
|
205317
|
+
logger[logLevel](`Error: ${em?.endsWith?.(`
|
|
205312
205318
|
${stderr}`) ? em.slice(0, -stderr.length - 1) : em}`);
|
|
205313
205319
|
}
|
|
205314
|
-
logger
|
|
205315
|
-
logger
|
|
205320
|
+
logger[logLevel](`stdout: ${stdout}`);
|
|
205321
|
+
logger[logLevel](`stderr: ${stderr}`);
|
|
205316
205322
|
}
|
|
205317
205323
|
async function execNeverFail2(cmd, dir, options) {
|
|
205318
205324
|
return new Promise((resolve24) => {
|
|
@@ -206483,18 +206489,19 @@ import { access as access2, cp, readdir as readdir3, stat as stat2 } from "fs/pr
|
|
|
206483
206489
|
import { basename as basename4, join as join11, relative as relative6, resolve as resolve13 } from "path";
|
|
206484
206490
|
var { uniq } = import_lodash5.default;
|
|
206485
206491
|
var { isMatch } = import_micromatch.default;
|
|
206486
|
-
function
|
|
206487
|
-
let curr = dir;
|
|
206488
|
-
let last2 = dir;
|
|
206492
|
+
function* parents(dir) {
|
|
206493
|
+
let [curr, last2] = [dir, dir];
|
|
206489
206494
|
do {
|
|
206490
|
-
|
|
206491
|
-
|
|
206492
|
-
return curr;
|
|
206493
|
-
last2 = curr;
|
|
206494
|
-
curr = resolve13(curr, "..");
|
|
206495
|
+
yield curr;
|
|
206496
|
+
[last2, curr] = [curr, resolve13(curr, "..")];
|
|
206495
206497
|
} while (curr !== last2);
|
|
206496
206498
|
return void 0;
|
|
206497
206499
|
}
|
|
206500
|
+
function findParent(dir, predicate, wholePath) {
|
|
206501
|
+
for (const parent2 of parents(dir))
|
|
206502
|
+
if (predicate(wholePath ? parent2 : basename4(parent2)))
|
|
206503
|
+
return parent2;
|
|
206504
|
+
}
|
|
206498
206505
|
|
|
206499
206506
|
// ../utils/dist/constants.js
|
|
206500
206507
|
var { once: once2 } = import_lodash6.default;
|
|
@@ -207378,17 +207385,18 @@ import { access as access3, cp as cp2, readdir as readdir4, stat as stat3 } from
|
|
|
207378
207385
|
import { basename as basename5, join as join16, relative as relative7, resolve as resolve15 } from "path";
|
|
207379
207386
|
var { uniq: uniq2 } = import_lodash8.default;
|
|
207380
207387
|
var { isMatch: isMatch2 } = import_micromatch2.default;
|
|
207381
|
-
function
|
|
207382
|
-
let curr = dir;
|
|
207383
|
-
let last2 = dir;
|
|
207388
|
+
function* parents2(dir) {
|
|
207389
|
+
let [curr, last2] = [dir, dir];
|
|
207384
207390
|
do {
|
|
207385
|
-
|
|
207386
|
-
|
|
207387
|
-
last2 = curr;
|
|
207388
|
-
curr = resolve15(curr, "..");
|
|
207391
|
+
yield curr;
|
|
207392
|
+
[last2, curr] = [curr, resolve15(curr, "..")];
|
|
207389
207393
|
} while (curr !== last2);
|
|
207390
207394
|
return void 0;
|
|
207391
207395
|
}
|
|
207396
|
+
function findParent2(dir, predicate, wholePath) {
|
|
207397
|
+
for (const parent2 of parents2(dir))
|
|
207398
|
+
if (predicate(wholePath ? parent2 : basename5(parent2))) return parent2;
|
|
207399
|
+
}
|
|
207392
207400
|
async function getFilesRelative(dir, excludeDirs) {
|
|
207393
207401
|
async function helper(subDir, arrayOfFiles) {
|
|
207394
207402
|
for (const item of await readdir4(join16(dir, subDir), { withFileTypes: true })) {
|
|
@@ -209354,6 +209362,7 @@ import { join as join20, resolve as resolve18 } from "path";
|
|
|
209354
209362
|
import util3 from "util";
|
|
209355
209363
|
var { once: once7 } = import_lodash13.default;
|
|
209356
209364
|
var systemPython = once7(() => execFileSync2("which", ["python"], { encoding: "utf8" }).trim());
|
|
209365
|
+
var hasPyenv = once7(async () => !(await execNeverFail("which pyenv")).error);
|
|
209357
209366
|
|
|
209358
209367
|
// ../utils/src/pip-utils.ts
|
|
209359
209368
|
async function isSetupPySetuptools(file) {
|
|
@@ -210102,8 +210111,8 @@ function getVulnerabilityDependencyType(vulnChainDetails, directDependencies, af
|
|
|
210102
210111
|
finalDepType = depType;
|
|
210103
210112
|
}
|
|
210104
210113
|
}
|
|
210105
|
-
const
|
|
210106
|
-
for (const p3 of
|
|
210114
|
+
const parents4 = vcd.parentsMap.get(devIdentifier);
|
|
210115
|
+
for (const p3 of parents4 ?? []) {
|
|
210107
210116
|
if (p3 === ROOT_NODE_STR) continue;
|
|
210108
210117
|
const parentNode = vcd.transitiveDependencies[p3];
|
|
210109
210118
|
if (afd && !afd.has(parentNode)) continue;
|
|
@@ -210225,17 +210234,17 @@ function computeVulnChainDetails(dependencyTree, dependencyIdentifier, parentsMa
|
|
|
210225
210234
|
function addNode(currentIdentifier, childIdentifier, visited) {
|
|
210226
210235
|
if (visited.has(currentIdentifier))
|
|
210227
210236
|
return;
|
|
210228
|
-
const
|
|
210237
|
+
const parents4 = parentsMap.get(currentIdentifier);
|
|
210229
210238
|
const newCurrentNode = transformToVulnChainNode(dependencyTree.transitiveDependencies[currentIdentifier]);
|
|
210230
210239
|
res.transitiveDependencies[currentIdentifier] = newCurrentNode;
|
|
210231
210240
|
if (childIdentifier && !newCurrentNode.children.includes(childIdentifier))
|
|
210232
210241
|
newCurrentNode.children.push(childIdentifier);
|
|
210233
210242
|
if (!childIdentifier)
|
|
210234
210243
|
newCurrentNode.vulnerable = true;
|
|
210235
|
-
if (!
|
|
210244
|
+
if (!parents4)
|
|
210236
210245
|
return res;
|
|
210237
210246
|
visited.add(currentIdentifier);
|
|
210238
|
-
for (const parent2 of
|
|
210247
|
+
for (const parent2 of parents4) {
|
|
210239
210248
|
if (parent2 === ROOT_IDENTIFIER)
|
|
210240
210249
|
res.children.push(currentIdentifier);
|
|
210241
210250
|
else
|
|
@@ -210339,8 +210348,14 @@ function getAllToplevelAncestors(artifactMap, artifactId) {
|
|
|
210339
210348
|
async function fetchArtifactsFromSocket(rootWorkingDirectory, manifestsTarHash) {
|
|
210340
210349
|
logger.info("Fetching artifacts from Socket backend using manifests tar hash", manifestsTarHash);
|
|
210341
210350
|
try {
|
|
210342
|
-
const artifacts = await fetchArtifactsFromManifestsTarHash(manifestsTarHash);
|
|
210351
|
+
const { artifacts } = await fetchArtifactsFromManifestsTarHash(manifestsTarHash);
|
|
210343
210352
|
const properPythonProjects = [];
|
|
210353
|
+
const pipArtifactToRepresentativeManifest = {};
|
|
210354
|
+
for (const artifact of artifacts) {
|
|
210355
|
+
if (artifact.type === "pypi" && artifact.manifestFiles) {
|
|
210356
|
+
pipArtifactToRepresentativeManifest[simplePurl(artifact.type, artifact.namespace ?? "", artifact.name, artifact.version ?? "")] = artifact;
|
|
210357
|
+
}
|
|
210358
|
+
}
|
|
210344
210359
|
const venvExcludes = [
|
|
210345
210360
|
"venv",
|
|
210346
210361
|
".venv",
|
|
@@ -210379,6 +210394,11 @@ async function fetchArtifactsFromSocket(rootWorkingDirectory, manifestsTarHash)
|
|
|
210379
210394
|
const ecosystemToWorkspaceToVulnerabilities = {};
|
|
210380
210395
|
const purlsFailedToFindWorkspace = /* @__PURE__ */ new Set();
|
|
210381
210396
|
for (const artifact of artifacts) {
|
|
210397
|
+
let processToplevelAncestors2 = function(artifact2) {
|
|
210398
|
+
const allAncestorIds = getAllToplevelAncestors(artifactMap, artifact2.id);
|
|
210399
|
+
allAncestorIds.forEach((ancestorId) => artifactMap.get(ancestorId)?.manifestFiles?.forEach((ref) => manifestFiles.push(ref.file)));
|
|
210400
|
+
};
|
|
210401
|
+
var processToplevelAncestors = processToplevelAncestors2;
|
|
210382
210402
|
const ecosystem = getAdvisoryEcosystemFromPurlType(artifact.type);
|
|
210383
210403
|
if (!ecosystem)
|
|
210384
210404
|
continue;
|
|
@@ -210392,10 +210412,17 @@ async function fetchArtifactsFromSocket(rootWorkingDirectory, manifestsTarHash)
|
|
|
210392
210412
|
manifestFiles.push(...(await getFilesRelative(rootWorkingDirectory)).filter((file) => (0, import_picomatch2.default)("{*.csproj,packages.lock.json}")(basename7(file))));
|
|
210393
210413
|
break;
|
|
210394
210414
|
}
|
|
210415
|
+
case "PIP": {
|
|
210416
|
+
const sPurl = simplePurl(artifact.type, artifact.namespace ?? "", artifact.name, artifact.version ?? "");
|
|
210417
|
+
if (pipArtifactToRepresentativeManifest[sPurl]) {
|
|
210418
|
+
manifestFiles.push(...(pipArtifactToRepresentativeManifest[sPurl].manifestFiles ?? []).map((ref) => ref.file));
|
|
210419
|
+
}
|
|
210420
|
+
processToplevelAncestors2(artifact);
|
|
210421
|
+
break;
|
|
210422
|
+
}
|
|
210395
210423
|
default: {
|
|
210396
210424
|
artifact.manifestFiles?.forEach((ref) => manifestFiles.push(ref.file));
|
|
210397
|
-
|
|
210398
|
-
allAncestorIds.forEach((ancestorId) => artifactMap.get(ancestorId)?.manifestFiles?.forEach((ref) => manifestFiles.push(ref.file)));
|
|
210425
|
+
processToplevelAncestors2(artifact);
|
|
210399
210426
|
break;
|
|
210400
210427
|
}
|
|
210401
210428
|
}
|
|
@@ -210493,7 +210520,7 @@ function computeVulnChainDetails2(artifacts, vulnerableArtifactId) {
|
|
|
210493
210520
|
const currentArtifact = artifactMap.get(currentId);
|
|
210494
210521
|
if (!currentArtifact)
|
|
210495
210522
|
return;
|
|
210496
|
-
const
|
|
210523
|
+
const parents4 = parentsMap.get(currentId);
|
|
210497
210524
|
const newCurrentNode = {
|
|
210498
210525
|
packageName: getNameFromNamespaceAndName(currentArtifact.type, currentArtifact.namespace, currentArtifact.name),
|
|
210499
210526
|
version: currentArtifact.version ?? void 0,
|
|
@@ -210512,8 +210539,8 @@ function computeVulnChainDetails2(artifacts, vulnerableArtifactId) {
|
|
|
210512
210539
|
}
|
|
210513
210540
|
}
|
|
210514
210541
|
visited.add(currentId);
|
|
210515
|
-
if (
|
|
210516
|
-
for (const parentId of
|
|
210542
|
+
if (parents4) {
|
|
210543
|
+
for (const parentId of parents4) {
|
|
210517
210544
|
addNode(parentId, currentId, visited);
|
|
210518
210545
|
}
|
|
210519
210546
|
}
|
|
@@ -213022,7 +213049,7 @@ __export(traversing_exports, {
|
|
|
213022
213049
|
nextUntil: () => nextUntil,
|
|
213023
213050
|
not: () => not,
|
|
213024
213051
|
parent: () => parent,
|
|
213025
|
-
parents: () =>
|
|
213052
|
+
parents: () => parents3,
|
|
213026
213053
|
parentsUntil: () => parentsUntil,
|
|
213027
213054
|
prev: () => prev,
|
|
213028
213055
|
prevAll: () => prevAll,
|
|
@@ -214284,7 +214311,7 @@ function _removeDuplicates(elems) {
|
|
|
214284
214311
|
return Array.from(new Set(elems));
|
|
214285
214312
|
}
|
|
214286
214313
|
var parent = _singleMatcher(({ parent: parent2 }) => parent2 && !isDocument(parent2) ? parent2 : null, _removeDuplicates);
|
|
214287
|
-
var
|
|
214314
|
+
var parents3 = _matcher((elem) => {
|
|
214288
214315
|
const matched = [];
|
|
214289
214316
|
while (elem.parent && !isDocument(elem.parent)) {
|
|
214290
214317
|
matched.push(elem.parent);
|
|
@@ -225028,10 +225055,10 @@ var FixesTask = class {
|
|
|
225028
225055
|
return;
|
|
225029
225056
|
}
|
|
225030
225057
|
}
|
|
225031
|
-
const
|
|
225058
|
+
const parents4 = this.getParents(pId, vulnChainDetails);
|
|
225032
225059
|
let allowedVersionsForCId = potentialVersionsForFix[cId] ? [...potentialVersionsForFix[cId]] : await this.getSafeVersionsOfPackage(vulnChainDetails.transitiveDependencies[cId].packageName);
|
|
225033
|
-
if (
|
|
225034
|
-
for (const parent2 of
|
|
225060
|
+
if (parents4.length !== 0) {
|
|
225061
|
+
for (const parent2 of parents4) {
|
|
225035
225062
|
await computeFix(parent2, pId, [key, ...visited]);
|
|
225036
225063
|
if (res[pId])
|
|
225037
225064
|
allowedVersionsForCId = await this.filterVersionsAllowedByParent(pId, res[pId], cId, allowedVersionsForCId);
|
|
@@ -225060,11 +225087,11 @@ var FixesTask = class {
|
|
|
225060
225087
|
const deps = vulnChainDetails.transitiveDependencies;
|
|
225061
225088
|
const vulnerablePackageIdentifiers = Object.entries(deps ?? []).filter(([_identifier, node]) => node.vulnerable).map(([identifier, _node]) => identifier);
|
|
225062
225089
|
for (const pId of vulnerablePackageIdentifiers) {
|
|
225063
|
-
const
|
|
225064
|
-
if (
|
|
225090
|
+
const parents4 = this.getParents(pId, vulnChainDetails);
|
|
225091
|
+
if (parents4.length === 0) {
|
|
225065
225092
|
pickVersionWrapper(pId, [...potentialVersionsForFix[pId]]);
|
|
225066
225093
|
} else {
|
|
225067
|
-
for (const parent2 of
|
|
225094
|
+
for (const parent2 of parents4) {
|
|
225068
225095
|
await computeFix(parent2, pId, []);
|
|
225069
225096
|
}
|
|
225070
225097
|
}
|
|
@@ -225125,9 +225152,9 @@ var FixesTask = class {
|
|
|
225125
225152
|
safeVersionsForC
|
|
225126
225153
|
);
|
|
225127
225154
|
const vs = await filterVersions(pId, versionsOfPAllowingSomeSafeVersions);
|
|
225128
|
-
const
|
|
225129
|
-
if (
|
|
225130
|
-
for (const parent2 of
|
|
225155
|
+
const parents4 = this.getParents(pId, vuln.vulnChainDetails);
|
|
225156
|
+
if (parents4.length !== 0) {
|
|
225157
|
+
for (const parent2 of parents4) {
|
|
225131
225158
|
await computePotentialVersionsForFixWithCache(parent2, pId, vs);
|
|
225132
225159
|
}
|
|
225133
225160
|
} else {
|
|
@@ -225139,17 +225166,17 @@ var FixesTask = class {
|
|
|
225139
225166
|
const deps = vuln.vulnChainDetails?.transitiveDependencies;
|
|
225140
225167
|
const vulnerablePackageIdentifiers = Object.entries(deps ?? []).filter(([_identifier, node]) => node.vulnerable).map(([identifier, _node]) => identifier);
|
|
225141
225168
|
for (const pId of vulnerablePackageIdentifiers) {
|
|
225142
|
-
const
|
|
225169
|
+
const parents4 = this.getParents(pId, vuln.vulnChainDetails);
|
|
225143
225170
|
const safeVersionsForVulnerablePackage = await safeVersions(pId);
|
|
225144
225171
|
const { upgrades, downgrades } = this.groupVersionsInUpgradesAndDowngrades(
|
|
225145
225172
|
assertDefined(this.packageStructure.transitiveDependencies[pId].version),
|
|
225146
225173
|
safeVersionsForVulnerablePackage
|
|
225147
225174
|
);
|
|
225148
|
-
if (
|
|
225175
|
+
if (parents4.length === 0) {
|
|
225149
225176
|
if (upgrades.length > 0) res[pId] = upgrades;
|
|
225150
225177
|
else if (downgrades.length > 0) res[pId] = downgrades;
|
|
225151
225178
|
} else {
|
|
225152
|
-
for (const parent2 of
|
|
225179
|
+
for (const parent2 of parents4) {
|
|
225153
225180
|
const resClone = { ...res };
|
|
225154
225181
|
const alreadyComputedCacheClone = new Map(alreadyComputedCache);
|
|
225155
225182
|
try {
|
|
@@ -225583,7 +225610,7 @@ async function onlineScan(dependencyTree, apiKey, timeout) {
|
|
|
225583
225610
|
}
|
|
225584
225611
|
|
|
225585
225612
|
// dist/version.js
|
|
225586
|
-
var version2 = "14.12.
|
|
225613
|
+
var version2 = "14.12.10";
|
|
225587
225614
|
|
|
225588
225615
|
// dist/cli-core.js
|
|
225589
225616
|
var { mapValues, omit, partition, pick } = import_lodash15.default;
|
|
@@ -226274,7 +226301,7 @@ async function upgradePurl(path2, upgrades, options, logFile, cliFixRunId) {
|
|
|
226274
226301
|
logger.silent = options.silent;
|
|
226275
226302
|
let cliRunId = cliFixRunId;
|
|
226276
226303
|
if (!cliRunId && options.manifestsTarHash) {
|
|
226277
|
-
cliRunId = await getSocketAPI().registerAutofixOrUpgradePurlRun(options.manifestsTarHash,
|
|
226304
|
+
cliRunId = await getSocketAPI().registerAutofixOrUpgradePurlRun(options.manifestsTarHash, options, "upgrade-purls");
|
|
226278
226305
|
}
|
|
226279
226306
|
const upgradePurlRunId = cliRunId && await getSocketAPI().registerUpgradePurlRun(cliRunId, upgrades);
|
|
226280
226307
|
Spinner.instance({ text: "Running Coana Upgrade Purl CLI", isSilent: options.silent }).start();
|
|
@@ -226404,7 +226431,7 @@ ${vulnerabilityFixes.map((fix) => ` ${fix.dependencyName} from ${fix.currentVers
|
|
|
226404
226431
|
|
|
226405
226432
|
// dist/cli-compute-fixes-and-upgrade-purls.js
|
|
226406
226433
|
async function computeFixesAndUpgradePurls(path2, options, logFile) {
|
|
226407
|
-
const autofixRunId = options.manifestsTarHash && await getSocketAPI().registerAutofixOrUpgradePurlRun(options.manifestsTarHash,
|
|
226434
|
+
const autofixRunId = options.manifestsTarHash && await getSocketAPI().registerAutofixOrUpgradePurlRun(options.manifestsTarHash, options, "autofix");
|
|
226408
226435
|
const { artifacts, ghsaToVulnerableArtifactIds } = await computeInputForComputingFixes(path2, options);
|
|
226409
226436
|
if (Object.keys(ghsaToVulnerableArtifactIds).length === 0) {
|
|
226410
226437
|
logger.info("No vulnerabilities to compute fixes for");
|