Skip to content

standujar/sha1-hulud-scanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SHA1-HULUD Scanner

A comprehensive bash scanner to detect compromised npm packages from the SHA1-HULUD pt 2 supply chain attack.

🚨 About SHA1-HULUD pt 2

SHA1-HULUD pt 2 is a supply chain attack targeting 288+ npm packages including:

  • PostHog packages (@posthog/*, posthog-node, etc.)
  • Zapier packages (@zapier/*)
  • AsyncAPI packages (@asyncapi/*)
  • Postman packages (@postman/*)
  • ENS Domains packages (@ensdomains/*, ethereum-ens)
  • MCP packages (mcp-use, @mcp-use/*)
  • And many more...

More information: HelixGuard Blog Post

✨ Features

  • βœ… Scans 288+ compromised packages from SHA1-HULUD pt 2
  • βœ… Multi-package manager support: npm, yarn, bun, pnpm
  • βœ… 4-stage scanning:
    • Direct dependencies (package.json)
    • Transitive dependencies (node_modules)
    • Lockfiles (all package managers)
    • SHA1 markers detection
  • βœ… False positive filtering for legitimate packages like @aws-crypto/sha1-browser
  • βœ… Shows specific package names when SHA1 markers detected
  • βœ… Clear color-coded output with actionable remediation steps

πŸ“¦ Installation

git clone https://github.com/standujar/sha1-hulud-scanner.git
cd sha1-hulud-scanner
chmod +x sha1-hulud-scanner.sh

πŸš€ Usage

./sha1-hulud-scanner.sh <project_directory>

Examples

# Scan a local project
./sha1-hulud-scanner.sh /path/to/your/project

# Scan relative path
./sha1-hulud-scanner.sh ~/Projects/my-app

# Scan current directory
./sha1-hulud-scanner.sh .

πŸ“Š Output Example

πŸ” SHA1-HULUD Scanner v2.1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
πŸ“ Project: /path/to/project
πŸ“‹ 288 packages to scan
πŸ“‹ 5 known false positives to exclude

πŸ”Ž [1/4] Scanning direct dependencies (package.json)...
  βœ“ No compromised packages in direct dependencies

πŸ”Ž [2/4] Scanning node_modules (transitive)...
  βœ“ No compromised packages installed

πŸ”Ž [3/4] Scanning lockfiles...
  βœ“ No compromised packages in lockfiles

πŸ”Ž [4/4] Scanning for SHA1-HULUD markers...
  πŸ“„ Checking packages with 'sha1' in name (bun.lock):
    ℹ️  @aws-crypto/sha1-browser (legitimate package - skipped)
  βœ“ No suspicious SHA1 markers (1 legitimate packages excluded)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
βœ… NO COMPROMISE DETECTED

Your project is clean β€” no SHA1-HULUD packages found.

πŸ“Š Statistics:
   β€’ 288 packages scanned
   β€’ 0 compromised packages

πŸ›‘οΈ What it Checks

Stage 1: Direct Dependencies

Scans package.json for any compromised packages in dependencies and devDependencies.

Stage 2: Node Modules

Checks if compromised packages are actually installed in node_modules/ (including transitive dependencies).

Stage 3: Lockfiles

Scans lockfiles for all package managers:

  • package-lock.json (npm)
  • yarn.lock (yarn)
  • bun.lock (bun - binary format)
  • pnpm-lock.yaml (pnpm)

Stage 4: SHA1 Markers

Detects packages with "sha1" in their name, which is a signature of the attack. Filters out known false positives like AWS crypto packages.

⚠️ If Compromised Packages Found

The scanner will show detailed remediation steps:

  1. πŸ›‘ STOP all builds/CI immediately
  2. πŸ”’ Isolate CI runners (if self-hosted)
  3. πŸ”‘ Rotate ALL sensitive keys:
    • GitHub tokens (PAT, fine-grained, App)
    • AWS credentials (if non-OIDC)
    • NPM tokens
    • API keys (PostHog, Stripe, etc.)
  4. πŸ—‘ Delete node_modules and lockfiles
  5. πŸ“ Update dependencies to clean versions
  6. πŸ” Audit CI logs from last 48 hours

πŸ“‹ Requirements

  • Bash 4.0+
  • grep, strings, sed (standard Unix tools)
  • Package manager lockfiles present in project

πŸ”§ Known False Positives

The scanner automatically excludes these legitimate packages:

  • @aws-crypto/sha1-browser - AWS SDK for S3 checksums
  • @aws-crypto/sha256-browser - AWS crypto utilities
  • @aws-crypto/sha256-js - AWS crypto utilities
  • sha1 - Legitimate crypto library
  • sha.js - Legitimate crypto library

πŸ“ Package List

The scanner checks against 288 compromised packages defined in sha1-hulud-packages.txt.

To update the list:

# Edit sha1-hulud-packages.txt
# One package per line, comments supported with #

🀝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Submit a pull request

πŸ“œ License

MIT License - Feel free to use this scanner to protect your projects.

πŸ”— Resources

⚑ Quick Start

# Clone and run
git clone https://github.com/standujar/sha1-hulud-scanner.git
cd sha1-hulud-scanner
chmod +x sha1-hulud-scanner.sh
./sha1-hulud-scanner.sh /path/to/your/project

Stay safe! Scan your projects regularly. πŸ›‘οΈ

About

πŸ›‘οΈ Comprehensive bash scanner to detect compromised npm packages from the SHA1-HULUD pt 2 supply chain attack (288+ packages)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages