[FIPS] connectivity: jks-js pulls non-FIPS crypto (MD5, SHA-1, DES) into all consumers
Nobody has claimed this yet.
- 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:
- Replace
jks-jswith a FIPS-compatible JKS keystore parser, or - 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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