Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
safe-npm — Installa pacchetti NPM in sicurezza | Kitploit
Strumenti/GitHubGitHub/kevinslin/safe-npm
Utilità GenericheAnalisi delle VulnerabilitàScripting e AutomazioneDevSecOpsSicurezza della Supply Chain
GitHubkevinslin/safe-npm

safe-npm

Installa pacchetti NPM in sicurezza

Vedi Repository
193949 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

safe-npm

Un installer npm incentrato sulla sicurezza che protegge i tuoi progetti da pacchetti recentemente compromessi.

Perché esiste?

Gli attacchi alla supply chain sui pacchetti npm sono una minaccia crescente. Gli attaccanti a volte compromettono pacchetti legittimi:

  • Rubando le credenziali dei manutentori
  • Pubblicando aggiornamenti dannosi su pacchetti popolari
  • Prendendo il controllo di pacchetti abbandonati

Questi attacchi avvengono spesso all'improvviso: un pacchetto che era sicuro ieri potrebbe essere compromesso oggi. safe-npm ti protegge installando solo versioni di pacchetti disponibili pubblicamente da un periodo minimo di tempo (90 giorni di default). Questo dà alla community di sicurezza il tempo di scoprire e segnalare release dannose prima che raggiungano il tuo progetto.

Come funziona

Quando esegui safe-npm install, questo:

  1. Legge le tue dipendenze da package.json o dagli argomenti della riga di comando
  2. Interroga il registro npm per trovare tutte le versioni disponibili
  3. Filtra le versioni pubblicate più recentemente rispetto alla tua soglia minima di età
  4. Seleziona la versione più recente che soddisfa sia i requisiti semver che quelli di età
  5. Installa le versioni sicure usando npm

Ad esempio, se specifichi react@^18 e un [email protected] dannoso è stato pubblicato ieri, safe-npm installerà l'ultima versione che ha almeno 90 giorni.

Installazione

Scarica lo strumento

Installazione da npm (consigliata)

root@kitploit:~
# Install globally
npm install -g @dendronhq/safe-npm

# Now you can use it anywhere
safe-npm install

Costruzione dal sorgente

root@kitploit:~
# Clone and build
git clone <repository-url>
cd safe-npm
npm install
npm run build

# Link the binary globally
npm link

Utilizzo di base

Installare le dipendenze da package.json

root@kitploit:~
# Use the minimum age of 90 days (default)
safe-npm install

# Or specify your own minimum age
safe-npm install --min-age-days 120

Installare pacchetti specifici

root@kitploit:~
# Install packages directly with version constraints
safe-npm install react@^18 lodash@^4.17.0

# These will be filtered to only use versions at least 90 days old
safe-npm install express --min-age-days 60

Prova a secco per vedere cosa verrebbe installato

root@kitploit:~
# Preview which versions would be installed without actually installing
safe-npm install --dry-run

Opzioni di configurazione

--min-age-days <n>

Valore predefinito: 90

Il numero minimo di giorni che una versione di un pacchetto deve essere stata pubblicata prima di poter essere installata.

Esempio: --min-age-days 120 richiede che i pacchetti abbiano almeno 4 mesi.

Quando regolarlo:

  • Aumenta per la massima sicurezza (ad es., 180 giorni per sistemi di produzione critici)
  • Diminuisci se hai bisogno di funzionalità più recenti e accetti un rischio leggermente maggiore (ad es., 30 giorni)

--ignore <pkg1,pkg2>

Un elenco separato da virgole di pacchetti che bypassano il requisito di età. Questi pacchetti rispetteranno comunque gli intervalli semver ma ignoreranno l'età minima.

Esempio: --ignore typescript,@types/node

Quando usarlo:

  • Pacchetti in rapida evoluzione di cui ti fidi (come TypeScript o strumenti di build)
  • Pacchetti interni della tua organizzazione
  • Pacchetti per cui hai bisogno urgentemente delle funzionalità più recenti

--strict

Esce con un errore se UNA QUALSIASI dipendenza non può essere risolta a una versione che soddisfa il requisito di età.

Esempio: safe-npm install --strict

Quando usarlo:

  • Pipeline CI/CD in cui vuoi che le build falliscano piuttosto che saltare pacchetti problematici
  • Distribuzioni in produzione dove hai bisogno di certezza

