T08 · Insecure Dependencies
- Location
scripts/init-artifact.sh:38- Finding
Unpinned npm Dependencies Allow Mutable Third-Party Code Execution During Project Initialization
- Content
View full analysis
Vulnerability Details
File Location:
scripts/init-artifact.sh:38,scripts/init-artifact.sh:57,scripts/init-artifact.sh:64,scripts/init-artifact.sh:73-74, andscripts/init-artifact.sh:278-279
Vulnerability Type: Supply-chain risk caused by unpinned dependencies and package tooling
Risk Level: MediumVulnerable Code
bash npm install -g pnpmbash # Create new Vite project (always use latest create-vite, pin vite version later) pnpm create vite "$PROJECT_NAME" --template react-tsbash echo "📦 Installing base dependencies..." pnpm installbash echo "📦 Installing Tailwind CSS and dependencies..." pnpm install -D tailwindcss@3.4.1 postcss autoprefixer @types/node tailwindcss-animate pnpm install class-variance-authority clsx tailwind-merge lucide-react next-themesbash # Install all shadcn/ui dependencies echo "📦 Installing shadcn/ui dependencies..." pnpm install @radix-ui/react-accordion @radix-ui/react-aspect-ratio @radix-ui/react-avatar @radix-ui/react-checkbox @radix-ui/react-collapsible @radix-ui/react-context-menu @radix-ui/react-dialog @radix-ui/react-dropdown-menu @radix-ui/react-hover-card @radix-ui/react-label @radix-ui/react-menubar @radix-ui/react-navigation-menu @radix-ui/react-popover @radix-ui/react-progress @radix-ui/react-radio-group @radix-ui/react-scroll-area @radix-ui/react-select @radix-ui/react-separator @radix-ui/react-slider @radix-ui/react-slot @radix-ui/react-switch @radix-ui/react-tabs @radix-ui/react-toast @radix-ui/react-toggle @radix-ui/react-toggle-group @radix-ui/react-tooltip pnpm install sonner cmdk vaul embla-carousel-react react-day-picker react-resizable-panels date-fns react-hook-form @hookform/resolvers zodTechnical Analysis
The initialization script obtains
pnpm, the Vite scaffolding tool, and numerous development and runtime dependencies without exact version constraints. As a result, identi ...[truncated 2132 chars]- Remediation
View remediation
Remediation Suggestions
- Pin
pnpm,create-vite, and every direct dependency to reviewed exact versions rather than tags or unconstrained versions. - Avoid global installation. Invoke a pinned package-manager version through Corepack or document a verified local installation procedure.
- Provide a reviewed lockfile and enforce it with
pnpm install --frozen-lockfile. - Maintain a version-controlled template instead of dynamically resolving the latest Vite scaffold.
- Use
--ignore-scriptswhere dependency lifecycle scripts are unnecessary. Explicitly review and allow required build scripts. - Enable package integrity and provenance verification where supported.
- Run dependency installation in a sandbox or least-privileged build environment without production credentials.
- Add automated dependency auditing and controlled update reviews before changing pinned versions.
- Pin
