SHA-3 ਐਲਗੋਰਿਦਮ ਦੇ ਮੁੱਖ ਲਾਗੂ ਕਰਨ ਦੇ ਨਾਲ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਕਮਜ਼ੋਰੀ

XKCP ਪੈਕੇਜ (ਐਕਸਟੈਂਡਡ ਕੇਕੈਕ ਕੋਡ ਪੈਕੇਜ) ਵਿੱਚ ਪੇਸ਼ ਕੀਤੇ ਗਏ SHA-3 (ਕੇਕੈਕ) ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਹੈਸ਼ ਫੰਕਸ਼ਨ ਨੂੰ ਲਾਗੂ ਕਰਨ ਵਿੱਚ ਇੱਕ ਕਮਜ਼ੋਰੀ (CVE-2022-37454) ਦੀ ਪਛਾਣ ਕੀਤੀ ਗਈ ਹੈ, ਜੋ ਕਿ ਕੁਝ ਖਾਸ ਪ੍ਰਕਿਰਿਆਵਾਂ ਦੇ ਦੌਰਾਨ ਇੱਕ ਬਫਰ ਓਵਰਫਲੋ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੀ ਹੈ। ਫਾਰਮੈਟ ਕੀਤਾ ਡਾਟਾ. ਸਮੱਸਿਆ SHA-3 ਦੇ ਇੱਕ ਖਾਸ ਲਾਗੂਕਰਨ ਦੇ ਕੋਡ ਵਿੱਚ ਇੱਕ ਬੱਗ ਕਾਰਨ ਹੈ, ਨਾ ਕਿ ਐਲਗੋਰਿਦਮ ਵਿੱਚ ਇੱਕ ਕਮਜ਼ੋਰੀ ਕਾਰਨ। XKCP ਪੈਕੇਜ ਨੂੰ SHA-3 ਦੇ ਅਧਿਕਾਰਤ ਅਮਲ ਵਜੋਂ ਦਰਸਾਇਆ ਗਿਆ ਹੈ, ਜੋ ਕੇਕੈਕ ਡਿਵੈਲਪਮੈਂਟ ਟੀਮ ਤੋਂ ਇਨਪੁਟ ਨਾਲ ਵਿਕਸਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਅਤੇ ਵੱਖ-ਵੱਖ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ SHA-3 ਫੰਕਸ਼ਨਾਂ ਲਈ ਆਧਾਰ ਵਜੋਂ ਵਰਤਿਆ ਗਿਆ ਹੈ (ਉਦਾਹਰਨ ਲਈ, XKCP ਕੋਡ ਪਾਈਥਨ ਹੈਸ਼ਲਿਬ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਮੋਡੀਊਲ, ਰੂਬੀ ਡਾਈਜੈਸਟ ਪੈਕੇਜ sha3 ਅਤੇ PHP ਹੈਸ਼_* ਫੰਕਸ਼ਨ)।

ਸਮੱਸਿਆ ਦੀ ਪਛਾਣ ਕਰਨ ਵਾਲੇ ਖੋਜਕਰਤਾ ਦੇ ਅਨੁਸਾਰ, ਉਹ ਹੈਸ਼ ਫੰਕਸ਼ਨ ਦੀਆਂ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਉਲੰਘਣਾ ਕਰਨ ਅਤੇ ਪਹਿਲੇ ਅਤੇ ਦੂਜੇ ਪ੍ਰੀਮੇਜ਼ ਨੂੰ ਲੱਭਣ ਦੇ ਨਾਲ-ਨਾਲ ਟੱਕਰਾਂ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ ਕਮਜ਼ੋਰੀ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੇ ਯੋਗ ਸੀ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਇਹ ਘੋਸ਼ਣਾ ਕੀਤੀ ਗਈ ਸੀ ਕਿ ਇੱਕ ਪ੍ਰੋਟੋਟਾਈਪ ਸ਼ੋਸ਼ਣ ਬਣਾਇਆ ਜਾਵੇਗਾ ਜੋ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਡਿਜ਼ਾਈਨ ਕੀਤੀ ਫਾਈਲ ਦੀ ਹੈਸ਼ ਦੀ ਗਣਨਾ ਕਰਨ ਵੇਲੇ ਕੋਡ ਨੂੰ ਚਲਾਉਣ ਦੀ ਆਗਿਆ ਦੇਵੇਗਾ. ਕਮਜ਼ੋਰੀ ਦੀ ਵਰਤੋਂ ਸੰਭਾਵੀ ਤੌਰ 'ਤੇ SHA-3 (ਉਦਾਹਰਨ ਲਈ, Ed448) ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਾਲੇ ਡਿਜੀਟਲ ਦਸਤਖਤ ਪੁਸ਼ਟੀਕਰਨ ਐਲਗੋਰਿਦਮ 'ਤੇ ਹਮਲਾ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਹਮਲੇ ਦੇ ਤਰੀਕਿਆਂ ਦੇ ਵੇਰਵਿਆਂ ਨੂੰ ਬਾਅਦ ਵਿੱਚ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਨ ਦੀ ਯੋਜਨਾ ਬਣਾਈ ਗਈ ਹੈ, ਹਰ ਥਾਂ ਤੋਂ ਕਮਜ਼ੋਰੀ ਨੂੰ ਖਤਮ ਕਰਨ ਤੋਂ ਬਾਅਦ.

