ʻO ka nāwaliwali i loko o ka waihona me ka hoʻokō nui o ka SHA-3 algorithm

Ua ʻike ʻia kahi vulnerability (CVE-3-2022) i ka hoʻokō ʻana i ka hana cryptographic hash SHA-37454 (Keccak) i hāʻawi ʻia i loko o ka pūʻulu XKCP (eXtended Keccak Code Package), hiki ke alakaʻi i ka hoʻoheheʻe ʻana i ka wā e hana ana i kekahi mau ʻikepili. Hoʻokumu ʻia ka pilikia e kahi pahu i loko o ke code o kahi hoʻokō kikoʻī o SHA-3, ʻaʻole ma ka nāwaliwali o ka algorithm ponoʻī. Kuhi ʻia ka pūʻolo XKCP ma ke ʻano he hoʻokō mana o SHA-3, i hoʻomohala ʻia me ka hoʻokomo ʻana mai ka hui hoʻomohala Keccak, a hoʻohana ʻia i kumu no nā hana SHA-3 i nā ʻōlelo papahana like ʻole (e.g., hoʻohana ʻia ka code XKCP i ka Python hashlib module, ka Ruby digest package sha3 a me PHP hash_* hana).

Wahi a ka mea noiʻi nāna i ʻike i ka pilikia, hiki iā ia ke hoʻohana i ka nāwaliwali e hōʻino i nā waiwai cryptographic o ka hana hash a loaʻa i nā kiʻi mua a me ka lua, a me ka ʻike ʻana i nā collisions. Eia kekahi, ua hoʻolaha ʻia e hana ʻia kahi prototype exploit e hiki ai ke hoʻokō ʻia ke code i ka wā e helu ai i ka hash o kahi faila i hoʻolālā ʻia. Hiki ke hoʻohana ʻia ka nāwaliwali no ka hoʻouka ʻana i nā algorithm hōʻoia hōʻailona hōʻoia e hoʻohana ana iā SHA-3 (no ka laʻana, Ed448). Hoʻolālā ʻia nā kikoʻī o nā ʻano hoʻouka kaua e paʻi ʻia ma hope, ma hope o ka hoʻopau ʻia ʻana o ka nāwaliwali ma nā wahi āpau.

ʻAʻole maopopo i ka nui o ka nāwaliwali e pili ana i nā noi i loaʻa i ka hoʻomaʻamaʻa ʻana, no ka mea e hōʻike ʻia ka pilikia iā ia iho i ke code, pono e hoʻohana ʻia nā helu cyclic hash i nā poloka a ʻo kekahi o nā poloka i hoʻoponopono ʻia e like me 4 GB ka nui (ma ka liʻiliʻi loa. 2^32 - 200 bytes). I ka hoʻoponopono ʻana i ka ʻikepili hoʻokomo i ka manawa hoʻokahi (me ka ʻole o ka helu ʻana i ka hash i nā ʻāpana), ʻaʻole ʻike ʻia ka pilikia. Ma ke ʻano maʻalahi o ka pale ʻana, ua manaʻo ʻia e kaupalena i ka nui o ka nui o ka ʻikepili i hoʻopili ʻia i hoʻokahi manawa o ka helu hash.

Hoʻokumu ʻia ka haʻahaʻa ma muli o kahi hewa i ka hoʻoili ʻana i ka ʻikepili hoʻokomo. Ma muli o ka hoʻohālikelike hewa ʻole o nā waiwai me ke ʻano "int", ua hoʻoholo ʻia ka nui hewa o ka ʻikepili e kali nei, e alakaʻi ana i ka huelo i kākau ʻia ma waho o ka buffer i hāʻawi ʻia. Ma keʻano kūikawā, ua hoʻohana ka hoʻohālikelike i ka huaʻōlelo "partialBlock + instance->byteIOIndex", i alakaʻi i ka integer overflow no nā waiwai nui o nā ʻāpana constituent. Eia hou, aia kekahi ʻano hoʻolele hewa "(unsigned int)(dataByteLen - i)" i loko o ke code, kahi i hoʻonui ai i nā ʻōnaehana me kahi ʻano 64-bit size_t.

Ka laʻana code e hoʻohūhū ai: hoʻokomo i ka hashlib h = hashlib.sha3_224() m1 = b"\x00" * 1; m2 = b"\x00″ * 4294967295; h.update(m1) h.update(m2) paʻi(h.hexdigest())

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka