ከ SHA-3 ስልተ ቀመር ዋና አተገባበር ጋር በቤተ-መጽሐፍት ውስጥ ተጋላጭነት

በ XKCP (eXtended Keccak Code Package) ጥቅል ውስጥ የቀረበውን የSHA-3 ምስጠራ ሃሽ ተግባር (ኬካክ) ትግበራ ላይ ተጋላጭነት (CVE-2022-37454) ተለይቷል፣ ይህም በልዩ ቅርጸት በሚሰራበት ጊዜ ወደ ቋት ፍሰት ሊያመራ ይችላል። ውሂብ. ችግሩ የተፈጠረው በአንድ የተወሰነ የSHA-3 አተገባበር ኮድ ውስጥ ባለ ስህተት ነው እንጂ በአልጎሪዝም ውስጥ ያለ ተጋላጭነት አይደለም። የ XKCP ጥቅል በኬካክ ልማት ቡድን እገዛ የተሻሻለው የSHA-3 ኦፊሴላዊ ትግበራ ነው ተብሎ ይገመታል እና ከSHA-3 ጋር በተለያዩ የፕሮግራም አወጣጥ ቋንቋዎች (ለምሳሌ ፣ XKCP) ለመስራት እንደ መሠረት ሆኖ ያገለግላል ። ኮድ በፓይዘን ሃሽሊብ ሞጁል፣ Ruby package digest- sha3 እና hash_* PHP ተግባራት ውስጥ ጥቅም ላይ ይውላል።

ችግሩን የለየው ተመራማሪው እንደተናገረው፣ ተጋላጭነቱን ተጠቅሞ የሃሽ ተግባርን ምስጠራ ባህሪ በመጣስ የመጀመሪያውን እና ሁለተኛውን ፕሪሜጅ በማግኘቱ እንዲሁም ግጭቶችን ለመወሰን ችሏል። በተጨማሪም በልዩ ሁኔታ የተነደፈ ፋይልን ሃሽ ሲያሰሉ ኮድ አፈፃፀምን ለማሳካት የሚያስችል የፕሮቶታይፕ ብዝበዛ መፈጠሩ ተገለጸ። ምናልባትም፣ ተጋላጭነቱ SHA-3 (ለምሳሌ Ed448) በመጠቀም የዲጂታል ፊርማ ማረጋገጫ ስልተ ቀመሮችን ለማጥቃትም ሊያገለግል ይችላል። የተጋላጭነት ሁኔታን በስፋት ካስወገዱ በኋላ የጥቃት ዘዴዎች ዝርዝሮች በኋላ ላይ ለመታተም ታቅደዋል.

ተጋላጭነቱ በተግባር በነባር አፕሊኬሽኖች ላይ ምን ያህል ተጽዕኖ እንደሚያሳድር እስካሁን ግልፅ አይደለም፣ ምክንያቱም ችግሩ እራሱን በኮዱ ውስጥ እንዲገለጥ ፣ በብሎኮች ውስጥ ሳይክሊክ ሃሽ ስሌት ጥቅም ላይ መዋል አለበት ፣ እና ከተሰራው ብሎኮች አንዱ 4 ጂቢ ያህል መጠን ሊኖረው ይገባል (በ ቢያንስ 2 ^ 32 - 200 ባይት). የግቤት ውሂቡን በአንድ ጊዜ ሲያካሂድ (በክፍሎቹ ውስጥ ያለ የሃሽ ቅደም ተከተል ስሌት ከሌለ) ችግሩ አይታይም። እንደ ቀላሉ የጥበቃ ዘዴ፣ በአንድ የሃሽ ስሌት ውስጥ ያለውን ከፍተኛውን የውሂብ መጠን ለመገደብ ታቅዷል።

ተጋላጭነቱ የተፈጠረው የግብዓት ውሂብን በማገድ ላይ ባለ ስህተት ነው። ከ “int” ዓይነት ጋር ባለው የተሳሳተ የዋጋ ንፅፅር ምክንያት በመጠባበቅ ላይ ያለ የውሂብ መጠን ትክክል ያልሆነ መጠን ተወስኗል ፣ ይህም ከተመደበው ቋት ውጭ ጅራቱ እንዲፃፍ ያደርገዋል። በተለይም በማነፃፀር ጊዜ "partialBlock + instance->byteIOIndex" የሚለው አገላለጽ ጥቅም ላይ የዋለ ሲሆን ይህም ከትላልቅ ክፍሎቹ እሴቶች ጋር ወደ ኢንቲጀር ሞልቷል. በተጨማሪም፣ በኮዱ ውስጥ ትክክል ያልሆነ የጽሕፈት መኪና "(ያልተፈረመ int)(ዳታByteLen - i)" ነበር፣ ይህ ደግሞ ባለ 64-ቢት መጠን_t ዓይነት ባላቸው ስርዓቶች ላይ ሞልቷል።

የትርፍ ፍሰት ኮድ ምሳሌ፡ hashlib h = hashlib.sha3_224() m1 = b"\ x00" * 1 አስመጣ; m2 = b"\ x00" * 4294967295; h.update(m1) h.update(m2) print(h.hexdigest())

ምንጭ: opennet.ru

አስተያየት ያክሉ