Alchemy ERC security record

Ethereumalchemy.com

As of 29 Oct 2026, Alchemy ERC has 6 audit reports by 1 security firm on Trustblock; the latest is by Quantstamp, dated 20 May 2025. Those reports list no open critical findings.

Critical findings
No open critical findings
Across 6 reports.
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits and findings, contracts and incidents up to Oct 2026. Trustblock does not review code.

Audits6

Newest first

AuditSecurity firmDateScopeCritical findingsReport
Alchemy ERC-4337 PaymastersSecurity firm: QuantstampDate: Scope: Files named in the reportNo open critical findingsOpen · certificate.quantstamp.com
Alchemy - Modular Account V2Security firm: QuantstampDate: Scope: Files named in the reportNo open critical findingsOpen · certificate.quantstamp.com
Alchemy - LightAccount v2Security firm: QuantstampDate: Scope: Repository at commit 93f46a2No open critical findingsOpen · certificate.quantstamp.com
Alchemy - Multisig PluginSecurity firm: QuantstampDate: Scope: Repository at commit 70089a2No open critical findingsOpen · certificate.quantstamp.com
Alchemy Modular AccountSecurity firm: QuantstampDate: Scope: Files named in the reportNo open critical findingsOpen · certificate.quantstamp.com
Alchemy Light AccountSecurity firm: QuantstampDate: Scope: Repository at commit aa8196bNo open critical findingsOpen · certificate.quantstamp.com

Findings85

Statuses are the security firm’s own, from each report.

SeverityOpenAcknowledgedFixed
Critical000
High004
Medium124
Low33536
MediumOther Plugins May Enable Runtime Execution of Session KeysAlchemy Modular Account · Quantstamp · 30 Jan 2024Open

As mentioned in the code comments at L245-L247, session keys are only expected to be used in the user operation context. Therefore, `SessionKeyPlugin` does not define the runtime validation function for `executeWithSessionKey()`, with the assumption that any function call in runtime to `executeWithSessionKey()` will revert due to the lack of validation function. In usual cases, such design should work as expected since `UpgradeableModularAccount` reverts with a `RuntimeValidationFunctionMissing()` error if the validation function corresponding to a runtime call does not exist, except the cases for self-calls to `installPlugin()` or `upgradeToAndCall()`. However, any other installed plugin can add a runtime validation function to `executeWithSessionKey()`, enabling and allowing session keys in runtime. Also, during the runtime call, the session key validation implemented in `userOpValidationFunction()` will be bypassed and not enforced.

Open the report
LowUncleared Upper Bits of Variables in Inline AssemblyAlchemy - LightAccount v2 · Quantstamp · 9 Apr 2024Open

In the `_getCombinedSalt()` function of `LightAccountFactory`, the input parameter `owner` is an address, and hence the upper bits are not guaranteed to be 0 when reading its value in assembly. According to the latest [Solidity Inline Assembly documentation](https://docs.soliditylang.org/en/v0.8.25/assembly.html) at the time of writing: > "If you access variables of a type that spans less than 256 bits (for example uint64, address, or bytes16), you cannot make any assumptions about bits not part of the encoding of the type. Especially, do not assume them to be zero. To be safe, always clear the data properly before you use it in a context where this is important […]" Any dirty upper bit in `owner` may lead to a different result of `_getCombinedSalt()` and, therefore, a different account address.

Open the report
LowBundler May Drop UserOps if the `owner` of LightAccount Violates ERC-4337's Validation Requirements in `isValidSignature()`Alchemy Light Account · Quantstamp · 27 Sep 2023Open

The `LightAccount` wallet supports user operations validation by either EOA or [`ERC-1271`](https://eips.ethereum.org/EIPS/eip-1271) signature validation method. It is important to note that the ERC-1271 signature validation only works when the `owner` of the wallet supports `ERC-1271`. According to the `ERC-1271` standard: > `isValidSignature` can call arbitrary methods to validate a given signature, which could be context dependent (e.g. time based or state based), EOA dependent (e.g. signers authorization level within smart wallet), signature scheme Dependent (e.g. ECDSA, multisig, BLS), etc. Therefore, a contract that supports `ERC-1271` may read storage or the current blockchain state to determine the validity of a signature. However, the usage of `ERC-1271` for the validation of user operations may have specific limitations due to the restrictions of opcode banning and storage access outlined in the [`ERC-4337`](https://eips.ethereum.org/EIPS/eip-4337) standard. Specifically, during the validation phase, wallets are not allowed to use any forbidden opcodes, including `TIMESTAMP` and `NUMBER`. Additionally, storage access is restricted to self-storage or storage associated with the wallet's address. This restriction prevents `ERC-1967` proxies from being an owner of a `LightAccount`, as they access a constant implementation slot not associated with the wallet. These restrictions also mean that violating the storage access rule on the `owner` would lead to bundlers dropping the UserOps that are sent to the `owner`'s light account. While typically, this is recoverable by directly operating on the `owner` smart contract itself, it may not be the expected behavior. There is also the possibility of not being able to recover if the `owner` smart contract is not well designed. Furthermore, the `LightAccount.isValidSignature()` function cannot be used for user operation validation since `LightAccount` is deployed as an `ERC-1967` proxy and implements a customized storage slot pattern that triggers a storage access violation when the wallet attempts to read its `owner`.

Open the report
LowCritical Role Transfer Not Following Two-Step PatternAlchemy Light Account · Quantstamp · 27 Sep 2023Open

In the `LightAccount` wallet, the `owner` can transfer their ownership to another address through the `transferOwnership()` function. This transfer of ownership can occur either directly or by `ERC-4337` user operations. However, the wallet can lose ownership if the `newOwner` address is accidentally provided as an uncontrollable address or a smart contract that does not support `ERC-1271`. As a result, all user operations to the wallet will fail during the validation phase, effectively making the wallet unusable.

Open the report

Contracts

No deployed address is recorded for these audits.

The reports name a repository or files. Open a report to see its scope.

The repositories and files the reports name

Show this on your site

Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.

Content

Facts

Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="alchemy-erc"
></div>
</body>

Paste the code where the label should appear. It uses no API credit and updates by itself.

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us