Ahultasuna liburutegian SHA-3 algoritmoaren ezarpen nagusiarekin

Ahultasun bat (CVE-3-2022) identifikatu da XKCP paketean (eXtended Keccak Code Package) eskaintzen den SHA-37454 (Keccak) hash kriptografikoaren funtzioaren ezarpenean, eta horrek buffer gainezka ekar dezake zenbait prozesatzean. formateatutako datuak. Arazoa SHA-3 inplementazio zehatz baten kodean akats batek eragiten du, eta ez algoritmoaren beraren ahultasun batek. XKCP paketea SHA-3-ren inplementazio ofizial gisa aurkezten da, Keccak garapen-taldearen ekarpenarekin garatua eta SHA-3 funtzioetarako oinarri gisa erabiltzen da hainbat programazio-lengoaiatan (adibidez, XKCP kodea Python hashlib-en erabiltzen da. modulua, Ruby digest paketea sha3 eta PHP hash_* funtzioak).

Arazoa identifikatu duen ikertzailearen arabera, ahultasuna erabili ahal izan zuen hash funtzioaren propietate kriptografikoak urratzeko eta lehen eta bigarren aurreirudiak aurkitzeko, baita talkak detektatzeko ere. Horrez gain, berariaz diseinatutako fitxategi baten hash-a kalkulatzean kodea exekutatzea ahalbidetuko zuen ustiapen prototipo bat sortuko zela iragarri zen. Ahultasuna SHA-3 erabiltzen duten sinadura digitala egiaztatzeko algoritmoei erasotzeko ere erabil liteke (adibidez, Ed448). Eraso metodoen xehetasunak geroago argitaratzea aurreikusten da, ahultasuna leku guztietan ezabatu ondoren.

Oraindik ez dago argi ahultasunak praktikan dauden aplikazioei zenbateraino eragiten dien, izan ere, arazoa kodean ager dadin, blokeetan hash ziklikoen kalkuluak erabili behar dira eta prozesatutako blokeetako batek 4 GB inguruko tamaina izan behar du (gutxienez. 2^32 - 200 byte). Sarrerako datuak aldi berean prozesatzen dituzunean (hash-a zatika sekuentzialki kalkulatu gabe), arazoa ez da agertzen. Babes metodorik errazena denez, hash kalkuluaren iterazio batean parte hartzen duten datuen gehienezko tamaina mugatzea proposatzen da.

Zaurgarritasuna sarrerako datuen blokeen prozesamenduan akats batek eragiten du. "int" motako balioen konparaketa okerra dela eta, zain dauden datuen tamaina okerra zehazten da, eta horrek buztana esleitutako bufferetik haratago idaztea dakar. Hain zuzen ere, konparaketak "partzialaBlokea + instantzia->byteIOIndex" esamoldea erabili zuen, eta horrek osoko gainezkatzea ekarri zuen osagaien balio handietarako. Gainera, kodean "(unsigned int)(dataByteLen - i)" mota oker bat zegoen, eta horrek gainezka egin zuen 64 biteko size_t motako sistemetan.

Gainezkatzea eragiten duen kode adibidea: inportatu hashlib h = hashlib.sha3_224() m1 = b"\x00" * 1; m2 = b"\x00β€³ * 4294967295; h.eguneratu(m1) h.eguneratu(m2) inprimatu(h.hexdigest())

Iturria: opennet.ru

Gehitu iruzkin berria