Hooks

Hook crypto: Oppdag svak kryptografi

Skann en kodebase for svake kryptografiske primitiver, eller vurder ett enkelt kodeutdrag, rett fra kommandolinjen.

Hooken crypto flagger svake kryptografiske primitiver der de kalles: et utfaset chiffer, en usikker modus eller en knekt hashfunksjon. Den er språkbevisst og leser hver fil etter sine egne regler, så en Python-konstruksjon aldri flagges i en Rust-fil, og den er den deterministiske motoren bak spesialiseringen crypto, som du kan kjøre selv i modusen scan eller check.

Kjør​

npx lagune read crypto # scans the whole project
npx lagune read crypto --dir src # scans a directory
npx lagune read crypto --file hash.ts # scans a single file

Gjennomgangen skriver ut opptil to seksjoner. Weak cryptography found inneholder funnene (DES/3DES/RC4/Blowfish/RC2, ECB-modus): hvert er et knekt chifferprimitiv, så hooken avslutter med en kode som ikke er null. Cryptography to review manually inneholder spor den ikke kan vurdere alene: en MD5- eller SHA-1-hash (knekt for sikkerhetsbruk, men legitim som en enkel kontrollsum, så det er hensikten som avgjør), en ikke-kryptografisk tilfeldighetsgenerator i en sikkerhetskontekst, eller en sammenligning som er sårbar for tidsangrep. En gjennomgang uten funn skriver ut no weak cryptography found.

Slik leser du konklusjonen​

KonklusjonBetydning
weakKodeutdraget bruker et knekt chifferprimitiv (DES/3DES, RC4, Blowfish, RC2 eller ECB-modus).
reviewEt primitiv der hensikten avgjør: en MD5- eller SHA-1-hash, eller en ikke-kryptografisk tilfeldighetsgenerator i en sikkerhetskontekst.
safeKodeutdraget bruker kryptografi, og ingen svake primitiver ble funnet.
invalidKodeutdraget inneholder ingen gjenkjennelig kryptografisk konstruksjon å vurdere.

CLI-alternativer​

AlternativVerdiBeskrivelse
--patternet kodeutdragSjekk ett kodeutdrag. Gjenta for å sjekke flere, én konklusjon per linje.
--langet språkPåkrevd med --pattern: ett av javascript, python, go, java, kotlin, php, ruby, rust, csharp, c, cpp.
--diren mappeAvgrens en gjennomgang til en mappe. Kan gjentas og kombineres med --file.
--fileen filAvgrens en gjennomgang til én enkelt fil. Kan gjentas og kombineres med --dir.

Uten alternativ skanner den hele prosjektet. --pattern krever --lang og kan ikke kombineres med --dir eller --file.

Velg hva den skanner​

Den utelater det Git ignorerer. For å utelate mer, eller for å skanne det Git ignorerer, gi crypto egne innstillinger:

npx lagune write add --ignore test/fixtures --checker crypto
{
"checkers": {
"crypto": { "gitignore": false, "ignore": ["test/fixtures"] }
}
}

Konfigurer hookene beskriver hver innstilling.

Støttede språk​

Gjennomgangen leser disse språkene, gjenkjent på filendelsen, og sjekker hvert mot sine egne kryptografiske API-er.

SpråkSvake chiffer (funn), hashfunksjoner og tilfeldighetsgeneratorer (gjennomgang)
JavaScript / TypeScriptcreateCipher, CryptoJS.DES/RC4, *-ecb i anførselstegn; MD5/SHA-1 createHash/subtle.digest; Math.random()
Pythonpycryptodome DES/ARC4/Blowfish.new, algorithms.TripleDES, MODE_ECB; hashlib.md5/sha1; random.*
Godes.NewCipher, rc4.NewCipher, blowfish.NewCipher, NewECBEncrypter; md5/sha1.Sum; math/rand
Java / KotlinCipher.getInstance("DES"/…/ECB"); MessageDigest.getInstance("MD5"), HmacMD5; java.util.Random
PHPopenssl_encrypt("des-…"/"…-ecb"), mcrypt_*; md5()/sha1(), hash("md5", …); rand()/mt_rand()
RubyOpenSSL::Cipher.new("des-…"), :ECB; Digest::MD5/SHA1; rand()/Random
RustRc4::, Blowfish::, des::, ecb::; Md5::, Sha1::, Hmac<Md5>; SmallRng/XorShiftRng
C#DES/TripleDES/RC2.Create, CipherMode.ECB; MD5/SHA1.Create, HMACMD5; new Random()
C / C++OpenSSL DES_*/RC4/EVP_des_*, EVP_*_ecb; MD5()/SHA1(), EVP_md5; rand()/random()
Etter beste evne, ikke uttømmende

Den leser kildekoden som tekst, så et primitiv som settes sammen under kjøring, er skjult bak et alias eller er skrevet i en form den ikke gjenkjenner, kan slippe gjennom. Se på tabellen som et solid utgangspunkt, ikke en fullstendig oversikt.

tip

Hooken garanterer minimumet (at disse konstruksjonene finnes): nøkkelhåndtering, gjenbruk av IV-er og RSA-padding er skjønnsvurderinger som spesialiseringen crypto fortsatt dekker.

Vanlige spørsmål

Kjør hooken crypto uten flagg. Knekte chiffer og ECB-modus er funn som avslutter med en kode som ikke er null. En MD5- eller SHA-1-hash er et spor å gjennomgå, siden den er knekt for sikkerhetsbruk, men legitim som en enkel kontrollsum.

Bare som et spor å gjennomgå i en sikkerhetskontekst, aldri som et automatisk funn, siden tilfeldighet er legitimt for jitter eller rekkefølge i brukergrensesnittet.