← Home

@sap/cds-dk

2
Versions
License
No
Install Scripts
Missing
Provenance

Supply chain provenance

Status for the latest visible version.

No SLSA provenance npm registry signatures No source commit

Without SLSA provenance there is no cryptographic link between this tarball and the public source, so a manually published version cannot be tied back to a reviewed commit.

Maintainers

sap_extncrepossap-ospo-admin

Keywords

CAPCDSCLI

Accepted risks

Findings the reviewer chose to accept rather than block on.

SourceRuleReasonAccepted byWhen
npm-metadata bundled-binaries AI (npm-metadata): lz4-wasm compression binary in bundled deps; stable for this first-party toolkit. ai
phantom-deps phantom-dep:@cap-js/sqlite AI (phantom-deps): Config-referenced CAP db driver, not directly imported; expected. ai
semgrep semgrep:env-spread AI (semgrep): Passes env to child processes with FORCE_COLOR override; standard CLI pattern. ai
semgrep semgrep:env-exfil-stringify AI (semgrep): Deep-clones env for HDI deploy config; no network exfiltration. ai
semgrep semgrep:dynamic-require AI (semgrep): Plugin/template loader pattern; paths are local __dirname-relative. ai
semgrep semgrep:child-process-import AI (semgrep): CLI toolkit spawns commands as core functionality. ai
semgrep semgrep:eval-usage AI (semgrep): Implements `cds eval` command; user-supplied code execution by design. ai
semgrep semgrep:child-process-execsync AI (semgrep): Runs `npm root -g` to find global modules; benign CLI utility. ai
semgrep semgrep:base64-decode AI (semgrep): Decodes K8s secret data; standard K8s interaction pattern. ai
semgrep semgrep:env-bulk-read AI (semgrep): Checks WS_BASE_URL to detect BAS environment; no exfil. ai
semgrep semgrep:child-process-spawn AI (semgrep): CLI command runner; core functionality of dev toolkit. ai
phantom-deps phantom-dep:minimist AI (phantom-deps): Bundled dependency; listed in bundleDependencies. ai
phantom-deps phantom-dep:@sap/cds-fiori AI (phantom-deps): Bundled dependency; listed in bundleDependencies. ai
phantom-deps phantom-dep:@cap-js/openapi AI (phantom-deps): Bundled dependency; listed in bundleDependencies. ai

Versions (showing 2 of 2)

Version Deps Published
10.0.4 107 / 0
10.0.3 105 / 0

v10.0.4

2 findings
HIGH Bundled binary files (1) npm-metadata

Package contains compiled binaries that could be backdoors: • node_modules/lz4-wasm-nodejs/lz4_wasm_nodejs_bg.wasm

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.

v10.0.3

9 findings
HIGH env-spread: bin/up.js:60 semgrep

Spreading entire process.env into an object — may capture all secrets 58 | return execSync(cmd, { 59 | stdio: silent ? 'pipe' : 'inherit', > 60 | env: { ...process.env, FORCE_COLOR: cds.utils.colors.enabled } 61 | }) 62 | } catch (error) {

HIGH env-spread: bin/util/containerize.js:27 semgrep

Spreading entire process.env into an object — may capture all secrets 25 | return execSync(cmd, { 26 | stdio: silent ? 'pipe' : 'inherit', > 27 | env: { ...process.env, FORCE_COLOR: cds.utils.colors.enabled } 28 | }) 29 | } catch (error) {

HIGH env-exfil-stringify: lib/deploy/to-hana/hdiDeployUtil.js:13 semgrep

Serializing entire process.env — likely credential harvesting if sent over network 11 | const { clean_env, deploy } = this._loadHdiDeployLib(dbDir); 12 | > 13 | const deployerEnv = JSON.parse(JSON.stringify(process.env)); 14 | const options = deployerEnv.HDI_DEPLOY_OPTIONS ? JSON.parse(deployerEnv.HDI_DEPLOY_OPTIONS) : { parameter }; 15 | delete options.root;

HIGH env-spread: lib/mtx/util/cf.js:11 semgrep

Spreading entire process.env into an object — may capture all secrets 9 | 10 | function runCf(args, callback) { > 11 | const env = { ...process.env, LC_ALL: 'en_US.UTF-8' }; // enforce English headings 12 | return execFile('cf', args, { env }, callback); 13 | }

HIGH env-spread: lib/upgrade/preflight/project-type.js:171 semgrep

Spreading entire process.env into an object — may capture all secrets 169 | if (hasWorkspaces) return files; 170 | > 171 | const gitEnv = { ...process.env, GIT_CEILING_DIRECTORIES: path.dirname(cds.root) }; 172 | const entries = cds.utils.fs.readdirSync(cds.root, { withFileTypes: true }); 173 | for (const entry of entries) {

HIGH env-spread: lib/upgrade/preflight/project-type.js:191 semgrep

Spreading entire process.env into an object — may capture all secrets 189 | const { fs, exists } = cds.utils 190 | const files = [] > 191 | const gitEnv = { ...process.env, GIT_CEILING_DIRECTORIES: path.dirname(cds.root) } 192 | 193 | // Check root pom.xml

HIGH env-spread: lib/upgrade/steps/openrewrite.js:41 semgrep

Spreading entire process.env into an object — may capture all secrets 39 | const recipeList = recipes.map(r => r.orRecipe).join(','); 40 | const settingsPath = writeTempSettings(); > 41 | const mvnOpts = { cwd: cds.root, timeout: TIMEOUT_MS, env: { ...process.env, MAVEN_OPTS: process.env.MAVEN_OPTS || '' 42 | const args = (goal) => buildArgs(goal, settingsPath, recipeList); 43 |

HIGH env-spread: lib/upgrade/util/workspaces.js:69 semgrep

Spreading entire process.env into an object — may capture all secrets 67 | 68 | async function filterGitIgnored(paths, cds) { > 69 | const env = { ...process.env, GIT_CEILING_DIRECTORIES: path.dirname(cds.root) }; 70 | const out = []; 71 | for (const p of paths) {

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.