ਇਹ ਅਜੇ ਸਪੱਸ਼ਟ ਨਹੀਂ ਹੈ ਕਿ ਕਮਜ਼ੋਰੀ ਮੌਜੂਦਾ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਅਭਿਆਸ ਵਿੱਚ ਕਿੰਨਾ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀ ਹੈ, ਕਿਉਂਕਿ ਸਮੱਸਿਆ ਨੂੰ ਕੋਡ ਵਿੱਚ ਪ੍ਰਗਟ ਕਰਨ ਲਈ, ਬਲਾਕਾਂ ਵਿੱਚ ਚੱਕਰਵਾਤ ਹੈਸ਼ ਗਣਨਾਵਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਣੀ ਚਾਹੀਦੀ ਹੈ ਅਤੇ ਪ੍ਰੋਸੈਸ ਕੀਤੇ ਗਏ ਬਲਾਕਾਂ ਵਿੱਚੋਂ ਇੱਕ ਦਾ ਆਕਾਰ ਲਗਭਗ 4 GB ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ (ਘੱਟੋ-ਘੱਟ 2^32 - 200 ਬਾਈਟ)। ਜਦੋਂ ਇੰਪੁੱਟ ਡੇਟਾ ਨੂੰ ਇੱਕ ਵਾਰ ਵਿੱਚ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ (ਹਿੱਸਿਆਂ ਵਿੱਚ ਹੈਸ਼ ਦੀ ਕ੍ਰਮਵਾਰ ਗਣਨਾ ਕੀਤੇ ਬਿਨਾਂ), ਸਮੱਸਿਆ ਦਿਖਾਈ ਨਹੀਂ ਦਿੰਦੀ। ਸੁਰੱਖਿਆ ਦੇ ਸਭ ਤੋਂ ਸਰਲ ਢੰਗ ਵਜੋਂ, ਹੈਸ਼ ਗਣਨਾ ਦੇ ਇੱਕ ਦੁਹਰਾਅ ਵਿੱਚ ਸ਼ਾਮਲ ਡੇਟਾ ਦੇ ਵੱਧ ਤੋਂ ਵੱਧ ਆਕਾਰ ਨੂੰ ਸੀਮਤ ਕਰਨ ਦਾ ਪ੍ਰਸਤਾਵ ਹੈ।

ਇਨਪੁਟ ਡੇਟਾ ਦੀ ਬਲੌਕ ਪ੍ਰੋਸੈਸਿੰਗ ਵਿੱਚ ਇੱਕ ਗਲਤੀ ਕਾਰਨ ਕਮਜ਼ੋਰੀ ਹੁੰਦੀ ਹੈ। ਕਿਸਮ "int" ਦੇ ਨਾਲ ਮੁੱਲਾਂ ਦੀ ਗਲਤ ਤੁਲਨਾ ਦੇ ਕਾਰਨ, ਲੰਬਿਤ ਡੇਟਾ ਦਾ ਗਲਤ ਆਕਾਰ ਨਿਰਧਾਰਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਟੇਲ ਨੂੰ ਨਿਰਧਾਰਤ ਬਫਰ ਤੋਂ ਪਰੇ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ। ਖਾਸ ਤੌਰ 'ਤੇ, ਤੁਲਨਾ ਲਈ ਸਮੀਕਰਨ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਗਈ ਹੈ “partialBlock + instance->byteIOIndex”, ਜਿਸ ਨਾਲ ਸੰਘਟਕ ਹਿੱਸਿਆਂ ਦੇ ਵੱਡੇ ਮੁੱਲਾਂ ਲਈ ਪੂਰਨ ਅੰਕ ਓਵਰਫਲੋ ਹੋ ਗਿਆ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਕੋਡ ਵਿੱਚ ਇੱਕ ਗਲਤ ਕਿਸਮ ਦਾ ਕਾਸਟ "(ਅਨ-ਹਸਤਾਖਰਿਤ int)(dataByteLen - i)" ਸੀ, ਜਿਸ ਨਾਲ 64-ਬਿੱਟ ਆਕਾਰ_ਟੀ ਕਿਸਮ ਵਾਲੇ ਸਿਸਟਮਾਂ 'ਤੇ ਓਵਰਫਲੋ ਹੋ ਗਿਆ ਸੀ।

ਉਦਾਹਰਨ ਕੋਡ ਜੋ ਓਵਰਫਲੋ ਦਾ ਕਾਰਨ ਬਣਦਾ ਹੈ: hashlib h = hashlib.sha3_224() m1 = b"\x00" * 1; m2 = b"\x00″ * 4294967295; h.update(m1) h.update(m2) ਪ੍ਰਿੰਟ(h.hexdigest())

ਸਰੋਤ: opennet.ru

ਇੱਕ ਟਿੱਪਣੀ ਜੋੜੋ