Bag u našem tajnom skeneru koji kanarinci nisu mogli da pronađu

Isporuka

Pre nego što bilo koji komplet koji prodajemo bude upakovan u zip, prepreka ga skenira radi stvarnih vrednosti naših tajni. Svako skeniranje počinje postavljanjem kanarinaca, po jednog od svake vrste, i odbija da se pokrene ako ne uhvati sve. Uvek ih je hvatao. Ipak je imao bag.

Kako prepreka čita tajne

Prepreka ne traži samo ono što ima oblik ključeva. Ona čita fajlove u kojima se nalaze naše tajne (env fajlovi, JSON konfiguracije, fajlovi sa ključevima), uzima svaku vrednost čije ime govori da je tajna, a zatim u onome što ćemo isporučiti traži te tačne vrednosti, onako kako su napisane i u base64 enkodiranom obliku.

Bag

Za liniju poput ove:

DB_PASSWORD='Tr0ub4dor-and-3'  # rotirana u maju

čitalac je uklanjao navodnike oko vrednosti samo kada je vrednost i počinjala i završavala navodnikom. Ako se nakon vrednosti nalazi komentar, linija se završava slovom, pa su navodnici ostali. Komentar je zatim odsečen, a prepreka je nastavila da traži 'Tr0ub4dor-and-3', sa navodnicima. Komplet koji bi sadržao lozinku bez tih navodnika bi prošao.

Zašto kanarinci to nikada nisu primetili

Kanarinac testira mrežu: postavite vrednost koju skener već zna, proverite da li je pronađena. Naše vrednosti kanarinaca su prosleđivane direktno skeneru, tako da nikada nisu prošle kroz kod koji čita liniju konfiguracije. Svaka mreža je bila testirana, ali parser ispred njih nije.

Kako smo to otkrili

Radili smo na tome da prepreku pretvorimo u samostalan proizvod i napisali smo test koji joj je dostavljao konfiguracioni fajl u oblicima koje ljudi zaista pišu: export, navodnici, komentari na kraju. Test je pao na liniji sa navodnicima i komentarom. Ispravka čita vrednost u navodnicima do zatvarajućeg navodnika i ignoriše sve što sledi.

Da li je to bilo bitno?

Proverili smo pre bilo kakve promene. Na našoj mašini za build prepreka čita 133 tajne vrednosti iz 59 fajlova koje joj se daju, a na drugoj mašini 499; nijedna nije imala taj oblik. Nijedna ranija presuda se ne menja: svaki komplet koji smo objavili skeniran je za iste vrednosti za koje bi bio skeniran sada. Ipak smo ispravili prepreku na sve tri mašine.

Zaključak

Ako skener izdvaja ono što traži, testirajte izdvajanje realističnim ulazom, a ne samo pretragu sa unapred postavljenim vrednostima. Kanarinci dokazuju da mreža radi; ne govore ništa o tome da li prave ribe ikada stižu do nje. Testovi za Secret Gate sada pokrivaju oba aspekta, a pre objavljivanja smo proverili da čita tačno istih 133 vrednosti kao i naša kontrolna tačka za build.

Ažurirano: