Skip to main content
Vuetify0 is now in alpha!
Vuetify0 Logo
Theme
Mode
Palettes
Accessibility
Vuetify One
Sign in to Vuetify One

Access premium tools across the Vuetify ecosystem — Bin, Play, Studio, and more.

Not a subscriber? See what's included

Security Disclosure


BeginnerApr 14, 2026

The Vuetify team takes security seriously. We appreciate your efforts to responsibly disclose vulnerabilities and will make every effort to acknowledge your contributions.

Reporting a Vulnerability

To report a security issue, email security@vuetifyjs.com and include the word “SECURITY” in the subject line.

Please include:

  • Description of the vulnerability

  • Steps to reproduce

  • Potential impact

  • Any suggested fixes (optional)

What to Expect

  1. Initial Response — We will acknowledge receipt within 48 hours

  2. Investigation — We will investigate and keep you informed of progress

  3. Resolution — We will prepare and release fixes as quickly as possible

  4. Credit — We will credit you in the release notes (unless you prefer anonymity)

Disclosure Policy

When we receive a security report, we will:

  • Confirm the problem and determine affected versions

  • Audit code to find any similar issues

  • Prepare fixes for all maintained releases

  • Release fixes to npm as quickly as possible

Internally, security incidents are handled according to a formal Incident Response Plan that defines severity classification, response timelines, and escalation procedures.

Threat Model

@vuetify/v0 is a client-side UI composables library. It processes no secrets, manages no authentication, and communicates with no external services. This threat model uses the STRIDE framework↗ to identify and mitigate threats across the project lifecycle.

Assets

AssetImpact if Compromised
npm package (@vuetify/v0)Supply chain attack on all downstream consumers
GitHub repositoryTampered source leads to tampered package
CI/CD secrets (npm token, deploy tokens)Unauthorized publish or deployment
Documentation siteDefacement, phishing, malicious examples
Consumer app securityApps trust v0 to not introduce XSS or injection

Trust Boundaries

Contributor ──PR──→ GitHub ──tag──→ CI ──publish──→ npm ──install──→ Consumer app ──render──→ End user

                                   └──push──→ CI ──webhook──→ Deploy ──serve──→ Docs site

In Scope

CategoryThreats
Supply chainCompromised npm publish credentials, malicious dependency updates, build pipeline injection, typosquatting, mutable CI action references
Consumer-facingCSS injection via theme values, XSS through unsanitized slot/prop content, storage data exposure, CSP implications
CI/CDFork PR code execution, preview package abuse, deploy webhook replay, secret leakage
ContributorReview bypass, social engineering via issues/PRs
InfrastructureDocs site compromise via deploy pipeline, availability

Out of Scope

ThreatReason
XSS from user contentConsumer’s responsibility to sanitize before passing to v0
Authentication / authorizationv0 has no auth layer
Server-side code executionv0 has no dynamic code execution; SSR rendering is stateless and read-only
Issues in consumer applicationsv0 controls only what it exports

Supply Chain Hardening

These measures protect the integrity of @vuetify/v0 from source to consumer:

  • Lockfile committedpnpm-lock.yaml is version-controlled, ensuring reproducible installs

  • Dependency cooldown — pnpm minimum-release-age enforces a waiting period before newly published dependency versions can be installed, giving time for compromised packages to be detected

  • Pinned CI actions — Vuetify-owned GitHub Actions are pinned to commit SHAs, not mutable branch refs, preventing silent changes via force-push

  • Scoped package — published under the @vuetify npm org, reducing typosquatting risk

  • No lifecycle scripts — no postinstall or preinstall scripts that could execute arbitrary code at install time

Security Properties

These properties are verified in the codebase:

  • No network requests — v0 makes no HTTP calls; the Knock notification adapter is opt-in only

  • No dynamic code evaluation — no runtime code generation or arbitrary script execution

  • Prototype pollution protectionmergeDeep blocks __proto__, constructor, and prototype keys

  • CSS injection protection — Theme adapters validate theme names and color keys against a safe identifier pattern ([a-zA-Z0-9_-]), and reject color values containing dangerous CSS patterns. The browser adapter uses adoptedStyleSheets (no DOM parsing); SSR adapters use innerHTML on <style> tags only

  • SSR-safe globals — all browser API access is guarded by IN_BROWSER checks

  • No cross-origin communication — no postMessage or message event listeners

Consumer Guidance

As a headless library, v0 delegates rendering to consumers. To maintain security in your application:

  • Sanitize user input before passing it as slot content, props, or theme color values

  • Review CSP requirements below if you use Content Security Policy headers

  • Use the adapter pattern to control storage backends and notification services

  • Bound dataset sizes when using createVirtual, createFilter, or createDataTable with user-controlled data

Content Security Policy (CSP)

v0’s theme system injects CSS custom properties at runtime. The CSP implications depend on which adapter you use:

AdapterInjection MethodCSP Requirement
V0StyleSheetThemeAdapter (default)adoptedStyleSheets APINone — programmatic stylesheets are CSP-exempt
V0UnheadThemeAdapter<style> tag via UnheadRequires style-src 'nonce-<value>' or style-src 'unsafe-inline'

If you use the Unhead adapter for SSR, configure a per-request nonce to avoid unsafe-inline:

ts
// Server-side: generate a nonce per request
import crypto from 'node:crypto'
const nonce = crypto.randomBytes(16).toString('base64')

// Pass to Unhead
createHead({
  plugins: [
    // Your nonce plugin
  ]
})
Content-Security-Policy: style-src 'nonce-<value>';

SPA-Only Apps

If you use the default V0StyleSheetThemeAdapter, no CSP changes are needed. The adoptedStyleSheets API is fully CSP-compatible.

Third-Party Dependencies

Report security bugs in third-party modules to the maintainers of those modules. You can also report a vulnerability through GitHub Security Advisories↗.

Scope

This policy applies to the @vuetify/v0 package and related packages in the vuetifyjs/0↗ repository.

View the full SECURITY.md↗ on GitHub.

Was this page helpful?

© 2016-1970 Vuetify, LLC
Ctrl+/