AI Security Review
scanned 1d ago · by lpm-firewall-aiNo confirmed malicious attack surface is established by static inspection. The package is a platform-specific Trumbo CLI binary with bundled webview and first-party plugin sandbox assets.
Static reason
High-risk behavior combination matched malicious policy.
Trigger
User explicitly invokes the trumbo CLI or Trumbo loads configured plugins.
Impact
User-invoked CLI/plugin capabilities only; no install-time compromise found.
Mechanism
Native CLI with local webview assets and first-party plugin sandbox loader.
Rationale
The risky primitives are package-aligned for an AI/CLI platform and appear user- or platform-invoked, with no lifecycle hook or unconsented mutation of foreign agent control surfaces. Static hints are mostly explained by bundled native/runtime/webview assets and syntax/mermaid grammars.
Evidence
package.jsonbin/trumboextensions/plugin-sandbox-bootstrap.jshub/webview/index.htmlhub/webview/assets/index-BHPD9Seb.jshub/webview/assets/jsx-Bz0zcwM4.jshub/webview/assets/mermaid-parser-BfrZ3jm6.js
Decision evidence
public snapshotAI called this Clean at 78.0% confidence as Benign with low false-positive risk.
Evidence for block
- Ships native ARM64 ELF at bin/trumbo, so behavior is partly opaque to JS source review.
- extensions/plugin-sandbox-bootstrap.js can dynamically import explicit pluginPaths with jiti and register tools/commands/rules/mcpServers inside Trumbo's plugin host.
Evidence against
- package.json declares only bin.trumbo and has no preinstall/install/postinstall lifecycle hooks.
- hub/webview/index.html loads local bundled webview assets only.
- Hot JS files are bundled syntax highlighting/mermaid/UI assets; scanner hits match grammar strings and normal UI code.
- No source evidence of credential harvesting, install-time execution, persistence, destructive behavior, or foreign AI-agent control-surface writes.
- Plugin bootstrap runs from IPC initialize args and validates plugin manifests rather than planting package-supplied instructions elsewhere.
Behavioral surface
ChildProcessDynamicRequireFilesystemNetworkWebSocket
HighEntropyStringsMinifiedObfuscatedProtestwareUrlStrings
NoLicense
Source & flagged code
4 flagged · loading sourcehub/webview/assets/jsx-Bz0zcwM4.jsView file
1var e=[Object.freeze(JSON.parse(`{"displayName":"JSX","name":"jsx","patterns":[{"include":"#directives"},{"include":"#statements"},{"include":"#shebang"}],"repository":{"access-mod...
Medium
Dynamic Require
Package source references dynamic require/import behavior.
hub/webview/assets/jsx-Bz0zcwM4.jsView on unpkg · L1hub/webview/assets/mermaid-parser-BfrZ3jm6.jsView file
46contains invisible/control Unicode U+FEFF (zero width no-break space)
\r \v \xA0 \u2028\u2029 <U+FEFF>`.split(``);function Da(e){let t=typeof e==`string`?new RegExp(e):e;return Ea.some(e=>t.test(e))}o(Da,`isWhitespace`);function Oa(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}o(Oa,`escapeReg
Critical
Trojan Source Unicode
Source contains bidi control or invisible Unicode characters associated with Trojan Source attacks.
hub/webview/assets/mermaid-parser-BfrZ3jm6.jsView on unpkg · L46bin/trumboView file
•path = bin/trumbo
kind = native_binary
sizeBytes = 122489152
magicHex = [redacted]
Medium
hub/webview/icon.icoView file
•path = hub/webview/icon.ico
kind = high_entropy_blob
sizeBytes = 40082
magicHex = [redacted]
High
Ships High Entropy Blob
Package ships high-entropy non-source blobs.
hub/webview/icon.icoView on unpkgFindings
1 Critical1 High5 Medium5 Low
CriticalTrojan Source Unicodehub/webview/assets/mermaid-parser-BfrZ3jm6.js
HighShips High Entropy Blobhub/webview/icon.ico
MediumDynamic Requirehub/webview/assets/jsx-Bz0zcwM4.js
MediumNetwork
MediumProtestware
MediumShips Native Binarybin/trumbo
MediumStructural Risk Force Deep Review
LowFilesystem
LowObfuscated
LowHigh Entropy Strings
LowUrl Strings
LowNo License