Skip to main content

🏒 External Security Audit

Audit Type: Professional External Security Audit
Conducted By: Offensive Pulse
Auditor: Andrei Coman (Senior Auditor)
Extension Version: 3.0
Audit Date: December 2, 2025
Status: βœ… ALL FINDINGS RESOLVED
Audit Report: View Full Audit Report


Executive Summary​

Offensive Pulse conducted a comprehensive professional security audit of the SuperSafe Wallet Chrome Extension. The audit combined automated static analysis with 26 hours of manual testing to identify vulnerabilities that could impact user funds or sensitive data.

Overall Risk Assessment: MEDIUM​

The audit found no critical vulnerabilities that would allow unauthorized access to user funds or seed phrases. Two MEDIUM severity findings were identified and have been fully remediated.

Category             Rating      Assessment
────────────────────────────────────────────────────────
Architecture βœ… Good MetaMask-style thin client with proper separation
Cryptography ⚠ Moderate AES-256-GCM secure, key derivation improved post-audit
Authorization βœ… Good Allowlist-based dApp authorization
Key Management βœ… Good Proper isolation and sanitization
Dependencies ⚠ Moderate 2 CVEs in dev dependencies (not in production)
Session Security βœ… Good Auto-lock, rate limiting implemented

Audit Findings​

Critical Findings Summary​

IDFindingSeverityStatus
OP-001PBKDF2 key derivation below industry standard⚠ MEDIUMβœ… RESOLVED
OP-002Source maps enabled in production builds⚠ MEDIUMβœ… RESOLVED
OP-003glob CVE (dev dependency)β„Ή INFON/A (not in production)
OP-004vite CVE (dev dependency)β„Ή INFOβœ… RESOLVED

Remediation Status: All findings have been addressed. See Audit Remediation for complete details.


Part 1: Automated Security Analysis​

1.1 Random Number Generation βœ…β€‹

Objective: Verify cryptographic operations use secure CSPRNG

Result: βœ… VERIFIED SECURE

  • All cryptographic random values generated using crypto.getRandomValues()
  • Initialization vectors (IV) properly randomized
  • Salt generation uses cryptographically secure methods
  • Math.random() used only for non-security purposes (request IDs, UI elements, retry jitter)

1.2 PBKDF2 Key Derivation​

Objective: Verify consistent and secure key derivation strength

Finding OP-001: Inconsistent PBKDF2 iterations

Severity: MEDIUM

Issue: Vault encryption used lower iteration count than session key derivation. This reduced brute-force resistance for offline vault attacks.

Risk: With the lower iteration count, attackers with access to the encrypted vault could attempt significantly more password guesses per second on consumer GPUs.

Recommendation: Standardize to industry-standard high-iteration PBKDF2 for all key derivation operations.

Status: βœ… RESOLVED β€” All PBKDF2 operations now use industry-standard iteration counts. See remediation report for verification.

1.3 HD Wallet Derivation Path βœ…β€‹

Objective: Verify BIP-44 compliance for Ethereum

Result: βœ… VERIFIED CORRECT

  • Standard Ethereum BIP-44 path: m/44'/60'/0'/0/{index}
  • Correct coin type 60 (ETH)
  • Variable account index for multi-account support

1.4 Private Key Storage Security βœ…β€‹

Objective: Verify private keys never written to insecure storage

Result: βœ… VERIFIED SECURE

localStorage Analysis:

  • βœ… 0 matches for private key storage
  • βœ… 0 matches for seed phrase storage
  • βœ… 0 matches for mnemonic storage
  • βœ… Logger sanitization active (no sensitive data in logs)

Conclusion: All private keys and seed phrases stored only in encrypted vault, never in plain text storage.

1.5 Origin Validation & Wildcard Matching βœ…β€‹

Objective: Verify allowlist cannot be bypassed

Result: βœ… VERIFIED SECURE

Wildcard Matching Test Results:

PatternInputMatchesCorrect
*.uniswap.orgapp.uniswap.orgβœ… Yesβœ…
*.uniswap.orguniswap.org❌ Noβœ…
*.uniswap.orgeviluniswap.org❌ Noβœ…

Conclusion: Wildcard implementation secure, no bypass vectors identified.

1.6 DOM Security (XSS) βœ…β€‹

Objective: Check for XSS vulnerabilities

Result: βœ… VERIFIED SAFE

  • All dynamic HTML uses safe methods or 100% static content
  • No user input interpolated without sanitization
  • No external data sources injected into DOM

1.7 Prototype Pollution βœ…β€‹

Objective: Check for prototype pollution vectors

Result: βœ… VERIFIED SECURE

  • 0 matches for __proto__ manipulation
  • 0 matches for dangerous Object.assign patterns

1.8 Build Configuration​

Objective: Verify production security settings

Finding OP-002: Source maps enabled in production

Severity: MEDIUM

Issue: Source maps were unconditionally enabled in all build configurations, exposing the full source code structure in production builds.

Risk: Exposed code structure aids reverse engineering and vulnerability discovery by attackers.

Recommendation: Disable source maps in production builds while keeping them for development.

Status: βœ… RESOLVED β€” Source maps now conditionally disabled in production. See remediation report for verification.

1.9 Dependency Vulnerabilities​

Objective: Identify CVEs in dependencies

Finding OP-003 & OP-004: Development dependency CVEs

Severity: INFO

CVE IDPackageSeverityUser Impact
GHSA-5j98-mcp5-4vw2glob 10.2.0-10.4.5HIGH❌ None (dev-only)
GHSA-93m4-6634-74q7vite 6.0.0-6.4.0MODERATEβœ… Updated to 6.4.1

Assessment: These packages are devDependencies and not bundled into the production extension.


Part 2: Manual Security Testing​

26 hours of hands-on security testing with development tools and test environments

2.1 Cryptographic Testing βœ…β€‹

TestCategoryResult
Vault migration between iteration countsCryptographicβœ… PASSED
AES-GCM with NIST test vectorsCryptographicβœ… PASSED
Authentication tag validation (oracle attacks)Cryptographicβœ… PASSED
Key derivation determinismCryptographicβœ… PASSED

2.2 Transaction & Signing Security βœ…β€‹

TestCategoryResult
EIP-155 chainId enforcementTransactionβœ… PASSED
Transaction parameter validationTransactionβœ… PASSED
Gas limit manipulation attemptsTransactionβœ… PASSED
personal_sign with hex/non-UTF8 contentSigningβœ… PASSED
eth_signTypedData malformed structuresSigningβœ… PASSED
Trace all private key access pathsKey Managementβœ… PASSED

2.3 Session Security βœ…β€‹

TestCategoryResult
Auto-lock timing accuracySessionβœ… PASSED
Auto-lock bypass attemptsSessionβœ… PASSED
Password brute-force protectionSessionβœ… PASSED
Rate limiter bypass attemptsSessionβœ… PASSED
Login token generation randomnessSessionβœ… PASSED

2.4 dApp Connection Security βœ…β€‹

TestCategoryResult
Unicode domain homographsdApp Connectionβœ… PASSED
Punycode domain handlingdApp Connectionβœ… PASSED
Connection popup spoofingdApp Connectionβœ… PASSED
Race conditions in connectionsdApp Connectionβœ… PASSED
WalletConnect session persistenceWalletConnectβœ… PASSED

2.5 Storage & Compliance βœ…β€‹

TestCategoryResult
Audit chrome.storage.local contentsStorageβœ… PASSED
Audit chrome.storage.session contentsStorageβœ… PASSED
Examine IndexedDB databasesStorageβœ… PASSED
Extension update flowDeploymentβœ… PASSED
EIP compliance (1193, 6963, 712)Complianceβœ… PASSED

Total: All 22 manual tests completed successfully with no additional vulnerabilities discovered.


Part 3: Security Controls Verified​

3.1 Seed Phrase Protection βœ…β€‹

