Hrošč v našem skeniranju skrivnosti, ki ga kanarčki niso našli

Pošiljanje

Preden katerikoli komplet, ki ga prodajamo, zapakiramo v ZIP, ga vrata pregledajo zaradi dejanskih vrednosti naših lastnih skrivnosti. Vsak pregled se začne z namestitvijo kanarčkov, po enega vsake vrste, in ne teče, če jih ne ujame vseh. Vedno jih je ujel. Kljub temu je imel hrošč.

Kako vrata berejo skrivnosti

Vrata ne iščejo le stvari, ki so oblikovane kot ključi. Berejo datoteke, kjer so shranjene naše skrivnosti (datoteke env, konfiguracije JSON, datoteke s ključi), vzamejo vsako vrednost, katere ime pove, da je skrivna, nato pa v tem, kar bomo poslali, iščejo te točne vrednosti, zapisane tako, kot so, in v kodiranju base64.

Hrošč

Za vrstico, kot je ta:

DB_PASSWORD='Tr0ub4dor-and-3'  # zamenjana v maju

bralnik je odstranil oklepne narekovaje samo, če se je vrednost začela in končala z znakom narekovaja. Ker je za vrednostjo sledila komentar, se vrstica konča s črko, zato so narekovaji ostali. Komentar je bil nato odrezan, vrata pa so nadaljevala z iskanjem 'Tr0ub4dor-and-3', vključno z narekovaji. Komplet, ki bi vseboval geslo brez teh narekovajev, bi bil sprejet.

Zakaj kanarčki tega niso opazili

Kanarček preizkuša mrežo: namesti vrednost, ki jo skener že pozna, in preveri, ali je najdena. Naše vrednosti kanarčkov so bile poslane neposredno skenerju, zato nikoli niso šle skozi kodo, ki bere vrstico konfiguracije. Vsaka mreža je bila preizkušena, razčlenjevalnik pred njimi pa ne.

Kako smo ga našli

Vrata smo spreminjali v samostojen izdelek in napisali test, ki jim je poslal konfiguracijsko datoteko v oblikah, ki jih ljudje dejansko pišejo: export, narekovaji, komentarji na koncu. Test ni uspel pri vrstici z narekovaji in komentarjem. Popravek prebere vrednost v narekovajih do zapiralnega narekovaja in ignorira vse, kar sledi.

Ali je bilo to pomembno?

Preverili smo, preden smo kaj spremenili. Na našem gradbenem računalniku vrata preberejo 133 skrivnih vrednosti iz 59 datotek, ki so jim dane, na drugem računalniku 499; nobena ni imela te oblike. Nobena prejšnja presoja se ne spremeni: vsak komplet, ki smo ga izdali, je bil pregledan za iste vrednosti, kot bi bil pregledan zdaj. Kljub temu smo vrata popravili na vseh treh računalnikih.

Ključna ugotovitev

Če skener izlušči tisto, kar išče, preizkusite izluščevanje z realističnimi vhodnimi podatki, ne le iskanja z vnaprej vgrajenimi vrednostmi. Kanarček dokaže, da mreža deluje; ne pove pa ničesar o tem, ali prave ribe sploh pridejo do nje. Testi za Secret Gate zdaj zajemajo oboje, pred izdajo pa smo preverili, da prebere natanko tistih 133 vrednosti kot naša pregradna kontrola gradnje.

Posodobljeno: