Skip to content

Commit b1d67a4

Browse files
authored
feat(isRequire): Unsafe-import for prebuilt-install binary file (#429)
1 parent d83087f commit b1d67a4

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

.changeset/metal-poets-type.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@nodesecure/js-x-ray": minor
3+
---
4+
5+
feat(isRequire): Unsafe-import for prebuilt-install binary file

workspaces/js-x-ray/src/probes/isRequire/RequireCallExpressionWalker.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ export class RequireCallExpressionWalker {
7777
self.#handleRequireResolve(rootArgument);
7878
break;
7979
case "path.join":
80+
case "path.resolve":
8081
self.#handlePathJoin(castedNode);
8182
break;
8283
}

workspaces/js-x-ray/test/probes/isRequire.spec.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,3 +396,19 @@ test("(require CallExpression): it should detect obfuscated atob value", () => {
396396
assert.strictEqual(dependencies.size, 1);
397397
assert.ok(dependencies.has("os"));
398398
});
399+
400+
test("(require CallExpression): it should not have an unsafe-import for a correct path.resolve", () => {
401+
const str = `
402+
const pkg = require(path.resolve('package.json'));
403+
`;
404+
405+
const ast = parseScript(str);
406+
const sastAnalysis = getSastAnalysis(isRequire)
407+
.execute(ast.body);
408+
409+
assert.strictEqual(sastAnalysis.warnings().length, 0);
410+
411+
const dependencies = sastAnalysis.dependencies();
412+
assert.strictEqual(dependencies.size, 1);
413+
assert.ok(dependencies.has("package.json"));
414+
});

0 commit comments

Comments
 (0)