AI Security Review
scanned 2h ago · by lpm-firewall-aiNo confirmed malicious attack surface. Runtime networking is the stated SDK function and targets caller-configured Custody API/auth endpoints; generated private keys and signatures remain in process/caller-controlled request flow.
Static reason
One or more suspicious static signals were detected.
Trigger
A consumer constructs `RippleCustody` and invokes authentication, API, or optional version-detection methods.
Impact
Performs intended Ripple Custody authentication and API operations; no unconsented persistence, exfiltration, or install-time mutation was identified.
Mechanism
Caller-configured HTTP API client with local cryptographic signing.
Rationale
The flagged secret-like pattern is legitimate PEM private-key handling for a custody SDK, not an embedded credential or exfiltration chain. Source inspection found only consumer-configured, package-aligned HTTP behavior and no malicious execution or persistence mechanism.
Evidence
package.jsondist/index.jsdist/ripple-custody.jsdist/services/apis/api.service.jsdist/services/auth/auth.service.jsdist/services/keypairs/secp256k1.service.jsdist/services/keypairs/ed25519.service.jsdist/versioning/detect.jsREADME.md
Network endpoints2
api.ripple.comauth.api.ripple.com/token
Decision evidence
public snapshotAI called this Clean at 97.0% confidence as Benign with low false-positive risk.
Evidence for block
Evidence against
- `package.json` has only `prepare` and `prepublishOnly` build/test hooks; no install payload script.
- `dist/index.js` only re-exports SDK APIs and has no import-time network or filesystem action.
- `dist/services/keypairs/secp256k1.service.js` generates/signs with caller-provided private keys and returns results to the caller.
- `dist/services/apis/api.service.js` sends signed API requests only to the caller-configured `apiUrl`.
- No filesystem, environment harvesting, shell execution, eval/vm, native loading, or AI-agent config mutation was found in `dist`.
- `dist/versioning/detect.js` fetches a caller-derived OpenAPI URL only when version auto-detection is used.
Behavioral surface
CryptoNetwork
HighEntropyStrings
Source & flagged code
4 flagged · loading sourcedist/services/keypairs/secp256k1.service.jsView file
58patternName = private_key_ec
severity = critical
line = 58
matchedText = const ha...-");
Critical
Critical Secret
Package contains a critical-looking secret pattern.
dist/services/keypairs/secp256k1.service.jsView on unpkg · L5858patternName = private_key_ec
severity = critical
line = 58
matchedText = const ha...-");
Critical
Secret Pattern
EC private key in dist/services/keypairs/secp256k1.service.js
dist/services/keypairs/secp256k1.service.jsView on unpkg · L58dist/services/keypairs/ed25519.service.jsView file
50patternName = private_key_rsa
severity = critical
line = 50
matchedText = if (!isS...)) {
Critical
Secret Pattern
RSA private key in dist/services/keypairs/ed25519.service.js
dist/services/keypairs/ed25519.service.jsView on unpkg · L50dist/services/keypairs/secp256r1.service.jsView file
58patternName = private_key_ec
severity = critical
line = 58
matchedText = const ha...-");
Critical
Secret Pattern
EC private key in dist/services/keypairs/secp256r1.service.js
dist/services/keypairs/secp256r1.service.jsView on unpkg · L58Findings
4 Critical1 Medium3 Low
CriticalCritical Secretdist/services/keypairs/secp256k1.service.js
CriticalSecret Patterndist/services/keypairs/secp256k1.service.js
CriticalSecret Patterndist/services/keypairs/ed25519.service.js
CriticalSecret Patterndist/services/keypairs/secp256r1.service.js
MediumNetwork
LowNon Install Lifecycle Scripts
LowScripts Present
LowHigh Entropy Strings