Udhaifu katika maktaba na utekelezaji mkuu wa algoriti ya SHA-3

Athari ya kuathiriwa (CVE-3-2022) imetambuliwa katika utekelezaji wa chaguo za kukokotoa za kriptografia za SHA-37454 (Keccak) zinazotolewa katika kifurushi cha XKCP (Kifurushi cha Msimbo wa Keccak wa eXtended), ambayo inaweza kusababisha kufurika kwa bafa wakati wa kuchakata data fulani. Tatizo husababishwa na hitilafu katika msimbo wa utekelezaji maalum wa SHA-3, na si kwa kuathirika katika algorithm yenyewe. Kifurushi cha XKCP kinatajwa kuwa ni utekelezaji rasmi wa SHA-3, uliotengenezwa kwa mchango kutoka kwa timu ya maendeleo ya Keccak, na kutumika kama msingi wa utendakazi wa SHA-3 katika lugha mbalimbali za programu (k.m., msimbo wa XKCP unatumika katika hahlib ya Python moduli, kifurushi cha ruby ​​digest sha3 na vitendaji vya PHP hash_*).

Kulingana na mtafiti aliyegundua tatizo hilo, aliweza kutumia udhaifu huo kukiuka sifa za siri za kazi ya heshi na kupata taswira ya kwanza na ya pili, na pia kugundua migongano. Kwa kuongezea, ilitangazwa kuwa unyonyaji wa mfano utaundwa ambao ungeruhusu msimbo kutekelezwa wakati wa kuhesabu heshi ya faili iliyoundwa mahususi. Athari hii pia inaweza kutumika kushambulia kanuni za uthibitishaji wa sahihi za dijiti zinazotumia SHA-3 (kwa mfano, Ed448). Maelezo ya mbinu za mashambulizi yamepangwa kuchapishwa baadaye, baada ya udhaifu kuondolewa kila mahali.

Bado haijabainika ni kwa kiasi gani udhaifu huo huathiri programu zilizopo kwa vitendo, kwani ili tatizo lijidhihirishe katika kanuni, mahesabu ya mzunguko wa heshi kwenye vizuizi lazima yatumike na mojawapo ya vizuizi vilivyochakatwa lazima iwe na ukubwa wa GB 4 (angalau. 2^32 - baiti 200). Wakati wa kusindika data ya pembejeo mara moja (bila kuhesabu heshi kwa sehemu), shida haionekani. Kama njia rahisi zaidi ya ulinzi, inapendekezwa kuweka kikomo cha ukubwa wa juu zaidi wa data inayohusika katika kurudia mara moja kwa hesabu ya heshi.

Athari hii inasababishwa na hitilafu katika usindikaji wa kuzuia data ya ingizo. Kwa sababu ya ulinganisho usio sahihi wa maadili na aina "int", saizi isiyo sahihi ya data inayosubiri imedhamiriwa, ambayo husababisha mkia kuandikwa zaidi ya bafa iliyotengwa. Hasa, kulinganisha kulitumia usemi "partialBlock + example->byteIOIndex", ambayo ilisababisha kufurika kwa nambari kubwa za sehemu za eneo. Zaidi ya hayo, kulikuwa na aina isiyo sahihi ya kutupwa "(unsigned int)(dataByteLen - i)" kwenye msimbo, ambayo ilisababisha kufurika kwenye mifumo yenye aina ya 64-bit size_t.

Mfano wa msimbo unaosababisha kufurika: leta hahlib h = hahlib.sha3_224() m1 = b"\x00" * 1; m2 = b"\x00β€³ * 4294967295; h.sasisha(m1) h.sasisha(m2) uchapishaji(h.hexdigest())

Chanzo: opennet.ru

Kuongeza maoni