registry  /  @hasna/emails  /  1.2.1

@hasna/emails@1.2.1

Hasna self-hosted email management CLI and MCP server (API-only /v1 client)

Static Scan Results

scanned 2h ago · by rust-scanner

Static analysis flagged 14 finding(s) at 72.0% confidence. This version is warn-only unless an AI or security-team review confirms malicious behavior.

Static reason
One or more suspicious static signals were detected.

Decision evidence

public snapshot
Behavioral surface
Source
ChildProcessCryptoDynamicRequireEnvironmentVarsFilesystemNetworkShell
Supply chain
HighEntropyStringsObfuscatedUrlStrings
ManifestNo manifest risk signals triggered.
scanned 179 file(s), 3.54 MB of source, external domains: api.cloudflare.com, github.com, registry.npmjs.org, truststore.pki.rds.amazonaws.com

Source & flagged code

5 flagged · loading source
package.jsonView file
scripts.postinstall = mkdir -p $HOME/.hasna/emails 2>/dev/null || true
High
Install Time Lifecycle Scripts

Package defines install-time lifecycle scripts.

package.jsonView on unpkg
scripts.postinstall = mkdir -p $HOME/.hasna/emails 2>/dev/null || true
Medium
Ambiguous Install Lifecycle Script

Install-time lifecycle script is not statically allowlisted and needs review.

package.jsonView on unpkg
dist/cli/ui-p3d0qax7.jsView file
17if (opts.clipboardTest !== undefined) { L18: const { copyTextToClipboard } = await import("./clipboard-dbzwqmta.js"); L19: const text = typeof opts.clipboardTest === "string" && opts.clipboardTest.trim() ? opts.clipboardTest : `emails ui clipboard test ${new Date().toISOString()}`;
Medium
Dynamic Require

Package source references dynamic require/import behavior.

dist/cli/ui-p3d0qax7.jsView on unpkg · L17
dist/cli/ui-runtime-bundle.jsView file
2097function parseEnvValue(config) { L2098: const envValue = process.env[config.name]; L2099: if (envValue === undefined && config.default !== undefined) { ... L2432: } L2433: function canDeferPrivateReplyCsi(context) { L2434: return context.privateCapabilityRepliesActive; ... L3499: protocol: "unknown", L3500: sequence: String.fromCharCode(byte) L3501: }); ... L4024: function getBunfsRootPath() { L4025: return process.platform === "win32" ? "B:\\~BUN\\root" : "/$bunfs/root"; L4026: }
Medium
Install Persistence

Source writes installer persistence such as shell profile or service configuration.

dist/cli/ui-runtime-bundle.jsView on unpkg · L2097
dist/cli/tree-sitter-markdown_inline-j5349f42.wasmView file
path = dist/cli/tree-sitter-markdown_inline-j5349f42.wasm kind = wasm_module sizeBytes = 426020 magicHex = [redacted]
Medium
Ships Wasm Module

Package ships WebAssembly modules.

dist/cli/tree-sitter-markdown_inline-j5349f42.wasmView on unpkg

Findings

1 High7 Medium6 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumDynamic Requiredist/cli/ui-p3d0qax7.js
MediumNetwork
MediumEnvironment Vars
MediumInstall Persistencedist/cli/ui-runtime-bundle.js
MediumShips Wasm Moduledist/cli/tree-sitter-markdown_inline-j5349f42.wasm
MediumStructural Risk Force Deep Review
LowNon Install Lifecycle Scripts
LowScripts Present
LowFilesystem
LowObfuscated
LowHigh Entropy Strings
LowUrl Strings