T08 · Insecure Dependencies
- Location
scripts/init-artifact.sh:34- Finding
Unpinned third-party packages are downloaded and executed during project initialization
- Content
View full analysis
Vulnerability Details
File Location:
scripts/init-artifact.sh:34-74, with additional dependency installation atscripts/init-artifact.sh:260-261
Vulnerability Type: T08: Insecure Dependencies
Risk Level: MediumVulnerable Code
bash # Check if pnpm is installed if ! command -v pnpm &> /dev/null; then echo "📦 pnpm not found. Installing pnpm..." npm install -g pnpm fi # Create new Vite project (always use latest create-vite, pin vite version later) pnpm create vite "$PROJECT_NAME" --template react-ts # Navigate into project directory cd "$PROJECT_NAME" echo "📦 Installing base dependencies..." pnpm install # Pin Vite version for Node 18 if [ "$NODE_VERSION" -lt 20 ]; then echo "📌 Pinning Vite to $VITE_VERSION for Node 18 compatibility..." pnpm add -D vite@$VITE_VERSION fi 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-themesAdditional unpinned packages are installed later:
bash 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 zod...[truncated 1938 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency and executable package to an exact, reviewed version rather than using
latestor implicit version ranges. - Commit a reviewed
pnpm-lock.yamland install with:bash pnpm install --frozen-lockfile - Avoid automatically installing a global package manager. Require a documented, preinstalled version or use Corepack with a pinned
packageManagerdeclaration. - Replace
pnpm create vitewith a pinned invocation, such as a reviewed exactcreate-viteversion. - Where operationally feasible, disable lifecycle scripts during installation and explicitly allow only packages that require reviewed installation scripts.
- Configure an approved registry and use package integrity verification, dependency scanning, and periodic lockfile review.
- Run initialization without administrative privileges and in an isolated workspace or container.
- Pin every direct dependency and executable package to an exact, reviewed version rather than using
