Negli ultimi tempi si parla molto di attacchi alla supply chain, ovvero cercare di compromettere l’elemento meno sicuro in una catena di approvvigionamento allo scopo di attaccare obiettivi più sicuri.

Un possibile vettore di attacco potrebbe essere rappresentato da semplice typosquatting in cui l’attaccante sfrutta il fatto che le persone spesso premono i tasti sbagliati durante la digitazione sulla tastiera. Questo potrebbe essere fatto sia sul dominio host in cui l’attaccante registra un errore di battitura comune di github.com, ma ancora più semplice sarebbe semplicemente registrare un nuovo utente su GitHub, o qualsiasi altro host di pacchetti con errori di battitura.

Con questo obiettivo lo sviluppatore di questa soluzione ha creato uno strumento che può aiutare a identificare potenziali pacchetti di typosquat.

Pkgtwist è uno strumento per trovare potenziali errori di battitura di pacchetti e moduli Go ospitati su GitHub e GitLab.

Come funziona

Quando pkgtwist riceve uno o più percorsi di importazione del pacchetto Go, ad esempio github.com/stretchr/testify, genererà potenziali errori di battitura, o permutazioni, del proprietario del pacchetto utilizzando varie strategie per verificare se sulla piattaforma esistono potenziali variazioni di typosquatting del proprietario. Se trova un potenziale typosquat, procede a verificare se il proprietario del typosquat ha un repository con lo stesso nome del pacchetto originale.

Permutazioni di typosquat

Queste sono le strategie di permutazione typosquat che pkgtwist utilizza attualmente:

  • Omissione: rimozione di un singolo carattere (manca la pressione di un tasto, stretchr=> strechr)
  • Ripetizione: ripetizione di caratteri (premendo due volte un tasto, stretchr=> stretchhr)
  • Bitsquatting : possibili errori di bit-flip (stretchr=>strftchr)
  • Trasposizione: scambio di caratteri adiacenti (premendo i tasti nell’ordine sbagliato, stretchr=> strethcr)

Se pkgtwist viene fornito github.com/stretchr/testifycome input, verificherà l’esistenza delle seguenti variazioni di typosquat stretchrsu GitHub:

tretchr sretchr stetchr strtchr strechr strethr stretcr stretch sstretchr sttretchr strretchr streetchr strettchr stretcchr stretchhr stretchrr rtretchr qtretchr ptretchr wtretchr vtretchr utretchr ttretchr suretchr svretchr swretchr spretchr sqretchr srretchr ssretchr stsetchr stpetchr stqetchr stvetchr stwetchr sttetchr stuetchr strdtchr strgtchr strftchr stratchr strctchr strbtchr streuchr strevchr strewchr strepchr streqchr strerchr streschr stretbhr stretahr stretghr stretfhr stretehr stretdhr stretcir stretcjr stretckr stretclr stretcmr stretcnr stretcor stretchs stretchp stretchq stretchv stretchw stretcht stretchu tsretchr srtetchr stertchr strtechr strecthr strethcr stretcrh

Installazione di pkgtwist

Esegui go get gitlab.com/michenriksen/pkgtwist/cmd/pkgtwist( go install ...se usi Go 1.16) in un terminale.

Utilizzando pkgtwist

Pkgtwist deve essere in grado di eseguire query sia sull’API github.com che su gitlab.com per verificare la presenza di progetti e repository di typosquat. Pertanto, sarà necessario disporre di un utente su entrambe le piattaforme e generare token di accesso personali:

Questi token di accesso personali devono essere registrati come variabili di ambiente per la shell:

export PKGTWIST_GITHUB_ACCESS_TOKEN=<GITHUB_ACCESS_TOKEN>
export PKGTWIST_GITLAB_ACCESS_TOKEN=<GITLAB_ACCESS_TOKEN>

In alternativa, dai questi token come opzioni della riga di comando a pkgtwist, ma ciò non è consigliato poiché i token verranno salvati nella cronologia dei comandi.

Ora invia semplicemente un elenco di percorsi di importazione del pacchetto go a pkgtwist e inizierà a verificare le variazioni di typosquat:

$ cat packages.txt | pkgtwist

Vedere pkgtwist -hper ulteriori opzioni della riga di comando.

https://gitlab.com/michenriksen/pkgtwist

Twitter
Visit Us
LinkedIn
Share
YOUTUBE