- Proactive security: Privy systems are engineered and built with security in mind. This means resource isolation and cryptographic architecture layered with a defense-in-depth approach, designed to protect your wallets. This also means doing cryptographic and infrastructure audits on a quarterly basis, as well as running a Vulnerability Disclosure Program and active Bug Bounty Program.
- Active monitoring: Privy systems are instrumented for active monitoring. This means automated alerts triggered by unexpected or abnormal activity and an on-call engineering team on standby 24/7. As our customers deploy apps, we work to monitor activity across the threat landscape online and collaborate with service providers to take down malicious threats.
- Defensive measures: Privy is built with failsafes to enable developers and their users to cut off access to key material in the event of an emergency. We work on pre-approved procedures for such instances with our enterprise customers and are always at the ready to protect user assets in the case of attack.
Security philosophy
Security is continuous work, not a one-time achievement. We recognize that wallets are not one size fits all, and we build highly configurable, flexible wallet infrastructure so you can configure the system appropriate for your use-case. Moreover, security needs evolve as asset value grows. We give developers flexibility to build appropriate experiences while guiding them toward security best practices. We support the full spectrum from email-based embedded wallets to hardware-secured cold storage, recognizing the inherent tradeoffs in any cryptosystem.Understanding threat models
The below summarizes some key questions but is not exhaustive. Please reach out for a deeper discussion on threat modeling or other attack strategies.Cross-application security
Q: Can unauthorized applications access the Privy iframe?
No, as long as your administrators configure your app with the proper allowed origins in the Privy dashboard. Privy has a permissive default to bootstrap the rapid development of apps, but when taking an app to production and the allowed origins are set, the served iframe enforces that all frame ancestors must be within those allowed origins. This is enforced by both frame ancestor CSP checks and in-code origin validation.Q: Can unauthorized applications send messages to the Privy iframe?
No, as long as your administrators configure your app with the proper allowed origins in the Privy dashboard. The Privy iframe only accepts messages from its parent frame, which is usually under the control of the application developer. The iframe message handler checks the origin of messages received and confirms they are from an approved parent origin. Additionally, the Privy iframe requires a valid access token to authenticate messages received from its parent frame.Q: Can a Privy customer’s application interfere with another customer’s iframe?
No. Browser security controls and DOM boundaries isolate one customer’s iframe from another customer’s application context. Iframes are separated by the browser’s same-origin policy and process isolation mechanisms, so they do not share DOM or memory across origins.User security
Q: Can an unauthorized user access another user’s wallet?
No. A valid access token is required to access a wallet. Specifically, the user’s access token is required to retrieve the auth share needed to reconstruct the wallet. Access tokens are only granted to authenticated users and as per the application’s configuration. Here’s an example recipe of how to configure a React-based application to use cookies.Q: How are users protected if their browser is compromised?
A compromised browser cannot reconstruct a private key unilaterally. For TEE-based embedded wallets, no complete share exists on the device: one share is only accessible inside our Amazon Nitro Enclave-based TEE, and the other is held encrypted by Privy’s authentication service, each useless without the other. Additional layers of protection include:- MFA for wallet operations: developers can require users to re-authenticate before any signing operation, raising the bar for session hijack attacks
- Access token revocation: compromised sessions can be invalidated immediately, preventing further signing requests from completing
- Key never persisted in full: the private key is only transiently available inside the TEE during signing and is never written to disk or local storage in any form
- If a compromise is detected, developers should revoke the user’s access token and, for high-value wallets, prompt the user to re-authenticate and rotate their recovery configuration.
Browser security
Q: Can bookmarklets and browser extensions inject malicious Javascript into the iframe?
In certain cases, yes. There is a CSP nonce on the embedded wallet iframe and the embedded wallet key export page. This means browsers are able to verify the iframe code via a server-set nonce, and additionally reject unauthorized code. We block extensions with CSPs that violate the unsafe eval directive. However, it’s important to understand that bookmarklets and extensions have elevated permissions and may have access to things such as browser requests and responses. According to the W3C CSP standard, browser implementations should allow user-agent features to override policies. Browsers enable bookmarklets and extensions to bypass CSP settings and inject Javascript code onto pages. We recommend educating users to not install untrusted bookmarkets and browser extensions. Furthermore, we recommend enabling wallet MFA which requires the user to MFA to approve transactions.Q: What happens if browser security is compromised?
We maintain multiple layers of protection:- Emergency kill switches for immediate response
- Access token revocation capabilities
- Geographic access restrictions
- Rapid incident response procedures
- Regular security updates

