SAP / SAP/cloud-sdk-js

[FIPS] connectivity: jks-js pulls non-FIPS crypto (MD5, SHA-1, DES) into all consumers

Open
#6,959 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature request
Dominant language
TypeScript
Stars
219
Forks
74
Avg merge
1d 2h
Merged PRs (30d)
60

Description

Summary

@sap-cloud-sdk/connectivity unconditionally depends on jks-js, which brings node-forge and node-rsa into the production dependency tree of every consumer. These three packages implement non-FIPS algorithms (MD5, SHA-1, DES, 3DES, AES-ECB, RIPEMD-160, RSA+MD5, RSA+SHA-1) in pure JavaScript, bypassing the OpenSSL FIPS provider. Any consumer that must pass a FIPS compliance scan (including SAP Datasphere) is blocked.

Dependency chain

@sap-cloud-sdk/connectivity@4.9.1
  → jks-js@1.1.7          (MD5, SHA-1, DES via node-forge)
    → node-forge@1.4.0    (MD5, SHA-1, DES, 3DES, AES-ECB, RIPEMD-160)
    → node-rsa@1.1.1      (RSA+MD5, RSA+SHA-1)

jks-js was introduced in #6153 (commit ab96aff) to add JKS keystore support. Verified against latest @sap-cloud-sdk/connectivity@4.9.1 — still present.

Impact

Consumers that only use PEM certificates never reach the JKS code path at runtime, but the non-FIPS packages remain in node_modules and are flagged by FIPS compliance scanners. Example: SAP Datasphere's @sap/dwc-ucl-odata-client uses ClientCertificateAuthentication with type: 'pem' exclusively — no JKS use — yet is still blocked.

Tracked internally: DC00-6780 (parent evaluation), DC00-6815 (Datasphere remediation).

Suggested fix

Escalate to @sap-cloud-sdk maintainers to either:

  1. Replace jks-js with a FIPS-compatible JKS keystore parser, or
  2. Make JKS support opt-in so services that don't use it avoid the dependency entirely.

Ask

  • Confirm which direction the team prefers.
  • Provide a rough timeline so downstream consumers can plan.

cc: @davidkna-sap @KavithaSiva @emincihangeri

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the @sap-cloud-sdk/connectivity dependency chain and the JKS support introduced in #6153, including commit ab96aff. Compare replacing jks-js with a FIPS-compatible parser against making JKS support opt-in, then confirm the preferred direction and define completion as removing non-FIPS packages from consumers that do not use JKS.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
backend, security
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.