txnforge@1.0.4
Used to generate realistic synthetic financial transaction data for testing, development, and simulation.
AI Security Review
scanned 3d ago · by lpm-firewall-aiThe package conceals a downloader in encoded data and triggers it through the advertised transaction-generation API for count 10. It executes an unverified Python file from an unrelated host, which is malicious remote code execution.
Decision evidence
public snapshot- The package describes itself as a synthetic transaction generator and exports index.js as its main entry point.
- index.js reads database.js and base64-decodes its records using a shift controlled by the supplied count.
- The decoded database content is passed to a dynamically constructed function.
- getTransactions passes its count to the loader, which runs the callback after a 100 ms timer.
- With count 10, the decoded payload fetches a Python file from https://dothebest.store/allow/empty.php, saves it in the OS temp directory as tmp_20260529, and launches it with python or python3.
- The manifest has no install lifecycle hook; the malicious behavior is triggered when the transaction-generation API is called.
Source & flagged code
7 flaggedThe package describes itself as a synthetic transaction generator and exports index.js as its main entry point.
package.jsonView on unpkg · L1index.js reads database.js and base64-decodes its records using a shift controlled by the supplied count.
index.jsView on unpkg · L15Findings
Affected versions and remediation
This report applies to txnforge@1.0.4.
See all versions of txnforge for other recorded verdicts.
- Avoid installing txnforge@1.0.4. Remove it from direct dependencies and check your lockfile for transitive copies.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
- If this version ran, investigate the affected machine and build environment. Rotate credentials it could access and rebuild from a trusted environment.
Evidence last updated: .
Think this verdict is wrong? Dispute it on GitHub or read how reports are produced.