--dev / --prod-only

Controlla quali dipendenze da package.json vengono elaborate.

Esempi:

  • safe-npm install --dev - Installa solo le devDependencies
  • safe-npm install --prod-only - Installa solo le dipendenze di produzione

Quando usarlo:

  • Installazione di strumenti di sviluppo con requisiti più severi
  • Build di produzione dove vuoi politiche di età diverse per dipendenze dev e prod

--strategy <direct|overrides>

Valore predefinito: direct

Come safe-npm installa le versioni risolte:

direct - Installa direttamente le versioni risolte usando npm install package@version

  • Semplice e diretto
  • Adatto per installazioni una tantum o script

overrides - Scrive le versioni risolte nel campo overrides di package.json, poi esegue npm install

  • Impone le versioni nell'intero albero delle dipendenze (incluse le dipendenze transitive)
  • Nota: Questa funzionalità è attualmente disabilitata perché non funziona ancora correttamente

--registry <url>

Valore predefinito: https://registry.npmjs.org

Specifica un registro npm alternativo.

Esempio: --registry https://registry.company.com

Quando usarlo:

  • Registri npm privati
  • Mirror o cache

--dry-run

Mostra cosa verrebbe installato senza apportare modifiche.

Esempio: safe-npm install --dry-run

Quando usarlo:

  • Testare la tua configurazione
  • Capire quali versioni sono disponibili
  • Prima di apportare modifiche ai sistemi di produzione

Flussi di lavoro comuni

Proteggere un nuovo progetto

root@kitploit:~
# Create a new project
mkdir my-project && cd my-project
npm init -y

# Install dependencies safely
safe-npm install express@^4 lodash

# This creates package-lock.json with versions at least 90 days old

Controllare un progetto esistente

root@kitploit:~
# Check what versions would be installed with age requirements
safe-npm install --dry-run

# If you're happy, install them
safe-npm install

Integrazione CI/CD

root@kitploit:~
# In your CI pipeline, fail the build if any package can't meet age requirements
safe-npm install --strict --min-age-days 120

# Or allow newer packages for dev dependencies only
safe-npm install --prod-only --strict

Aggiornamenti di emergenza

root@kitploit:~
# Need to urgently update a specific package? Add it to ignore list
safe-npm install --ignore package-with-critical-fix

Test

Il progetto include una suite di test che puoi eseguire:

root@kitploit:~
npm test

Per i test automatici, puoi simulare le risposte del registro usando fixture:

root@kitploit:~
export SAFE_NPM_FIXTURES=/path/to/fixtures.json
safe-npm install

Il file delle fixture dovrebbe contenere JSON che rispecchia le risposte del registro npm per ciascun pacchetto.

Come ti protegge

Scenario reale:

  1. Un pacchetto popolare popular-lib è mantenuto da uno sviluppatore fidato
  2. Un attaccante compromette le credenziali npm del manutentore
  3. L'attaccante pubblica [email protected] con malware
  4. I progetti che usano ^5.0.0 installerebbero immediatamente la versione dannosa
  5. Con safe-npm, continueresti a usare 4.9.0 (l'ultima versione di 90+ giorni fa)
  6. I ricercatori di sicurezza scoprono la compromissione e la segnalano
  7. La versione dannosa viene rimossa
  8. Non hai mai installato la versione compromessa

Limitazioni

  • Non protegge dai pacchetti che erano dannosi dall'inizio
  • Ritarda l'accesso a funzionalità legittime nuove e correzioni di bug
  • Richiede fiducia che le versioni più vecchie non abbiano vulnerabilità non scoperte
  • Il filtraggio basato sull'età è un'euristica, non una garanzia

Filosofia

La sicurezza è fatta di compromessi. safe-npm scambia aggiornamenti all'avanguardia con protezione contro compromissioni improvvise della supply chain. È uno strato in una strategia di difesa in profondità che dovrebbe includere anche:

  • Audit di sicurezza regolari (npm audit)
  • Revisione delle dipendenze prima di aggiungere nuovi pacchetti
  • Monitoraggio degli advisory di sicurezza
  • Uso di file di blocco per garantire build riproducibili
  • Esecuzione in ambienti sandbox o containerizzati

Requisiti

  • Node.js 18 o superiore
  • npm (per l'installazione sottostante)

Licenza

ISC