CollectUICollectUI

Official Package Audit

Complete security audit results for the heroui-pro npm package

This article is generated by CC powered by GLM-5-turbo, based on project source code and runtime memory.

Audit Scope

PackageVersionType
heroui-pro1.0.0-beta.9CLI tool + shared library for auth/CDN/cache
@heroui-pro/react1.0.0-beta.3React Pro components (shell package, downloaded via postinstall)
heroui-native-pro1.0.0-beta.3React Native Pro components (same as above)

Key Findings

No third-party telemetry SDKs found, no active data exfiltration behavior detected. This is a commercial licensing and distribution system for a paid component library.

Obfuscation and Deobfuscation

5 files use RC4 + base64 obfuscation, and all 327 encrypted strings were successfully decrypted automatically.

Deobfuscated files:

FileDescription
consts.deobfuscated.jsConstant definitions
auth/keyring.deobfuscated.jsKeyring operations
auth/session.deobfuscated.jsSession management
auth/ci.deobfuscated.jsCI authentication flow
cdn/download.deobfuscated.jsCDN download logic

Deobfuscation results are saved in the heroui-pro-analysis/ directory.

Implicit Tracking Mechanisms

Although there is no third-party telemetry SDK, the following implicit tracking capabilities exist:

1. Project Fingerprinting

Each request sends the header X-HeroUI-Project: sha256(projectName).slice(0, 16), allowing the server to count unique projects.

2. Client Identification

  • User-Agent: heroui-pro-cli/1.0.0-beta.4
  • X-HeroUI-Client-Version header

3. Authentication Identity

GitHub handle + JWT token are associated with every download request, enabling tracking of individual user usage patterns.

4. Dynamic Code Delivery

The npm package itself is a shell; the actual component code is fetched from a remote server via postinstall. This means:

  • Code cannot be pinned through npm version locking
  • The actual code installed may differ each time
  • Upstream can change the distributed code content at any time

External Communication

TargetPurposeAuthentication Info
api.heroui.proAuthentication, CDN downloadsGitHub token / CI token
registry.npmjs.orgVersion checkNone (3-second timeout)
GitHub OAuthSSE callbackGitHub OAuth token

Local Storage

PathContentPermissions
~/.config/heroui-pro/credentials.jsonGitHub handle + JWT0600
System keyring (libsecret)Same as above (preferred if available)
~/.heroui/cache/<slug>/<version>/Component cache

Credential files use 0600 permissions (readable and writable only by the owner).

Risk Assessment

RiskLevelDescription
Dynamic code deliveryMediumnpm package is a shell; actual code is controlled by upstream
Project fingerprint trackingLowOnly sends a hash of the project name, not user identity information
Authentication associationLowUses GitHub identity, which is normal behavior for a paid product
Local credential storageLowUses standard 0600 permissions + system keyring

How is this guide?

Last updated on

On this page