LayerImplementationStatus
Content Script IsolationSeed never passed to content-script.jsβœ…
Provider Isolationprovider.js has no vault accessβœ…
Background-only CryptoAll mnemonic operations in service workerβœ…
Logger SanitizationCRITICAL_PATTERNS blocks sensitive data loggingβœ…

3.2 Signing Protection βœ…β€‹

ProtectionImplementationStatus
Popup ConfirmationSigningRequestManager creates user confirmation popupsβœ…
Session Lock CheckOperations blocked if wallet lockedβœ…
Origin ValidationAllowListManager validates all requestsβœ…
Request DeduplicationPrevents replay attacksβœ…

3.3 Transaction Protection βœ…β€‹

ProtectionImplementationStatus
EIP-155 Replay ProtectionchainId always included in transactionsβœ…
Gas ValidationMin/max bounds enforcedβœ…
User OverrideGas adjustable in confirmation screenβœ…

3.4 Rate Limiting βœ…β€‹

EndpointLimitLockout
Unlock attempts5/session5 minutes
dApp connections5/minute5 minutes
eth_requestAccounts500ms throttleDeduped

Industry Security Comparison​

Comparison with industry-standard wallet security controls (MetaMask, Trust Wallet):

FeatureMetaMaskTrust WalletSuperSafeStatus
Seed phrase isolationβœ“βœ“βœ“βœ“ EQUAL
Signing confirmation popupβœ“βœ“βœ“βœ“ EQUAL
EIP-155 replay protectionβœ“βœ“βœ“βœ“ EQUAL
PBKDF2 iterations600k100k600kβœ“ EQUAL
Rate limitingβœ“βœ“βœ“βœ“ EQUAL
Auto-lock timeoutβœ“βœ“βœ“βœ“ EQUAL
Log sanitizationβœ“βœ“βœ“βœ“ EQUAL
dApp allowlistβœ“βœ“βœ“βœ“ EQUAL
Hardware wallet supportβœ“βœ“β€”PLANNED
Custom network protectionβœ—βœ—βœ“βœ“ ABOVE
dApp allowlist enforcementβœ—βœ—βœ“βœ“ ABOVE

Conclusion​

Certification Statement​

The SuperSafe Wallet Chrome Extension implements security controls comparable to industry-standard wallets. No critical vulnerabilities were identified that would allow unauthorized access to user funds or seed phrases.

The extension is suitable for production deployment. All identified medium-severity findings have been remediated.

User-Facing Risk Summary​

RiskStatus
Seed phrase theft via malicious dAppβœ… PROTECTED
Unauthorized transaction signingβœ… PROTECTED
Unauthorized message signingβœ… PROTECTED
Session hijackingβœ… PROTECTED
Offline vault brute-forceβœ… PROTECTED (post-audit)

Audit Methodology​

Tools Used​

  • Static code analysis (automated pattern matching)
  • npm audit for dependency scanning
  • Manual code review (26 hours)
  • Architecture documentation review
  • NIST test vector validation
  • Browser DevTools security auditing

Files Reviewed​

Core Extension Files:

  • manifest.json β€” Permissions and CSP
  • background.js β€” Service worker (~3,500 lines)
  • content-script.js β€” Page bridge
  • provider.js β€” EIP-1193 provider (~1,800 lines)

Security-Critical Components:

  • BackgroundSessionController.js β€” Session management (~4,000 lines)
  • SigningRequestManager.js β€” Signing flows (~600 lines)
  • crypto.js β€” Cryptographic operations
  • vaultStorage.js, vaultManager.js β€” Vault persistence
  • loggerSanitizer.js β€” Log sanitization
  • AllowListManager.js β€” dApp authorization
  • ConnectionRateLimiter.js β€” Rate limiting

Report Prepared By: Offensive Pulse
Auditor Website: offensivepulse.com
Audit Report: supersafe.offensivepulse.com
Report Version: 1.0
Classification: Security Report

Document Status: βœ… Current as of February 10, 2026
Code Version: v3.1.8 (all findings remediated)