Togoder security

npm package security report

porto npm package: is it safe?

Risky patterns found that deserve a look.

Needs review Version 0.2.35 Files reviewed 280 Size 2.1 MB Scanned

Summary

Togoder Security scanned the npm package porto@0.2.35 on Oct 4, 2026. An AI review of 280 source files produced 69 medium, 98 low severity findings. The overall verdict is medium: the findings flag risky but common patterns (dynamic code, unsafe defaults, broad file or network access) rather than confirmed malware.

0
critical
0
high
69
medium
98
low

Findings 167

medium

Top-level async execution on import

NPS-8D6DBE49302F

The module executes await Messenger.cliRelay() at the top level (line 3), which means code runs immediately upon import. This is a potential side effect that occurs before any user interaction and could initiate network connections or other operations.

dist/cli/Dialog.js:3
medium

Potential data transmission to external server

NPS-A326F4398A20

The messenger.send('rpc-requests', requests) calls (lines 22 and 55) transmit request data to a relay server whose URL is provided by messenger.relayUrl. The destination is not validated or restricted, and the data being sent could contain sensitive information. Additionally, open() constructs a URL containing the relay URL and opens it in a browser (lines 31-35), which could leak relay information.

dist/cli/Dialog.js:22
medium

Wildcard CORS and Private Network Access

NPS-BF8C575A3E64

The HTTP server sets 'Access-Control-Allow-Origin: *' combined with 'Access-Control-Allow-Private-Network: true'. This allows any website in a browser to make requests to this local server, potentially enabling DNS rebinding or cross-origin attacks against local services.

dist/cli/Messenger.js:10
medium

Unauthenticated local HTTP server exposed to network

NPS-80332B5B6208

The server accepts POST requests at '/' with an unauthenticated JSON payload and dispatches it to internal listeners based on topic. No origin, token, or secret check is performed, so any process or webpage that can reach the port can publish arbitrary payloads to internal message handlers.

dist/cli/Messenger.js:30
medium

Private key stored outside package scope

NPS-BC50DBC6CAD8

When the user declines to reveal the private key, the code writes the account's private key to a file named ${accounts[0].address}.key in import.meta.dirname โ€” the package's own source/distribution directory โ€” rather than a proper user-specific config directory. This persists sensitive key material into package scope and could leak the key to other users, future renders of the package, or packaging artifacts.

dist/cli/internal/commands.js
medium

Private key exposure in process environment/terminal

NPS-1AD476574BD0

The 'Reveal private key?' confirmation prints the raw private key to the terminal via prompts.log.info. While user-initiated, printing raw private keys to terminal/stdout can leak them to shell history, log files, CI output, or screen-sharing sessions.

dist/cli/internal/commands.js
medium

Sensitive data written during error handling without guaranteed cleanup

NPS-41037009E136

In cleanup(), when an uncaught exception or SIGTERM/SIGINT occurs and a temp key file exists, the code prints the file path and calls process.exit(1) without deleting the temp key file (cleanup of tempKeyFile via fs.rmSync only happens on the normal success path). On abnormal exits the private key may remain on disk indefinitely.

dist/cli/internal/commands.js
medium

File system writes outside typical package/user scope

NPS-E4DEDA9BE648

The code creates directories and files in os.tmpdir()/porto and writes .key files into import.meta.dirname. Writing into the package's own distribution directory (import.meta.dirname) is unexpected behavior that modifies installed package contents at runtime and is a persistence mechanism that could tamper with the module the user trust-installed.

dist/cli/internal/commands.js
medium

postMessage without strict origin validation on inbound

NPS-F3F567EB6DEA

Messenger.bridge is configured with targetOrigin for outbound messages, but inbound message handling (messenger.on('rpc-response' | 'ready' | '__internal')) appears to trust messages from the embedded iframe/opener. If the target host (hostUrl.origin) is compromised or if window.location can be influenced, responses including RPC results could be forged.

dist/core/Dialog.js:270
medium

AuthSession token/credential parsing from redirect URL

NPS-BFE983579D6C

In the React Native authSession flow, the code parses 'payload' returned via redirect URL query parameters and directly JSON.parses it, treating it as RPC results (which may include signing keys, accounts, permissions). If the redirect URI is hijacked or the payload is manipulated, it could be consumed as a valid RPC response.

dist/core/Dialog.js:553
medium

Permissive postMessage targetOrigin

NPS-4C6A338A41FB

The fromWindow send() method defaults targetOrigin to '*' when no targetOrigin option or target parameter is provided. Using '*' in window.postMessage leaks message contents to any origin that can receive the message, which can expose sensitive data (e.g. auth tokens, payloads) to malicious frames or windows.

dist/core/Messenger.js:50
medium

SSE/fetch to configurable relay URL without validation

NPS-1D9F3BE98414

The cliRelay() function accepts an arbitrary relayUrl and uses it for both EventSource connections and fetch POST requests, sending payloads and receiving commands. If relayUrl is influenced by untrusted input (e.g. environment or remote config), this becomes a data exfiltration and remote-command channel. No allowlist, scheme validation, or authentication is enforced.

dist/core/Messenger.js:130
medium

Hardcoded external RPC endpoint

NPS-A5798954F138

The code defines a production relay URL 'https://rpc.porto.sh' and staging URL 'https://stg-rpc.porto.sh'. All methods starting with 'wallet_' or 'account_', plus 'health', are routed to this external relay. While this appears to be an intentional design for a relay proxy, it means sensitive wallet/account RPC calls are sent to a third-party server controlled by the package authors, not the configured public transport. This is a potential data exfiltration vector if the package is compromised or if the relay is malicious.

dist/core/Transport.js:4
medium

Sensitive RPC method routing

NPS-0F4FF211F4DA

The isRelay() function intercepts all 'wallet_*' and 'account_*' RPC methods and forwards them to the relay transport instead of the user-configured public transport. Wallet methods include highly sensitive operations such as wallet_sendTransaction, wallet_signTransaction, wallet_requestPermissions, and wallet_getCapabilities. Routing these to an external relay could allow the relay operator to observe or manipulate signing requests, though the actual signing typically happens client-side.

dist/core/Transport.js:18
medium

Obfuscated bytecode payload

NPS-8CE823F5CA90

The exported 'code' field contains a large hex-encoded EVM bytecode blob with no plaintext source or comments. While the ABI and bytecode appear to implement a standard EIP-7702 proxy pattern (implementation/admin storage slots, fallback delegation), the bytecode is unverified and cannot be audited for hidden malicious behavior such as arbitrary delegatecalls, storage manipulation, or hardcoded addresses.

dist/core/internal/_generated/contracts/EIP7702Proxy.js
medium

Unexplained hardcoded constants

NPS-B56400720B38

The bytecode embeds specific storage slot constants (0x360894a1... and 0xb5312768...) that match common proxy implementation/admin slots. If these differ from the documented EIP-7702 proxy spec, they could allow the contract author to redirect logic or seize admin control. No source mapping or verification hash is provided.

dist/core/internal/_generated/contracts/EIP7702Proxy.js
medium

Suspicious contract bytecode

NPS-E1BFDBF42658

The file exports raw Ethereum contract bytecode ('code') for an ERC-721 contract. The bytecode contains low-level EVM assembly that is not human-readable and could hide arbitrary on-chain logic. While this is a standard ABI/bytecode export for a smart contract SDK, the actual contract behavior cannot be fully audited from the bytecode alone. The contract includes a 'mint' function that is payable and a 'mint()' no-argument function that could be called by anyone to mint tokens for free or for payment depending on implementation. There is also a constructor accepting a token address and price, suggesting this is an experiment/ERC-721 contract that may interact with an external ERC-20 token.

dist/core/internal/_generated/contracts/ExperimentERC721.js
medium

Unrestricted minting

NPS-D1A3375CE9FA

The ABI exposes a public 'mint()' function with no arguments and nonpayable state mutability, as well as 'mint(address recipient)'. If the contract allows arbitrary callers to mint tokens, this could lead to inflation or abuse depending on the intended use case. However, without decompiling the bytecode, the actual access control cannot be confirmed.

dist/core/internal/_generated/contracts/ExperimentERC721.js
medium

External ERC-20 interaction

NPS-3024E4275413

The constructor accepts an ERC-20 token address and a price, and the bytecode appears to call 'transferFrom' on that token during the 'mint()' no-argument function (see the bytecode snippet calling 0x23b872dd). This means the contract will attempt to transfer tokens from the caller to itself and then mint an NFT. If the token address is malicious or the price is manipulated, users could lose funds. This is a common pattern for paid NFT mints but requires trust in the contract owner and the token.

dist/core/internal/_generated/contracts/ExperimentERC721.js
medium

Embedded EVM bytecode

NPS-B4CF77604E20

The file contains a large 'code' string literal with compiled Ethereum Virtual Machine (EVM) bytecode for an 'Orchestrator' smart contract. While not inherently malicious in a blockchain development context, this bytecode is unverified compiled code that could contain backdoors or vulnerabilities. Its presence in a JavaScript package is unusual and could be used to deploy or interact with a smart contract on-chain.

dist/core/internal/_generated/contracts/Orchestrator.js:1
medium

Obfuscated bytecode payload

NPS-0B708CCAEF42

The bytecode is opaque and not human-readable, which hinders security auditing. It includes low-level operations (e.g., delegatecall, CREATE2 patterns via assembly-like opcodes) that could enable arbitrary execution or contract creation if invoked. Without source verification, malicious behavior cannot be ruled out.

dist/core/internal/_generated/contracts/Orchestrator.js:1
medium

Cross-origin communication

NPS-07A109B84A6A

The dialog renderer uses iframes (Dialog.iframe()) to communicate with external hosts (Dialog.hostUrls.prod by default). This establishes cross-origin communication channels that could be exploited if the host is compromised or if messages are not properly validated.

dist/core/internal/modes/dialog.js:20
medium

External provider requests

NPS-56F3338ED551

The code creates a provider that sends RPC requests to external services via the dialog/iframe mechanism. While this is expected functionality, it means sensitive wallet operations (signing, account creation, permissions) are delegated to external services.

dist/core/internal/modes/dialog.js:35
medium

External network requests with credentials

NPS-94E94303E33D

The disconnect action performs a fetch to an external authUrl.logout endpoint with credentials: 'include', which sends cookies to an external server. The authUrl is derived from config.authUrl or stored in local storage, potentially allowing arbitrary external server communication with the user's credentials.

dist/core/internal/modes/dialog.js:230
medium

Data exfiltration

NPS-BE01B54F17CD

The authenticate function sends the user's wallet address, signature, chainId, message, and optionally publicKey to an external URL (authUrl.verify) via fetch. Since authUrl is provided by the caller and not validated, a malicious dApp or compromised configuration could direct this sensitive authentication data to an attacker-controlled server.

dist/core/internal/siwe.js:6
medium

Credentialed cross-origin request

NPS-B8BC98BAA50D

The fetch in authenticate uses credentials: 'include', which sends cookies and HTTP authentication credentials to whatever origin authUrl.verify points to. Combined with the lack of origin validation, this could facilitate credential leakage or CSRF-like attacks if an attacker controls the authUrl.

dist/core/internal/siwe.js:12
medium

Data exfiltration

NPS-39F626EB4906

In buildMessage, when no nonce is provided, the code makes a POST request to an external authUrl.nonce endpoint, sending the user's wallet address and chainId. This could leak the user's wallet address to arbitrary third-party servers if the authUrl is malicious or compromised.

dist/core/internal/siwe.js:47
medium

Unresolved external module behavior

NPS-26A83EFBE87B

The actual logic is delegated to ./core/react-native/index.js and ./react-native/register.js, which are not included in the provided snippet. The safety of this entrypoint cannot be fully determined without reviewing those files, since configure() could contain arbitrary behavior (network calls, credential access, etc.).

dist/index.native.js:1
medium

Origin validation weakness

NPS-FE1CFD6F8B90

The trustedOrigins check uses event.origin.endsWith(origin) to validate origins. This is vulnerable to origin spoofing because a malicious origin like 'evil-id.porto.sh.attacker.com' would pass the endsWith check for 'id.porto.sh'. This could allow unauthorized dialogs from attacker-controlled origins.

dist/remote/Events.js:82
medium

PostMessage origin trust

NPS-63AFEF1F4EA2

The code processes RPC requests based on the event.origin from messenger events without additional cryptographic validation. If the messenger implementation does not properly validate message sources, this could enable cross-origin request forgery against the wallet.

dist/remote/Events.js:115
medium

Dynamic URL Parameter Handling

NPS-5B23AC3482A5

The code reads a 'relayUrl' query parameter from window.location.href and uses it to construct a Messenger.cliRelay instance. This allows an attacker to potentially redirect communications to an arbitrary external relay URL by crafting a malicious link, which could lead to data exfiltration or man-in-the-middle attacks.

dist/remote/Porto.js:9
medium

Window Opener/Parent Communication

NPS-3DC2AC65D55C

The messenger is initialized to bridge communication between the current window and window.opener or window.parent. This cross-origin messaging could be exploited if the parent/opener is untrusted, potentially leading to data leakage or command execution if the messaging protocol is not properly validated.

dist/remote/Porto.js:13
medium

Suspicious trusted hosts allowlist

NPS-0CA386500359

This file defines an allowlist of external hostnames, including non-production, staging, development, ngrok, workers.dev, vercel.app, and localhost domains. If this allowlist is used for security-sensitive trust decisions (e.g., wallet connectivity, authentication origins, message signing, or deep-link handling), it could allow attackers or malicious dApps to impersonate trusted services or bypass origin checks.

dist/trusted-hosts.js:1
medium

Broad web3/crypto origin trust surface

NPS-634778328F02

The list contains many DeFi, wallet, exchange, and cross-chain bridge hostnames (e.g., uniswap.org, app.uniswap.org, jumper.exchange, relay.link, sushi.com, app.cashmere.exchange). If used to authorize wallet interactions or transaction signing, a compromised or typo-squatted domain in this list may lead to phishing or unauthorized signing approvals.

dist/trusted-hosts.js:2
medium

Inclusion of untrusted or ephemeral domains in trust list

NPS-DD6C47518998

The list includes ephemeral or development infrastructure such as 'localhost', 'stg.localhost', 'anvil.localhost', 'daimo.ngrok.app', 'porto-react-native.ngrok.io', multiple '*.workers.dev', '*.vercel.app', and '*.ts.net' hostnames. These domains are not controlled by the package publisher and can be registered or repurposed by third parties, creating trust or spoofing risks if consumed as an allowlist.

dist/trusted-hosts.js:5
medium

External network request with dynamic URL

NPS-2AA9F1C6A774

The prepareCalls function creates a new client using a user-supplied merchantUrl via http(merchantUrl), causing network requests to an arbitrary external endpoint. While this appears to be an intended feature for merchant RPC, dynamic URLs can be abused for data exfiltration if attacker-controlled.

dist/viem/RelayActions.js:152
medium

Dynamic network transport construction from configuration

NPS-9FCEB65A5F0A

The code builds an HTTP transport from chain.rpcUrls.default.http and a relay object. This results in outbound network requests to RPC endpoints and a relay service whose URLs come from runtime configuration. While this is expected for a blockchain client, the destinations are not validated or allow-listed here, so a compromised config could direct traffic to attacker-controlled endpoints.

dist/viem/RelayClient.js:26
medium

Top-level async code / import-time execution

NPS-B101FB9AF764

The module executes await Messenger.cliRelay() at the top level during import. This means network relay setup (potentially opening WebSocket/HTTP connections) runs simply by importing the module, before any explicit invocation. Import-time side effects can be exploited and make behavior harder to audit.

src/cli/Dialog.ts:6
medium

Network communication / relay URL handling

NPS-E720F5F4B8FE

The dialog embeds a relayUrl into a URL opened in the browser and communicates over a messenger channel ('rpc-response', 'rpc-requests'). This creates a bidirectional bridge between the CLI process and a remote relay, which could be abused for data exfiltration or command relay if the relay URL is attacker-controlled or the transport is unauthenticated.

src/cli/Dialog.ts:47
medium

Permissive CORS with wildcard origin

NPS-E96E584D9066

The server sets 'Access-Control-Allow-Origin: *' on all responses, including the SSE stream that carries relay payloads. Any web page can connect to this local server and read relayed messages or POST data into the messenger, enabling cross-origin data theft or message injection.

src/cli/Messenger.ts:34
medium

Unbounded request body buffering (DoS)

NPS-BF19E231D6CA

POST bodies are accumulated into a single string with no size limit. A malicious or buggy client can send arbitrarily large payloads, exhausting memory and potentially crashing the process.

src/cli/Messenger.ts:62
medium

Unvalidated topic routing

NPS-6108EF48C728

Incoming POST data is parsed and dispatched to listeners based solely on the client-supplied 'topic' field. Combined with wildcard CORS, this allows cross-origin attackers to trigger application-level message handlers with arbitrary payloads.

src/cli/Messenger.ts:70
medium

Private key written to temp file

NPS-62295F9AE462

The admin private key is written to a predictable temporary file path under os.tmpdir()/porto with a timestamp+Math.random() filename. While permissions are 0o600, the use of Math.random() and predictable temp directory could allow another local process to race or guess the filename and read the key. The catch block also silently swallows errors.

src/cli/internal/commands.ts:30
medium

Private key printed to terminal/logs

NPS-0C31FFBA89E6

On confirmation, the private key is printed directly to the terminal via prompts.log.info, and it may also be logged via the cleanup path (shouldPrintKeyOnExit) on SIGINT/SIGTERM/uncaught errors. Logging secrets increases risk of leaking credentials to terminal scrollback, CI logs, or shell history.

src/cli/internal/commands.ts:137
medium

Private key persisted to package-relative directory

NPS-34028DCA562A

When the user chooses not to reveal, the private key is written to a file named after the account address inside import.meta.dirname (the package's own source directory). Writing secrets into the application/package directory is a poor practice and may cause them to be committed or packaged.

src/cli/internal/commands.ts:141
medium

Dynamic module access with external input

NPS-1E83FEF38DD1

The getRelayClient function uses user-supplied options.chain to dynamically index into the Chains namespace (Chains[chain]) without validation. While this is TypeScript, there is no runtime check that the chain exists or is a legitimate chain object. A malicious or unexpected value could lead to unpredictable behavior or access to unintended properties on the Chains object.

src/cli/internal/context.ts:46
medium

Network request to user-controlled URL

NPS-F097234555B2

getRelayClient accepts an options.rpc parameter and passes it directly to viem's http() transport. This allows arbitrary RPC endpoints to be contacted, which could be used to send requests to attacker-controlled servers or to perform SSRF-like behavior depending on how the CLI invokes this function. No allowlist or validation is applied.

src/cli/internal/context.ts:49
medium

Insufficient message origin validation

NPS-1581BBE0BA5F

In fromWindow.on, origin validation only occurs when targetOrigin is explicitly configured. If targetOrigin is undefined, incoming message events from any origin are accepted and dispatched to listeners. This can allow cross-origin pages to inject spoofed messages (e.g. fake rpc-response, ready, or __internal payloads), potentially influencing wallet/RPC flows.

src/core/Messenger.ts:160
medium

Potential data exposure via postMessage payloads

NPS-005B0EF0D018

The messenger schema includes rpc-requests and rpc-response topics that carry RPC requests/responses. These are posted via w.postMessage using the potentially wildcard target origin, which could expose RPC payloads to unintended recipients if the window is embedded or opened by a malicious origin.

src/core/Messenger.ts:174
medium

Permissive postMessage target origin

NPS-D27D8A097EF8

The send method in fromWindow defaults to a target origin of '*' when no targetOrigin is provided. Posting messages with a wildcard origin can leak sensitive payloads (e.g. RPC requests/responses, ready options, themes) to any window that has a reference to the sender, and can enable message spoofing/hijacking. A specific target origin should be required.

src/core/Messenger.ts:177
medium

Unvalidated external relay URL and SSE data

NPS-9EAD43AB0FF6

cliRelay connects an EventSource to a caller-provided relayUrl and POSTs message payloads to the same URL. Incoming SSE messages are JSON.parsed and dispatched to listeners based solely on data.topic and data.payload presence, with no schema validation, origin check, or authentication. A malicious or compromised relay can send arbitrary payloads (including __internal init/theme/resize or rpc-response messages) to the client, and the client will forward potentially sensitive RPC data to that relay.

src/core/Messenger.ts:285
medium

Insecure Cookie Configuration

NPS-079C357F7A1E

The cookie() storage implementation sets cookies with samesite=None; secure and a 1-year max-age, and parses cookie values with JSON.parse. While this is primarily a configuration concern rather than malicious behavior, setting SameSite=None without proper CSRF protections can expose stored data to cross-site attacks. The cookie name and value are interpolated directly into the cookie string without encoding, which could allow cookie injection if name/value contain special characters like ';' or '='.

src/core/Storage.ts
medium

Sensitive Data Storage in Cookie

NPS-832DCA2A1627

The cookie storage serializes arbitrary values (via Json.stringify) into document.cookie with a long-lived max-age. Cookies are accessible to any JavaScript on the same origin and are automatically sent with cross-site requests, making them a generally poor storage location for sensitive data (e.g., tokens, keys). If the consuming application stores secrets via this Storage abstraction, they could be exfiltrated via XSS or leaked cross-origin.

src/core/Storage.ts
medium

Obfuscated smart contract bytecode

NPS-F68A8B48D8C3

The file exports a large hex-encoded Ethereum smart contract bytecode string ('code'). This EVM bytecode is heavily optimized/obfuscated (e.g., uses non-standard jump tables, packed storage, and hashed function selectors). While it appears to be legitimate account abstraction/wallet code (IthacaAccount), the obfuscation makes it impossible to verify its full behavior statically. It could contain hidden privileged functions or backdoors.

src/core/internal/_generated/contracts/IthacaAccountOld.ts
medium

Potential wallet draining / unauthorized asset transfer

NPS-DFC8BF2F2FDF

The ABI includes a function 'execute' with arbitrary calls (to, value, data) and a fallback/receive that can execute arbitrary calldata. Combined with signature validation and key management, this is typical of smart contract wallets but could be abused if the contract has flaws or hidden logic. The presence of 'pay' and 'spendLimit' functions suggests payment and token spending capabilities.

src/core/internal/_generated/contracts/IthacaAccountOld.ts
medium

Delegatecall / upgradeability risk

NPS-2F9221DC60EB

The contract includes an 'upgradeProxyAccount' function and an 'upgradeHook', indicating a proxied upgradeable contract. The implementation address can be changed, potentially allowing a malicious upgrade if the orchestrator or keys are compromised. The EIP-1967 implementation slot pattern is used.

src/core/internal/_generated/contracts/IthacaAccountOld.ts
medium

Lack of source code transparency

NPS-1B305829BBEF

The file is a generated TypeScript contract interface containing raw bytecode and ABI. No source Solidity is provided, so the actual logic cannot be audited. This is a third-party package, and the bytecode is the ultimate authority for on-chain behavior.

src/core/internal/_generated/contracts/IthacaAccountOld.ts
medium

Global Environment Modification

NPS-5AD2537D9F71

The code modifies the global 'crypto' object at import time using Object.defineProperty with enumerable: true on non-web platforms. This monkey-patches a standard global API, which could alter the behavior of other libraries expecting the native implementation. While it delegates to ExpoCrypto, it replaces the platform's crypto implementation globally.

src/react-native/crypto.ts:4
medium

Weak origin validation

NPS-451106A3396A

The trustedOrigins check uses event.origin.endsWith(origin), which can be bypassed by malicious domains like 'evil-id.porto.sh' or 'attacker-localhost:5173'. This weakens the sameOrigin security check and could allow unauthorized dialog handling from spoofed origins.

src/remote/Events.ts:122
medium

Dynamic message relay via URL parameter

NPS-D5CB158E7AB6

The module reads a 'relayUrl' from window.location.search and, if present, creates a Messenger.cliRelay with that attacker-controllable URL. This allows arbitrary external URLs to be used as a message relay endpoint, which could enable data exfiltration from the consuming application's context (e.g., dApp requests, user data) to an attacker-controlled server. The relay URL is not validated against the trustedHosts list.

src/remote/Porto.ts:20
medium

Cross-origin/window messaging without origin validation

NPS-79CE6A760B84

The messenger is constructed from window and window.opener/window.parent without explicit origin checks at initialization time. Communication established via postMessage with an opener/parent window could be exploited if the embedding page is not fully trusted, potentially leaking RPC requests and responses across frames.

src/remote/Porto.ts:23
medium

CORS misconfiguration

NPS-854DBC3A3D71

The router applies hono.use('*', cors(options.cors)) with a caller-supplied configuration and no default restrictions. If options.cors is omitted or set permissively, the API (including merchant RPC endpoints that sign feePayerDigest payloads with an admin key) would be reachable from any origin, enabling cross-site requests to the signing service.

src/server/Route.ts:62
medium

Potential key material exposure via relay transport

NPS-CEBD25EB7464

merchant() accepts an admin private key (Hex or {type, privateKey}) and signs feePayerDigest payloads returned by the relay, while all other RPC traffic goes to the configurable relay endpoint. A malicious or compromised relay could return attacker-chosen digests to obtain signatures, or observe metadata about every request. The relay is fully caller-configurable and no allowlist/validation is applied.

src/server/Route.ts:138
medium

Allowlist with suspicious/dev domains

NPS-7C5E1F17AA6A

This file is a hardcoded list of trusted hostnames. It does not execute code, perform network requests, read environment variables or files, spawn processes, or use dynamic code execution. However, it contains several development, staging, tunneling, and temporary hosting domains (e.g., 'anvil.localhost', 'localhost', 'stg.localhost', '.ngrok.app', '.ngrok.io', '.workers.dev', '.vercel.app', '.ts.net') that could weaken host verification if this allowlist is used in production to authorize requests. No direct malicious pattern is present, but the list is suspiciously broad for a 'trusted hosts' allowlist.

src/trusted-hosts.ts:1
medium

Cryptographic key material handling in error paths

NPS-55B41B89B0F0

The sign() function includes the full key object (including any privateKey field, though it is a function or CryptoKey rather than a raw string in most branches) in error messages via Json.stringify when no private key exists or when the key type is unsupported. If consumers pass keys with extractable private key material (e.g. raw hex strings in custom wrappers), this could leak secrets into logs or error reports. Additionally, fromP256 and fromHeadlessWebAuthnP256 close over raw private key hex strings in the privateKey() function.

src/viem/Key.ts:611
medium

Suspicious network request with dynamic/hardcoded URL

NPS-35F7E193B7A4

The prepareCalls function accepts a merchantUrl parameter and creates a new HTTP client via createClient({ transport: http(merchantUrl) }) to send prepared call data (including the user's account address, calls, and authorization keys) to an externally-supplied URL. The response is verified via verifyPrepareCallsResponse, but this pattern still constitutes an outbound network request to an arbitrary user/parameter-controlled endpoint, which could be exploited for data exfiltration if merchantUrl is attacker-controlled. The error is only logged via console.error on failure, silently falling back to the default client.

src/viem/RelayActions.ts:277
medium

External transport via custom provider

NPS-2B7B406B16C4

Uses custom(provider) from viem to route JSON-RPC calls through a caller-supplied provider. The provider originates from the Porto instance; if that instance is attacker-controlled, all wallet RPC traffic (including signing requests) flows through it. This is expected behavior for a wallet client wrapper, but it represents a trust boundary worth highlighting.

src/viem/WalletClient.ts:62
medium

Potential signature verification weakness

NPS-108B0616CC56

verifyPrepareCallsResponse verifies a quote signature by recovering an address and comparing against quoteSigner fetched from health(client). If the relay endpoint is compromised or MITM'd, the quote signer could be replaced and malicious prepared calls accepted. The trust model relies entirely on the relay's transport security. Note: the signature is over a JSON-stringified sorted payload hashed with keccak256 - not a standard EIP-712 domain-separated scheme, which could create cross-protocol replay risks.

src/viem/internal/relayActions.ts:870
medium

Top-level import side effects

NPS-A0D6D7653DD9

The file executes '../react-native/register.js' at module import time via a top-level import statement. This side-effect import runs before any exported functionality and can perform arbitrary initialization, monkey-patching, or environment modification. While not inherently malicious, side-effect imports at the top level are a common vector for hidden behavior in third-party packages and warrant inspection of the imported module.

src/wagmi/Actions.native.ts:1
low

Dynamic URL construction and browser opening

NPS-E61AEA791C03

The open() method constructs a URL using parameters.host and messenger.relayUrl and instructs the user to open it in a browser (lines 31-35). If host or relayUrl is attacker-controlled, this could redirect users to malicious sites or leak sensitive relay tokens.

dist/cli/Dialog.js:31
low

Unbounded request body buffering

NPS-6ED74CC6661F

The POST handler accumulates the entire request body into a string with no size limit, which can lead to memory exhaustion (DoS) if a large body is sent to the local relay server.

dist/cli/Messenger.js:30
low

Public key disclosure endpoint

NPS-79A9C16994D3

The '/.well-known/keys' endpoint returns all registered public keys to any request without authentication, with wildcard CORS. Depending on what these keys represent, this may leak sensitive material to any webpage able to reach the local server.

dist/cli/Messenger.js:62
low

Dynamic import with computed path

NPS-3D53EF23E621

The code dynamically imports a chunk file using a template literal: import(./commands-Cubk9UKI.js). While the path is currently static, the pattern of dynamic imports in bundled CLI tools can be used to load additional modules at runtime, which could be exploited if the chunk filename or path is manipulated in future versions or by an attacker with write access to the package directory.

dist/cli/bin/index.js
low

Network-related functionality (potential)

NPS-68C9BD3DF1E0

The command definition for 'onboard' includes a --dialog <hostname> option defaulting to id.porto.sh, suggesting the tool may interact with external servers. However, the actual network request implementation is not present in this file (likely in the dynamically imported chunk). This is not inherently malicious but warrants scrutiny of the imported module for data exfiltration or credential harvesting.

dist/cli/bin/index.js
low

Process exit and argument parsing

NPS-A8F7FFFD0B31

The CLI uses standard argument parsing and calls process.exit(0) on the default command. No suspicious process spawning, shell commands, or file system manipulation outside the package scope are observed in this file.

dist/cli/bin/index.js
low

Insecure temporary key file permissions window

NPS-3F86024FDA62

The admin private key is written to os.tmpdir()/porto/admin-key-*.key with mode 0o600. Although the directory is created with 0o700, some platforms (notably Windows, and systems where the temp dir is shared/world-writable) may still expose this file. The filename includes a low-entropy suffix (Math.random().toString(36)), which is not cryptographic and could be brute-forced by a local attacker between write and cleanup.

dist/cli/internal/commands.js
low

Immediate sensitive write in catch block suppressed

NPS-7DC16F2A9C3D

The try/catch around temp key file creation swallows errors silently (catch { }). If writing succeeds partially or if a race condition occurs, the failure is not surfaced to the user, and later logic may proceed assuming a secure file exists.

dist/cli/internal/commands.js
low

Network requests and account-related actions to external service

NPS-E85019B5643E

The code performs wallet RPC calls (wallet_addFunds, wallet_prepareCalls, wallet_sendPreparedCalls, wallet_sendCalls) via a WalletActions/viem client against configured chains (Base / Base Sepolia) and directs the user to https://id.porto.sh. These are expected for a wallet CLI, but they do transmit account addresses, prepared call digests, and signatures over the network. There is no obvious exfiltration of harvested credentials or environment variables.

dist/cli/internal/commands.js
low

external network connection (expected)

NPS-23B35B04B6AC

The code constructs a URL from a provided host and opens a WalletClient for Porto Dialog at https://<host>/dialog. This is inherent to the Dialog feature and is not data exfiltration. The host is supplied as an option and not harvested from the environment.

dist/cli/internal/context.js:10
low

dynamic namespace import access

NPS-27D155DAF070

Chains[chain] uses a computed property from options.chain. This is a bracket access on a local imported module, not a dynamic import of external code. It is safe, but should be validated to avoid prototype pollution issues if options.chain comes from untrusted input.

dist/cli/internal/context.js:24
low

Broad iframe sandbox allowances

NPS-9F540EAE5618

Iframes are created with sandbox 'allow-forms allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox' and allow='payment; publickey-credentials-get; publickey-credentials-create' scoped to the dialog origin. allow-same-origin combined with allow-scripts is generally acceptable here since the frame is a distinct origin (id.porto.sh), but grants broad capabilities to that third-party script.

dist/core/Dialog.js:205
low

Sensitive referrer/icon metadata sent externally

NPS-6DCC2C0BC5C6

getReferrer() collects document.title and favicon URLs (including dark/light variant URLs) and transmits them to the Porto dialog host via postMessage. This leaks host-application metadata to a third party.

dist/core/Dialog.js:736
low

Focus/blur based request rejection

NPS-8A2FA46E3187

handleBlur() marks all pending requests as UserRejectedRequestError when the window loses focus. An attacker page or lost focus could cause requests to be cancelled. This is a UX/design issue rather than remote exploitation, but it also means focus-stealing can deny service.

dist/core/Dialog.js:758
low

URL parameter propagation to external origin

NPS-849F2502E794

getDialogUrl() reads all URL search parameters from the current page that start with the 'porto.' prefix and copies them into the external dialog URL (id.porto.sh). This could leak sensitive data the host application placed in its URL query string (tokens, session identifiers) to a third-party origin if the app uses 'porto.'-prefixed parameters.

dist/core/Dialog.js:772
low

Unvalidated message payload dispatch

NPS-29CCD47E1EC2

In fromWindow.on(), the handler passes event.data.payload directly to listeners and does not validate the shape of event.data before accessing topic/id. In cliRelay.onmessage, JSON.parse is performed on untrusted SSE data and payloads are forwarded to listeners. A malicious message source can deliver arbitrary objects to application listeners, potentially triggering unintended behavior if listeners trust the payload.

dist/core/Messenger.js:36
low

external-network-communication

NPS-174F60AC59C0

The module establishes default HTTP transports to relayUrls.prod.http and dialog/relay modes that communicate with hostUrls.prod. These are legitimate configurable endpoints for a wallet connector (Porto), but they are external network calls made at module initialization via defaultConfig.

dist/core/Porto.js:7
low

module-load-time-side-effects

NPS-29C33AA076EF

defaultConfig is evaluated at import time, selecting browser vs relay mode and initializing storage/transport. This is typical for this kind of library and does not itself execute privileged or suspicious operations.

dist/core/Porto.js:8
low

persistent-storage

NPS-8BDF21985EC4

Uses Zustand persist middleware with IndexedDB or in-memory storage, storing accounts and chain IDs under storageKey 'porto.store'. Standard state persistence; no credential harvesting observed, but persisted account data should be reviewed in context.

dist/core/Porto.js:10
low

Local development endpoint

NPS-1B2A52E8B151

Hardcoded localhost endpoint 'http://localhost:9119' for anvil. If this is used in production builds it could fail or potentially interact with a local attacker-controlled service. Low risk given the 'anvil' naming convention indicating development-only use.

dist/core/Transport.js:3
low

Missing source map content

NPS-676E3BE50092

A sourceMappingURL comment points to EIP7702Proxy.js.map but the map is not included here, so the origin and authenticity of the bytecode cannot be verified against a compiler output.

dist/core/internal/_generated/contracts/EIP7702Proxy.js
low

Advanced cryptographic and signature verification logic

NPS-65D8FEAF48FC

The ABI and bytecode reference EIP-712 type hashes, nonces, and signature verification functions. This is typical for meta-transaction systems but could also be repurposed for unauthorized transaction signing if the contract is deployed and used maliciously. No direct exfiltration or credential harvesting was detected in the JavaScript wrapper.

dist/core/internal/_generated/contracts/Orchestrator.js
low

Cryptocurrency smart contract ABI and bytecode

NPS-F79E12427664

This file exports an Ethereum smart contract ABI and bytecode for a contract named 'SimpleFunder'. The contract includes functions for funding operations, ownership transfer, signature-based withdrawals, and gas wallet management. While the file itself is static data (no executable JavaScript), it describes a contract capable of moving tokens and funds. The presence of signature verification for withdrawals is a security control, but the contract supports owner-controlled withdrawal and funding functions that could be misused if the contract is deployed with a malicious owner. No dynamic code execution, network requests, filesystem access, or process spawning is present in the file itself.

dist/core/internal/_generated/contracts/SimpleFunder.js
low

External network calls to untrusted module

NPS-E0FEDC32E035

Imports from 'ox/erc8010/SignatureErc8010' and uses RelayActions.getAuthorization, which likely performs network requests to a relay service to fetch authorization data. This is expected behavior for ERC-8010 signature wrapping, but involves external communication with a relay endpoint.

dist/core/internal/erc8010.js:1
low

Cryptographic signature manipulation

NPS-183B1C8D1753

The function processes and wraps cryptographic signatures, converting nonce, r, and s values to BigInt for ERC-8010 authorization. While this is a legitimate cryptographic operation, any manipulation of signatures in a wallet context warrants scrutiny since it could potentially be used in signing flows.

dist/core/internal/erc8010.js:14
low

Storage manipulation

NPS-A24F9964E2CF

The code reads from and writes to storage (config.storage.getItem and config.storage.setItem), which could be used to persist sensitive information or manipulate application state if the storage is not properly secured.

dist/core/internal/modes/dialog.js:228
low

Dynamic URL construction

NPS-7FBAFAEDA47A

The authUrl is dynamically constructed using Siwe.resolveAuthUrl with window.location.origin, which could potentially be manipulated if the origin is compromised, leading to unintended server communications.

dist/core/internal/modes/dialog.js:605
low

Data persistence of authentication URLs

NPS-38509E213101

The getAuthUrl function stores the resolved authentication URL in storage with the key 'porto.authUrl', which could be read by other scripts or persist across sessions, potentially leaking authentication endpoint information.

dist/core/internal/modes/dialog.js:610
low

Unvalidated external URL

NPS-C3E37BC2E1B7

resolveAuthUrl and resolveUrl construct URLs from caller-supplied authUrl without validating the scheme or host. A caller could provide a non-HTTP scheme or an attacker-controlled domain, causing sensitive SIWE data to be sent to unexpected destinations.

dist/core/internal/siwe.js:62
low

Top-level code execution on import

NPS-C6F24533D230

The module executes configure() at import time if isReactNative() is true and the environment is not already configured. While this appears to be legitimate React Native setup behavior, it is unconditional side-effect code that runs when the module is imported, which is worth reviewing in context of the referenced ./react-native/register.js.

dist/index.native.js:4
low

Import-time code execution

NPS-CCE18D76C8DC

The module executes configure() at import time when running in a React Native environment that hasn't been configured. This is a side effect that runs automatically on import, which could potentially be used for malicious purposes if configure() has unexpected behavior. However, no malicious intent is evident in this file itself.

dist/react-native/index.js:3

Files reviewed

FileVerdictWhat the reviewer saw
dist/cli/Dialog.js medium The code appears to be a legitimate CLI dialog implementation but has minor concerns around top-level execution, external data transmission, and URL construction that could be exploited if inputs are not trusted.
dist/cli/Messenger.js medium The code implements a local HTTP relay with wildcard CORS and Private Network Access headers plus an unauthenticated message endpoint, creating cross-origin and local-network exposure risks, but does not exhibit clear data exfiltration, credential theft, obfuscation, shell execution, or other active malware behavior.
dist/cli/bin/index.js medium The analyzed CLI file is a standard argument parser with a dynamic import of a local chunk; no direct malicious patterns (exfiltration, credential harvesting, obfuscation, backdoors) are present, but the imported chunk should be audited for network and file operations.
dist/cli/internal/commands.js medium The code is a wallet CLI that legitimately manages private keys for account creation, but it has concerning key-handling practices: writing private keys into the package's own directory and leaving temporary key files behind on abnormal exit, which weakens the security of generated credentials.
dist/core/Dialog.js medium The dialog module is legitimate wallet SDK code but exhibits several lower-severity privacy and trust-boundary concerns (URL parameter leakage to a third-party origin, metadata transmission, and origin/response handling in the postMessage bridge) that warrant review rather than indicating outright malicious behavior.
dist/core/Messenger.js medium The Messenger module is largely a benign message-passing utility, but default postMessage wildcard origins and an unvalidated configurable relay/fetch channel present medium-risk data exposure and potential exfiltration vectors if used with untrusted configuration or origins.
dist/core/Porto.js medium The file is a legitimate wallet connector store/initialization module with expected network and storage usage, showing no clear malicious patterns such as exfiltration, credential theft, eval, or shell execution.
dist/core/Transport.js medium Code appears to be a legitimate viem transport relay proxy, but hardcodes external RPC endpoints and routes sensitive wallet/account RPC methods to a third-party relay server, creating a medium-risk data exposure vector for wallet operations.
dist/core/internal/_generated/contracts/EIP7702Proxy.js medium This module only exports an ABI and opaque EVM bytecode for an EIP-7702 proxy; no JS-level malicious patterns (exfiltration, shell, env harvest) are present, but the unverified hex bytecode poses a moderate supply-chain risk since its behavior cannot be audited.
dist/core/internal/_generated/contracts/ExperimentERC721.js medium The file is a standard ABI/bytecode export for an experimental ERC-721 contract, but the opaque bytecode and public mint functions warrant caution as they could hide unrestricted minting or external token transfers.
dist/core/internal/_generated/contracts/Orchestrator.js medium Contains embedded, unaudited EVM bytecode for a smart contract orchestrator; no active malicious JavaScript behavior was detected, but the opaque bytecode warrants caution.
dist/core/internal/_generated/contracts/SimpleFunder.js medium This file is a static ABI/bytecode export for a smart contract; no malicious JavaScript patterns were detected, but the described contract holds and transfers funds under owner control, warranting caution about its deployment.
dist/core/internal/erc8010.js medium The code performs legitimate ERC-8010 signature wrapping using external relay calls, with no malicious patterns such as exfiltration, credential harvesting, obfuscation, or process spawning detected.
dist/core/internal/modes/dialog.js medium The code is a wallet dialog module that handles sensitive operations (signing, account creation, permissions) through external iframe/network communication with potential security concerns around credential handling and cross-origin requests, but no overtly malicious patterns like data exfiltration to unauthorized servers or code execution were found.
dist/core/internal/siwe.js medium The SIWE authentication module sends sensitive wallet and signature data to caller-supplied URLs with credentials included, creating a risk of data exfiltration if those URLs are not trusted or validated.
dist/index.native.js medium No overt malicious patterns are present in this entrypoint file, but the import-time invocation of configure() and the unprovided referenced modules prevent a definitive safe rating.
dist/react-native/index.js medium No clear malicious patterns detected; the file contains import-time configuration logic typical of a third-party library entrypoint, but the actual behavior depends on the referenced configure() function which is not shown.
dist/react-native/register.js medium No clear malicious patterns were found, but the file performs automatic import-time configuration with a dynamic import and top-level crypto module import, which warrants low-severity review.
dist/remote/Events.js medium No direct malicious patterns detected, but the origin validation using endsWith is insecure and could enable origin spoofing attacks against the wallet dialog system.
dist/remote/Porto.js medium The code appears to be a legitimate remote connector for a wallet application, but it includes dynamic URL parameter handling and cross-window messaging that could pose security risks if not properly validated.
dist/server/Route.js medium No clear malicious patterns were found; the file implements an RPC route handler with outbound relay calls and signing, with minor concerns around network capability, key handling, and CORS configuration that are consistent with the package's stated purpose.
dist/trusted-hosts.js medium No direct malicious code was found, but the file exposes a broad and partially untrusted hostname trust list that could create security risks if used for origin validation or authentication decisions.
dist/viem/RelayActions.js medium Code is a legitimate viem relay actions module with no direct malicious patterns, but it makes dynamic outbound requests to a caller-supplied merchantUrl and logs RPC errors, which carry minor data-exposure risk.
dist/viem/RelayClient.js medium The file is a benign Viem client factory that constructs HTTP/relay transports and caches clients; no exfiltration, credential harvesting, code execution, or backdoor patterns were found, though unbounded caching and unvalidated transport URLs are minor concerns.
dist/wagmi/Hooks.native.js medium No malicious patterns detected in this file itself, but the import-time side effect from register.js and wildcard re-export warrant a low-severity caution pending review of the referenced modules.
Show 255 more files
FileVerdictWhat the reviewer saw
src/cli/Dialog.ts medium The file contains import-time async side effects and a relay/browser communication bridge that, while seemingly intended for legitimate CLI dialog handling, warrant scrutiny for potential data exfiltration or unauthenticated relay abuse.
src/cli/Messenger.ts medium The messenger CLI relay exposes an unauthenticated HTTP/SSE endpoint with wildcard CORS and unbounded body buffering, allowing cross-origin message injection and potential local denial-of-service, though no direct data exfiltration or credential harvesting was found.
src/cli/bin/index.ts medium This CLI entrypoint uses a dynamic import and provisions an account via an external dialog host, but shows no direct malicious exfiltration, obfuscation, or shell execution patterns in the provided file.
src/cli/internal/commands.ts medium The code is legitimate account-creation CLI logic, but it handles private keys insecurely by writing them to predictable temp paths, package-local files, and potentially terminal logs, with broad process signal handling.
src/cli/internal/context.ts medium The code constructs network clients from user-supplied hostnames and RPC URLs and performs dynamic module lookup, which could enable SSRF or unintended network interactions, though no direct malicious patterns like exfiltration, credential harvesting, or code execution were found.
src/core/Messenger.ts medium The messenger implementation uses permissive postMessage target origins and weak origin/relay validation, which could allow message spoofing or exposure of RPC payloads, though no direct exfiltration, credential harvesting, or code execution patterns were found.
src/core/Storage.ts medium The module is a storage abstraction with no exfiltration, credential harvesting, dynamic execution, or install-time hooks, but its cookie backend stores arbitrary serialized values in long-lived, SameSite=None cookies and interpolates keys/values without encoding, which can expose or leak sensitive data if misused.
src/core/internal/_generated/contracts/IthacaAccountOld.ts medium The file contains obfuscated Ethereum smart contract bytecode and ABI for an account abstraction wallet (IthacaAccountOld). While no classic malware patterns (network, file, process) are present, the obfuscated contract bytecode and upgradeability features pose a medium risk because the exact on-chain behavior cannot be verified, and it could potentially be used to drain assets if deployed with malicious intent or if the upgrade mechanism is abused.
src/core/internal/modes/dialog.ts medium This is a legitimate wallet dialog mode implementation with expected cryptographic operations and external communication with the Porto dialog host; no clear malicious patterns detected, though external network calls and key handling warrant low-severity attention.
src/core/internal/modes/relay.ts medium This is a legitimate wallet/relay mode module (Porto) with expected cryptographic signing and WebAuthn handling; no exfiltration, obfuscation, process spawning, or backdoor patterns were detected, though it handles sensitive private keys and parses caller-supplied JSON for typed-data signing.
src/index.native.ts medium The file contains a top-level conditional side effect that calls configure() at import time in React Native environments, but no clear malicious patterns such as exfiltration, credential harvesting, obfuscation, or shell execution were detected.
src/react-native/crypto.ts medium The code is not malicious but globally overrides the standard Web Crypto API on native platforms at import time, which is a potentially invasive pattern that could affect other libraries' behavior.
src/react-native/index.ts medium The file itself contains no obvious malicious code, but it executes configuration logic at import time and broadly re-exports internal modules, warranting review of the referenced core modules for hidden side effects.
src/remote/Events.ts medium The code is generally safe but contains a weak origin validation using endsWith that could be bypassed by spoofed domains to trigger dialog-required actions.
src/remote/Porto.ts medium The module establishes remote messaging channels at import time and can be redirected to an attacker-supplied relay URL via a query parameter, creating a potential exfiltration/relay hijacking vector in embedding pages.
src/server/Route.ts medium The Route/merchant handler is a legitimate signing/RPC server implementation, but it applies permissive default CORS, forwards a configurable relay and error details, and parses unvalidated JSON bodies, which together present moderate security hardening concerns rather than clear malicious behavior.
src/trusted-hosts.ts medium No executable malicious patterns detected; the file is a static hostname allowlist, but it includes many development, staging, and ephemeral tunneling domains that could pose a security risk if used in production.
src/viem/Key.ts medium The Key.ts module is a legitimate cryptographic key management and signing library with no clear malicious behavior, though it uses hardcoded third-party WebAuthn origins, pluggable signing hooks, and private-key error logging that warrant review.
src/viem/RelayActions.ts medium The file is a legitimate wallet/relay action library with no credential harvesting, obfuscation, or shell execution, but contains configurable outbound network requests (merchantUrl) and error logging that warrant a warning-level review.
src/viem/WalletClient.ts medium No overtly malicious code (no exfiltration, obfuscation, process spawning, or unauthorized file/network access), but the module uses a process-wide unbounded client cache and a caller-supplied custom transport, which are trust-boundary and state-retention concerns.
src/viem/internal/relayActions.ts medium No malicious code (no exfiltration, credential harvesting, shell execution, or dynamic eval) was found; the file is a standard RPC action library for Porto Relay, with minor security-relevant caveats around signature trust and secret handling.
src/wagmi/Actions.native.ts medium The file is a small platform-specific shim that runs a side-effect import and re-exports another module; no direct malicious indicators are present, but the side-effect import should be reviewed to confirm it is benign.
src/wagmi/Hooks.native.ts medium This small TypeScript shim only performs a side-effectful relative import and a re-export, and contains no obvious malicious patterns itself, but its security depends on the behavior of '../react-native/register.js' and './Hooks.js'.
dist/cli/index.js safe Cleared by Jev triage; no further analysis needed
dist/cli/internal/context.js safe No malicious patterns detected; the code is a standard Viem/Porto client initialization with expected network and dynamic property access.
dist/cli/internal/http.js safe Cleared by Jev triage; no further analysis needed
dist/cli/internal/utils.js safe Cleared by Jev triage; no further analysis needed
dist/core/Chains.js safe No malicious patterns detected
dist/core/Mode.js safe Cleared by Jev triage; no further analysis needed
dist/core/RpcSchema.js safe No malicious patterns detected
dist/core/Storage.js safe No malicious patterns detected; the file implements standard storage adapters (IndexedDB, localStorage, cookies, memory) without any data exfiltration, credential harvesting, dynamic code execution, or other suspicious behavior.
dist/core/internal/_generated/chains.js safe The file only re-exports chain definitions from the 'viem/chains' package and contains no malicious or suspicious code.
dist/core/internal/_generated/contracts/Escrow.js safe No malicious patterns detected; the file only exports a standard Ethereum contract ABI and compiled bytecode.
dist/core/internal/_generated/contracts/ExperimentERC20.js safe No malicious patterns detected; the file contains only a Solidity contract ABI and bytecode for an ERC20 test token.
dist/core/internal/_generated/contracts/GuardedExecutor.js safe This file is a standard Ethereum smart contract ABI description (JSON) with no executable JavaScript logic, network calls, credential access, or other malicious patterns.
dist/core/internal/_generated/contracts/ICallChecker.js safe The file contains a static ABI definition for a smart contract interface with no executable code or malicious patterns.
dist/core/internal/_generated/contracts/ICommon.js safe No malicious patterns detected
dist/core/internal/_generated/contracts/IEscrow.js safe No malicious patterns detected; this file only exports a static Ethereum contract ABI and an empty bytecode string with no executable logic.
dist/core/internal/_generated/contracts/IFunder.js safe No malicious patterns detected; the file is a static ABI definition for an IFunder smart contract interface.
dist/core/internal/_generated/contracts/IFunderV4.js safe No malicious patterns detected; the file is a static Solidity ABI export with no executable logic or suspicious behavior.
dist/core/internal/_generated/contracts/IIthacaAccount.js safe No malicious patterns detected
dist/core/internal/_generated/contracts/IOAppCore.js safe No malicious patterns detected
dist/core/internal/_generated/contracts/IOAppMsgInspector.js safe This file only exports a static, hardcoded Ethereum contract ABI and empty bytecode with no executable code or malicious patterns.
dist/core/internal/_generated/contracts/IOAppReceiver.js safe No malicious patterns detected; the file only exports a static ABI array and an empty bytecode string constant.
dist/core/internal/_generated/contracts/IOrchestrator.js safe No malicious patterns detected; the file is a static ABI contract definition with no executable or suspicious code.
dist/core/internal/_generated/contracts/ISettler.js safe No malicious patterns detected; this is a static ABI export for a smart contract interface with no executable code or network/file/credential access.
dist/core/internal/_generated/contracts/ISigner.js safe No malicious patterns detected
dist/core/internal/_generated/contracts/IthacaAccount.js safe This file contains only a standard Ethereum smart contract ABI definition and compiled bytecode, with no malicious JavaScript patterns, network calls, or process/file manipulation.
dist/core/internal/_generated/contracts/IthacaAccountNew.js safe No malicious patterns detected; the file contains only a Solidity contract ABI and bytecode for an Ethereum smart contract account, with no JavaScript execution, network calls, or filesystem access.
dist/core/internal/_generated/contracts/IthacaAccountOld.js safe This file contains only a static Ethereum smart contract ABI and precompiled bytecode for the IthacaAccountOld contract, with no executable JavaScript or malicious patterns present.
dist/core/internal/_generated/contracts/LayerZeroSettler.js safe This is a standard auto-generated Ethereum contract ABI and bytecode file for a LayerZero settler contract, containing only static data exports with no executable code, network calls, environment access, or other malicious patterns.
dist/core/internal/_generated/contracts/LibNonce.js safe This file is a benign generated contract ABI and bytecode constant for a nonce library, with no executable logic or malicious patterns.
dist/core/internal/_generated/contracts/LibTStack.js safe No malicious patterns detected; the file contains a static ABI array and a benign EVM bytecode constant with no executable or exfiltration logic.
dist/core/internal/_generated/contracts/MultiSigSigner.js safe This file only exports a standard Ethereum smart contract ABI and compiled bytecode for a MultiSigSigner contract with no malicious patterns.
dist/core/internal/_generated/contracts/OApp.js safe The file only exports a static ABI definition and an empty bytecode string for a LayerZero OApp contract, with no executable or malicious code.
dist/core/internal/_generated/contracts/OAppCore.js safe This file only exports static ABI metadata and an empty bytecode string for a LayerZero OApp contract interface, with no executable code, network calls, filesystem access, or suspicious patterns.
dist/core/internal/_generated/contracts/OAppReceiver.js safe This file contains only a statically defined Ethereum smart contract ABI array and an empty bytecode string with no executable logic, network calls, or suspicious patterns.
dist/core/internal/_generated/contracts/OAppSender.js safe No malicious patterns detected in this static ABI definition file; it contains only contract interface metadata and no executable code, network activity, or credential access.
dist/core/internal/_generated/contracts/SimpleSettler.js safe No malicious patterns detected; the file only exports an Ethereum contract ABI and bytecode with no executable JavaScript logic, network calls, or filesystem access.
dist/core/internal/_generated/contracts/Simulator.js safe No malicious patterns detected; the file contains a standard Ethereum contract ABI definition and compiled bytecode for a gas simulation contract.
dist/core/internal/_generated/contracts/TokenTransferLib.js safe No malicious patterns detected; the file only exports an empty ABI array and a short EVM bytecode string with no executable or suspicious behavior.
dist/core/internal/call.js safe The code only defines pure utility functions for encoding Ethereum contract call data using standard ABI encoding; no network, filesystem, process execution, dynamic code, or exfiltration behavior is present.
dist/core/internal/intersectionObserver.js safe Cleared by Jev triage; no further analysis needed
dist/core/internal/logger.js safe Cleared by Jev triage; no further analysis needed
dist/core/internal/mode.js safe No malicious patterns detected
dist/core/internal/modes/reactNative.js safe No malicious patterns detected; the file is a benign React Native mode wrapper for a dialog-based authentication flow.
dist/core/internal/modes/relay.js safe No malicious patterns detected in the relay mode implementation; the code handles WebAuthn authentication, account management, and relay interactions with no exfiltration, obfuscation, or suspicious activity.
dist/core/internal/permissions.js safe No malicious patterns detected; the file contains only pure data transformation functions for permission/key conversion with no network, filesystem, process, or dynamic execution behavior.
dist/core/internal/permissionsRequest.js safe No malicious patterns detected in the analyzed permissions request module; the code performs cryptographic key creation and permission resolution without any data exfiltration, obfuscation, or other red flags.
dist/core/internal/porto.js safe No malicious patterns detected
dist/core/internal/promise.js safe Cleared by Jev triage; no further analysis needed
dist/core/internal/provider.js safe No malicious patterns detected; the code implements a legitimate Ethereum wallet provider with standard RPC method handlers, schema validation, and account/permission management.
dist/core/internal/relay/rpcSchema.js safe Cleared by Jev triage; no further analysis needed
dist/core/internal/relay/schema/capabilities.js safe No malicious patterns detected; the file contains only Zod schema definitions for RPC capabilities with no network, filesystem, process, or dynamic code execution activity.
dist/core/internal/relay/schema/intent.js safe No malicious patterns detected; the file only defines Zod validation schemas for an Intent type with no network, filesystem, process, or dynamic execution behavior.
dist/core/internal/relay/schema/key.js safe No malicious patterns detected
dist/core/internal/relay/schema/permission.js safe Cleared by Jev triage; no further analysis needed
dist/core/internal/relay/schema/preCall.js safe No malicious patterns detected
dist/core/internal/relay/schema/quotes.js safe No malicious patterns detected; the file only defines Zod schemas for RPC quote data.
dist/core/internal/relay/schema/rpc.js safe No malicious patterns detected; the file only defines Zod schemas for JSON-RPC types and performs no network, filesystem, process, or credential operations.
dist/core/internal/relay/schema/token.js safe Cleared by Jev triage; no further analysis needed
dist/core/internal/requiredFunds.js safe Cleared by Jev triage; no further analysis needed
dist/core/internal/schema/capabilities.js safe This file only defines Zod schema validators for a capabilities API and contains no malicious patterns, network requests, dynamic code execution, or filesystem access.
dist/core/internal/schema/key.js safe No malicious patterns detected
dist/core/internal/schema/permissions.js safe This is a Zod schema definition file for permission objects with no executable, network, or filesystem behavior; no malicious patterns detected.
dist/core/internal/schema/request.js safe No malicious patterns detected; the file only defines Zod schemas and validation logic for RPC requests without any exfiltration, credential harvesting, obfuscation, or process spawning.
dist/core/internal/schema/rpc.js safe No malicious patterns detected; the file only defines Zod schemas for Ethereum wallet JSON-RPC methods and contains no executable, exfiltration, or obfuscated code.
dist/core/internal/schema/token.js safe No malicious patterns detected
dist/core/internal/schema/utils.js safe Cleared by Jev triage; no further analysis needed
dist/core/internal/store.js safe Cleared by Jev triage; no further analysis needed
dist/core/internal/tokens.js safe No malicious patterns detected; the code only performs token lookup and resolution using RelayActions with no network, filesystem, process, or dynamic execution behavior.
dist/core/internal/types.js safe No malicious patterns detected
dist/core/internal/urlString.js safe No malicious patterns detected
dist/core/internal/userAgent.js safe Cleared by Jev triage; no further analysis needed
dist/core/internal/utils.js safe No malicious patterns detected; the utilities perform benign value normalization, deduplication, UUID generation, and in-flight promise caching without any data exfiltration, credential harvesting, dynamic execution, or process spawning.
dist/core/react-native/Porto.js safe Cleared by Jev triage; no further analysis needed
dist/core/react-native/configure.js safe No malicious patterns detected; this module only configures Expo authentication session handling for React Native.
dist/core/react-native/environment.js safe No malicious patterns detected; the module simply stores and retrieves a React Native environment object with no network, filesystem, process, or dynamic code execution activity.
dist/core/react-native/index.js safe Cleared by Jev triage; no further analysis needed
dist/core/react-native/utils.js safe Cleared by Jev triage; no further analysis needed
dist/index.js safe No malicious patterns detected in the export-only module; all imports are static and resolve to relative internal paths with no executable or obfuscated code.
dist/internal/index.js safe No malicious patterns detected
dist/react-native/crypto.js safe No malicious patterns detected
dist/register/index.js safe No malicious patterns detected
dist/remote/Actions.js safe No malicious patterns detected
dist/remote/Hooks.js safe The file contains only standard React hooks for accessing a wallet/account store and shows no malicious patterns such as data exfiltration, credential harvesting, obfuscation, or process spawning.
dist/remote/index.js safe Cleared by Jev triage; no further analysis needed
dist/remote/internal/methodPolicies.js safe No malicious patterns detected; the file only defines a static policy configuration for wallet-related RPC methods without any executable or exfiltration behavior.
dist/server/Router.js safe No malicious patterns detected in this routing utility file; it only sets up HTTP route handlers and groups routes.
dist/server/index.js safe No malicious patterns detected
dist/server/internal/merchantSchema.js safe No malicious patterns detected; the file contains only static schema imports, re-exports, and Zod-based request validation logic.
dist/server/internal/requestListener.js safe No malicious patterns detected; the code is a legitimate Node.js adapter for fetch handlers with standard request/response processing.
dist/theme/Theme.js safe Cleared by Jev triage; no further analysis needed
dist/theme/index.js safe The file only re-exports from a local module and contains no malicious patterns.
dist/viem/Account.js safe No malicious patterns detected; the code is a legitimate cryptographic account abstraction module for viem/ox with no data exfiltration, credential harvesting, obfuscation, or unauthorized system access.
dist/viem/AccountActions.js safe No malicious patterns detected; the file contains a straightforward RPC wrapper for email verification with schema validation.
dist/viem/CapabilitiesSchema.js safe The file contains only an empty export statement and a source map reference with no executable or suspicious code.
dist/viem/ContractActions.js safe No malicious patterns detected in the reviewed source file; the code performs legitimate Ethereum contract interaction and signing logic without data exfiltration, credential harvesting, obfuscation, or process/network abuse.
dist/viem/Key.js safe No malicious patterns detected; the file is a legitimate cryptographic key management module for the viem/ox libraries with no data exfiltration, code execution, or suspicious network/file operations.
dist/viem/RpcSchema.js safe No malicious patterns detected; the file contains only an empty export statement and a source map reference.
dist/viem/WalletActions.js safe No malicious patterns detected; the code is a legitimate viem wallet actions module that only uses standard RPC calls, zod validation, and avoids all listed red flags.
dist/viem/WalletClient.js safe No malicious patterns detected; the code only implements a client caching wrapper for viem without any suspicious behavior.
dist/viem/index.js safe The file consists solely of re-export statements with no executable code, I/O, network, or suspicious constructs.
dist/viem/internal/relayActions.js safe This is a legitimate viem/Porto relay RPC client module; no exfiltration, credential harvesting, obfuscation, dynamic code execution, process spawning, or install-time hooks were detected, though a few design-level trust caveats exist (secret-in-RPC-param, relay-trusted quote verification).
dist/viem/internal/utils.js safe No malicious patterns detected
dist/wagmi/Actions.js safe No malicious patterns detected
dist/wagmi/Actions.native.js safe No malicious patterns detected
dist/wagmi/Connector.js safe No malicious patterns detected; the code is a standard Wagmi wallet connector implementation for Porto with no exfiltration, credential harvesting, obfuscation, or backdoor behavior.
dist/wagmi/Hooks.js safe No malicious patterns detected
dist/wagmi/Query.js safe No malicious patterns detected
dist/wagmi/index.js safe This file only re-exports modules from local files with no suspicious behavior, network activity, or code execution.
dist/wagmi/index.native.js safe No malicious patterns detected
dist/wagmi/internal/core.js safe No malicious patterns detected; this is standard wagmi/viem wallet connector code with no exfiltration, obfuscation, or unauthorized system access.
dist/wagmi/internal/query.js safe No malicious patterns detected; the file contains only pure functions that construct query keys for Wagmi, with no side effects, network calls, or dynamic code execution.
dist/wagmi/internal/react.js safe No malicious patterns detected; the file contains standard React hooks for wagmi account management and TanStack Query integration without any exfiltration, obfuscation, or suspicious system access.
dist/wagmi/internal/types.js safe No malicious patterns detected
dist/wagmi/internal/utils.js safe Cleared by Jev triage; no further analysis needed
src/cli/index.ts safe Cleared by Jev triage; no further analysis needed
src/cli/internal/http.ts safe Cleared by Jev triage; no further analysis needed
src/cli/internal/utils.ts safe Cleared by Jev triage; no further analysis needed
src/cli/tsdown.config.ts safe This is a standard tsdown build configuration file that reads package.json to compute external dependencies; it contains no malicious patterns.
src/core/Chains.ts safe Cleared by Jev triage; no further analysis needed
src/core/Dialog.ts safe The file implements Porto wallet dialogs (iframe, popup, React Native auth session, inline) with postMessage messaging to hardcoded wallet origins and no signs of data exfiltration, credential harvesting, obfuscated execution, reverse shells, mining, or filesystem/process abuse.
src/core/Mode.ts safe Cleared by Jev triage; no further analysis needed
src/core/Porto.ts safe No malicious patterns detected; the code is a standard Web3 wallet SDK store/configuration module with no exfiltration, credential harvesting, obfuscation, shell execution, or dynamic code loading.
src/core/RpcSchema.ts safe This file only contains TypeScript type definitions and imports with no runtime code or malicious patterns.
src/core/Transport.ts safe No malicious patterns detected; the code defines a transparent relay proxy transport for viem with no data exfiltration, credential harvesting, obfuscation, or dynamic code execution.
src/core/internal/_generated/chains.ts safe This is a simple static re-export of chain definitions from the viem/chains library with no malicious patterns, dynamic code execution, network requests, or file system access.
src/core/internal/_generated/contracts/EIP7702Proxy.ts safe No malicious patterns detected; the file only exports a static Solidity ABI and a fixed bytecode constant for an EIP-7702 proxy contract with no executable JavaScript logic.
src/core/internal/_generated/contracts/Escrow.ts safe This file contains only a standard Ethereum smart contract ABI definition and compiled bytecode for an escrow contract; no malicious patterns, external data exfiltration, credential harvesting, dynamic code execution, or install-time behavior are present.
src/core/internal/_generated/contracts/ExperimentERC20.ts safe No malicious patterns detected; the file contains a standard ERC20 contract ABI and bytecode.
src/core/internal/_generated/contracts/ExperimentERC721.ts safe This file contains only a static ABI definition and compiled bytecode for an ERC-721 NFT contract; it contains no executable JavaScript/TypeScript logic, network calls, environment access, or other malicious patterns.
src/core/internal/_generated/contracts/GuardedExecutor.ts safe This file only contains a static Solidity contract ABI definition and an empty bytecode placeholder, with no executable logic or malicious patterns.
src/core/internal/_generated/contracts/ICallChecker.ts safe No malicious patterns detected
src/core/internal/_generated/contracts/ICommon.ts safe No malicious patterns detected
src/core/internal/_generated/contracts/IEscrow.ts safe No malicious patterns detected; this file only contains a static ABI definition for an escrow smart contract interface with no executable logic, network calls, filesystem access, or obfuscation.
src/core/internal/_generated/contracts/IFunder.ts safe No malicious patterns detected; file only exports a static ABI definition and empty bytecode string for a funder contract interface.
src/core/internal/_generated/contracts/IFunderV4.ts safe No malicious patterns detected; the file only exports a static ABI array and a placeholder bytecode constant for an interface, with no executable logic or suspicious behavior.
src/core/internal/_generated/contracts/IIthacaAccount.ts safe No malicious patterns detected; the file contains only a static Ethereum contract ABI definition and an empty bytecode string with no executable or exfiltration behavior.
src/core/internal/_generated/contracts/IOAppCore.ts safe The file is a static ABI definition and empty bytecode constant for a LayerZero OApp contract interface, containing no executable code, network activity, filesystem access, or malicious patterns.
src/core/internal/_generated/contracts/IOAppMsgInspector.ts safe No malicious patterns detected
src/core/internal/_generated/contracts/IOAppReceiver.ts safe No malicious patterns detected; the file is a static ABI definition with no executable or network activity.
src/core/internal/_generated/contracts/IOrchestrator.ts safe This file only exports a static Solidity contract ABI and an empty bytecode string; no executable code, network calls, credential access, or malicious patterns are present.
src/core/internal/_generated/contracts/ISettler.ts safe The file contains only a static, declarative Ethereum contract ABI and an empty contract bytecode constant, with no executable logic or malicious patterns.
src/core/internal/_generated/contracts/ISigner.ts safe No malicious patterns detected
src/core/internal/_generated/contracts/IthacaAccount.ts safe The file is a static, generated TypeScript ABI definition and contract bytecode export for an Ethereum smart contract, with no executable JavaScript logic, network access, filesystem manipulation, or malicious patterns present.
src/core/internal/_generated/contracts/IthacaAccountNew.ts safe This file contains only a static ABI definition and a precompiled contract bytecode string; no executable JavaScript/TypeScript logic, network calls, file access, or obfuscated payloads were detected.
src/core/internal/_generated/contracts/LayerZeroSettler.ts safe This file contains only a standard Solidity contract ABI and bytecode for a LayerZero settler contract, with no executable JavaScript/TypeScript logic or malicious patterns.
src/core/internal/_generated/contracts/LibNonce.ts safe The file only exports a static ABI definition and a fixed bytecode constant; no executable, obfuscated, network, filesystem, or environment-accessing behavior is present.
src/core/internal/_generated/contracts/LibTStack.ts safe The file contains an empty ABI array and a short contract bytecode string with no executable logic, data exfiltration, or other malicious patterns.
src/core/internal/_generated/contracts/MultiSigSigner.ts safe No malicious patterns detected; the file contains standard Ethereum ABI and bytecode for a multi-signature signer contract with no exfiltration, obfuscation, or suspicious runtime behavior.
src/core/internal/_generated/contracts/OApp.ts safe The file contains only a static ABI definition and an empty bytecode constant, with no executable logic or malicious patterns.
src/core/internal/_generated/contracts/OAppCore.ts safe The file contains only a standard static ABI definition and an empty code constant, with no executable logic or malicious patterns.
src/core/internal/_generated/contracts/OAppReceiver.ts safe This file contains only a standard LayerZero OAppReceiver ABI definition and an empty bytecode placeholder, with no executable logic or malicious patterns.
src/core/internal/_generated/contracts/OAppSender.ts safe No malicious patterns detected; the file only contains a static ABI definition and an empty bytecode constant for a LayerZero OAppSender contract.
src/core/internal/_generated/contracts/Orchestrator.ts safe This file contains only a standard Ethereum contract ABI and bytecode constant for a legitimate-looking orchestration contract, with no executable JavaScript/TypeScript logic or malicious patterns.
src/core/internal/_generated/contracts/SimpleFunder.ts safe No malicious patterns detected; the file contains a standard Ethereum contract ABI and bytecode with no executable JavaScript/TypeScript logic or external interactions.
src/core/internal/_generated/contracts/SimpleSettler.ts safe This file only exports a Solidity contract ABI and bytecode; it contains no executable JavaScript/TypeScript logic, no network or filesystem operations, and no suspicious patterns.
src/core/internal/_generated/contracts/Simulator.ts safe No malicious patterns detected; the file contains only a standard Ethereum contract ABI and its compiled bytecode with no executable JavaScript/TypeScript logic.
src/core/internal/_generated/contracts/TokenTransferLib.ts safe The file contains an empty ABI array and a short contract bytecode string with no executable logic, data exfiltration, or other malicious patterns.
src/core/internal/call.ts safe No malicious patterns detected; the code consists of pure, deterministic ABI-encoding helper functions for a smart account contract without any network, filesystem, process, or dynamic-execution behavior.
src/core/internal/erc8010.ts safe No malicious patterns detected; the code is a benign ERC-8010 signature wrapper that uses standard viem and ox libraries without exfiltration, obfuscation, or system access.
src/core/internal/intersectionObserver.ts safe Cleared by Jev triage; no further analysis needed
src/core/internal/logger.ts safe Cleared by Jev triage; no further analysis needed
src/core/internal/mode.ts safe No malicious patterns detected
src/core/internal/modes/reactNative.ts safe No malicious patterns detected
src/core/internal/permissions.ts safe No malicious patterns detected; the code only performs type-safe data mapping between Key and Permissions structures without any network, filesystem, process, or dynamic code execution activities.
src/core/internal/permissionsRequest.ts safe No malicious patterns detected; the code is a straightforward permissions request transformation utility with no network, filesystem, process, or obfuscated behavior.
src/core/internal/porto.ts safe Cleared by Jev triage; no further analysis needed
src/core/internal/promise.ts safe Cleared by Jev triage; no further analysis needed
src/core/internal/provider.ts safe No malicious patterns detected in the provider implementation; all code is legitimate wallet-provider logic with no exfiltration, obfuscation, or dynamic execution.
src/core/internal/relay/rpcSchema.ts safe No malicious patterns detected; the file contains only TypeScript type definitions for JSON-RPC schema mappings with no runtime code, network activity, or credential access.
src/core/internal/relay/schema/capabilities.ts safe No malicious patterns detected
src/core/internal/relay/schema/intent.ts safe No malicious patterns detected; the file contains only Zod schema definitions and TypeScript type exports with no executable or suspicious code.
src/core/internal/relay/schema/key.ts safe No malicious patterns detected
src/core/internal/relay/schema/permission.ts safe Cleared by Jev triage; no further analysis needed
src/core/internal/relay/schema/preCall.ts safe No malicious patterns detected; the file only defines Zod schemas for Ethereum transaction pre-call data with no network, filesystem, process, or obfuscated code.
src/core/internal/relay/schema/quotes.ts safe No malicious patterns detected
src/core/internal/relay/schema/rpc.ts safe No malicious patterns detected
src/core/internal/relay/schema/token.ts safe Cleared by Jev triage; no further analysis needed
src/core/internal/requiredFunds.ts safe Cleared by Jev triage; no further analysis needed
src/core/internal/schema/capabilities.ts safe This file only defines Zod validation schemas for capability types with no malicious patterns; the optional authUrl field is a minor SSRF consideration for consumers but not a vulnerability in this code.
src/core/internal/schema/key.ts safe No malicious patterns detected
src/core/internal/schema/permissions.ts safe No malicious patterns detected; the file only defines Zod validation schemas for permission and request structures.
src/core/internal/schema/request.bench.ts safe No malicious patterns detected; the file is a benchmark test for request schema validation with no network, filesystem, process, or dynamic code execution activity.
src/core/internal/schema/request.ts safe No malicious patterns detected
src/core/internal/schema/rpc.ts safe No malicious patterns detected; the file only defines Zod schemas for RPC method request/response validation.
src/core/internal/schema/token.ts safe Cleared by Jev triage; no further analysis needed
src/core/internal/schema/utils.ts safe Cleared by Jev triage; no further analysis needed
src/core/internal/siwe.ts safe No malicious patterns detected
src/core/internal/store.ts safe Cleared by Jev triage; no further analysis needed
src/core/internal/tokens.ts safe No malicious patterns detected; the module only defines token lookup and resolution helpers using viem/ox utilities and relay capabilities.
src/core/internal/types.ts safe Cleared by Jev triage; no further analysis needed
src/core/internal/urlString.ts safe No malicious patterns detected; the function only converts relative URLs to absolute using the current window origin.
src/core/internal/userAgent.ts safe No malicious patterns detected; the code only performs standard browser feature and user-agent detection with no network, filesystem, process, or dynamic execution risks.
src/core/internal/utils.ts safe No malicious patterns detected; the code contains only standard utility functions for value normalization, deduplication, UUID generation, and promise caching without any suspicious behavior.
src/core/react-native/Porto.ts safe Cleared by Jev triage; no further analysis needed
src/core/react-native/configure.ts safe No malicious patterns detected; the file only configures Expo authentication session helpers for React Native.
src/core/react-native/environment.ts safe Cleared by Jev triage; no further analysis needed
src/core/react-native/index.ts safe Cleared by Jev triage; no further analysis needed
src/core/react-native/utils.ts safe Cleared by Jev triage; no further analysis needed
src/index.ts safe The file contains only static module re-exports with no executable logic, network activity, credential access, or other malicious patterns.
src/internal/index.ts safe Cleared by Jev triage; no further analysis needed
src/react-native/register.ts safe No malicious patterns detected
src/register/index.ts safe This is a TypeScript module augmentation file that only declares types for viem's Register interface, with no executable code, network access, or suspicious patterns.
src/remote/Actions.ts safe The code handles internal RPC request rejection and response logic without malicious patterns such as data exfiltration, credential harvesting, dynamic code execution, or shell command spawning.
src/remote/Hooks.ts safe This file contains only React hooks for reading state from a local Zustand store; no network, filesystem, process, or dynamic execution patterns are present.
src/remote/index.ts safe Cleared by Jev triage; no further analysis needed
src/remote/internal/methodPolicies.ts safe No malicious patterns detected; the file defines static method policies and imports a user-agent utility without any exfiltration, obfuscation, or dangerous behavior.
src/server/Router.ts safe No malicious patterns detected
src/server/index.ts safe Cleared by Jev triage; no further analysis needed
src/server/internal/merchantSchema.ts safe No malicious patterns detected
src/server/internal/requestListener.ts safe No malicious patterns detected; the code is a legitimate Node.js fetch-handler request listener adapter with no exfiltration, obfuscation, credential harvesting, or process execution.
src/theme/Theme.ts safe Cleared by Jev triage; no further analysis needed
src/theme/index.ts safe Cleared by Jev triage; no further analysis needed
src/viem/Account.ts safe The provided TypeScript file is a legitimate Viem/Porto account abstraction module that only performs cryptographic signing, key management, and typed-data hashing operations with no suspicious network, filesystem, process, or dynamic execution patterns.
src/viem/AccountActions.ts safe No malicious patterns detected
src/viem/CapabilitiesSchema.ts safe No malicious patterns detected
src/viem/ContractActions.ts safe No malicious patterns detected; the code is a legitimate Ethereum account abstraction library implementation using viem and ox for EIP-7702 and EIP-7821 execution flows.
src/viem/RelayClient.ts safe No malicious patterns detected
src/viem/RpcSchema.ts safe No malicious patterns detected; the file contains only type definitions and type-level transformations with no runtime code.
src/viem/WalletActions.ts safe This is a legitimate viem wallet actions module for the Porto wallet, containing only standard RPC wallet method implementations with no malicious patterns, data exfiltration, credential harvesting, or dynamic code execution.
src/viem/index.ts safe This is a simple barrel file re-exporting modules from the viem library, with no executable code, network requests, or suspicious patterns.
src/viem/internal/utils.ts safe Cleared by Jev triage; no further analysis needed
src/wagmi/Actions.ts safe This is a simple re-export module with no executable logic, network access, or suspicious patterns detected.
src/wagmi/Connector.ts safe The code appears to be a legitimate wagmi connector for the Porto wallet, with no malicious patterns detected.
src/wagmi/Hooks.ts safe This file is a simple re-export module containing no executable code, side effects, or suspicious patterns; it safely re-exports hooks from an internal module.
src/wagmi/Query.ts safe Cleared by Jev triage; no further analysis needed
src/wagmi/index.native.ts safe No malicious patterns detected; the file only registers the React Native-specific module and re-exports the standard index, with no dynamic code execution, network, filesystem, or process activity.
src/wagmi/index.ts safe The file only contains static re-exports of local modules with no executable code, network calls, file system access, or obfuscation.
src/wagmi/internal/core.ts safe No malicious patterns detected; the code is a legitimate wagmi/viem connector integration with no exfiltration, obfuscation, credential harvesting, or shell/process execution.
src/wagmi/internal/query.ts safe No malicious patterns detected
src/wagmi/internal/react.ts safe No malicious patterns detected; the file contains standard React hooks for wagmi blockchain account and permissions management.
src/wagmi/internal/types.ts safe This TypeScript file contains only type definitions for wagmi parameters with no executable code or malicious patterns.
src/wagmi/internal/utils.ts safe Cleared by Jev triage; no further analysis needed

Scanned versions of porto

VersionVerdictFilesScanned
0.2.35 Needs review 280 Oct 4, 2026

Frequently asked questions

Is porto safe to use?

No confirmed malware was found in porto@0.2.35, but the review flagged 69 medium, 98 low severity findings for risky patterns worth checking before you rely on it.

Does porto contain malware?

No malware was identified in porto@0.2.35 when Togoder Security scanned it on Oct 4, 2026. A new version can still introduce malicious code, so scan the exact versions in your lockfile.

How was porto checked?

Togoder Security downloaded the published npm package and had an AI model read its 280 source files, looking for install scripts, credential access, network exfiltration, obfuscation, backdoors and crypto-wallet theft. The results are cached by file hash and shown here.

How do I scan porto together with the rest of my dependencies?

Upload your lockfile at https://security.togoder.click/scan or call the API documented at https://security.togoder.click/api-docs. Files that have already been scanned, like the ones in porto@0.2.35, cost nothing.

Related security reports