የምስክር ወረቀቶችን በሚሰራበት ጊዜ በሞዚላ ኤንኤስኤስ ውስጥ የኮድ አፈፃፀም ተጋላጭነት

በሞዚላ በተዘጋጀው የNSS (የአውታረ መረብ ደህንነት አገልግሎት) የምስጠራ ቤተ-መጻሕፍት ስብስብ ውስጥ ወሳኝ ተጋላጭነት (CVE-2021-43527) ተለይቷል፣ ይህም የ DSA ወይም RSA-PSS ዲጂታል ፊርማዎችን በመጠቀም የተገለጹትን ዲጂታል ፊርማዎች ሲያካሂዱ የአጥቂ ኮድ አፈጻጸምን ያስከትላል። DER ኢንኮዲንግ ዘዴ (የተለዩ የኢኮዲንግ ህጎች)። BigSig የሚል ስም ያለው ጉዳዩ በ NSS 3.73 እና NSS ESR 3.68.1 ውስጥ ተፈቷል። በስርጭት ውስጥ ያሉ የጥቅል ማሻሻያዎች ለዴቢያን፣ RHEL፣ ኡቡንቱ፣ SUSE፣ Arch Linux፣ Gentoo፣ FreeBSD ይገኛሉ። ለ Fedora እስካሁን ምንም ዝማኔዎች የሉም።

ችግሩ የሚከሰተው CMS፣ S/MIME፣ PKCS #7 እና PKCS #12 ዲጂታል ፊርማዎችን ለመቆጣጠር NSS በሚጠቀሙ መተግበሪያዎች ላይ ወይም በTLS፣ X.509፣ OCSP እና CRL ትግበራዎች ውስጥ የምስክር ወረቀቶችን ሲያረጋግጡ ነው። ተጋላጭነቱ TLS፣ DTLS እና S/MIME በሚደግፉ የደንበኛ እና የአገልጋይ አፕሊኬሽኖች፣ የኢሜል ደንበኞች እና ፒዲኤፍ ተመልካቾች የዲጂታል ፊርማዎችን ለማረጋገጥ የ NSS CERT_VerifyCertificate() ጥሪን የሚጠቀሙ።

LibreOffice፣ Evolution እና Evince እንደ የተጋላጭ መተግበሪያዎች ምሳሌዎች ተጠቅሰዋል። ምናልባት፣ ችግሩ እንደ ፒድጂን፣ አፓቼ ክፍት ኦፊስ፣ ሱሪካታ፣ ከርል፣ ክሮኒ፣ ቀይ ኮፍያ ዳይሬክተሪ አገልጋይ፣ የቀይ ኮፍያ ሰርተፍኬት ስርዓት፣ mod_nss ለ Apache http አገልጋይ፣ Oracle Communications Messaging አገልጋይ፣ Oracle ማውጫ አገልጋይ ኢንተርፕራይዝ እትም ባሉ ፕሮጀክቶች ላይ ተጽእኖ ሊያሳድር ይችላል። ነገር ግን ተጋላጭነቱ በፋየርፎክስ፣ ተንደርበርድ እና ቶር ብሮውዘር ላይ አይታይም፣ ይህም ለማረጋገጫ የተለየ ሞዚላ::pkix ቤተ-መጽሐፍት የሚጠቀሙ፣ እንዲሁም በ NSS ውስጥ የተካተተ ነው። በChromium ላይ የተመሰረቱ አሳሾች (በተለይ ከኤንኤስኤስ ጋር ካልተገነቡ በስተቀር) እስከ 2015 NSS ን የተጠቀሙ፣ ግን ወደ BoringSSL የቀየሩት፣ እንዲሁ በችግሩ አይነኩም።

ተጋላጭነቱ የተፈጠረው በሴክቪፋይ.c ፋይል vfy_CreateContext ተግባር ውስጥ ባለው የምስክር ወረቀት ማረጋገጫ ኮድ ስህተት ነው። ስህተቱ የሚከሰተው ደንበኛው ከአገልጋዩ ላይ የምስክር ወረቀት ሲያነብ እና አገልጋዩ የደንበኛ የምስክር ወረቀቶችን ሲያከናውን ነው። DER-encoded ዲጂታል ፊርማ ሲያረጋግጡ NSS ፊርማውን ወደ ቋሚ መጠን ቋት ይከፍታል እና ቋቱን ወደ PKCS #11 ሞጁል ያስተላልፋል። ተጨማሪ ሂደት በሚካሄድበት ጊዜ መጠኑ በ DSA እና RSA-PSS ፊርማዎች ላይ በትክክል አይመረመርም, ይህም ለVFYContextStr መዋቅር የተመደበው ቋት ከመጠን በላይ እንዲፈስ ያደርገዋል, የዲጂታል ፊርማው መጠን ከ 16384 ቢት በላይ ከሆነ (2048 ባይት ለጠባቂው ተመድቧል, ነገር ግን ፊርማው ትልቅ ሊሆን እንደሚችል አልተረጋገጠም))).

ተጋላጭነቱን የያዘው ኮድ እ.ኤ.አ. በ2003 ሊገኝ ይችላል፣ ነገር ግን እ.ኤ.አ. በ2012 እንደገና መፈጠር እስካልተደረገ ድረስ ስጋት አላመጣም። በ 2017 የ RSA-PSS ድጋፍን ሲተገበር ተመሳሳይ ስህተት ተፈጥሯል. ጥቃትን ለመፈጸም የዲጂታል ፊርማ ትክክለኛነትን ከመፈተሽ በፊት ከመጠን በላይ መፍሰስ በደረጃው ላይ ስለሚከሰት የተወሰኑ ቁልፎችን በሃብት-ተኮር ማመንጨት አስፈላጊውን መረጃ ለማግኘት አያስፈልግም. ከድንበሩ በላይ የሚሄደው የመረጃው ክፍል የተፃፈው ወደ ተግባራቱ ጠቋሚዎች ወደ ሚያዘው ማህደረ ትውስታ አካባቢ ሲሆን ይህም የስራ ብዝበዛዎችን መፍጠርን ቀላል ያደርገዋል።

ተጋላጭነቱ የተገኘዉ በጎግል ፕሮጄክት ዜሮ በተገኙ ተመራማሪዎች አዳዲስ አሻሚ የፍተሻ ዘዴዎችን በመሞከር ላይ ሳለ ነዉ እና ትንንሽ ተጋላጭነቶች በሰፊው በተፈተነ ታዋቂ ፕሮጀክት ውስጥ እንዴት ለረጅም ጊዜ ሳይታወቅ እንደሚቀር ጥሩ ማሳያ ነው።

  • የኤን ኤስ ኤስ ኮድ በዘመናዊ የፈተና እና የስህተት ትንተና ቴክኒኮችን በመጠቀም ልምድ ባለው የደህንነት ቡድን ይጠበቃል። በ NSS ውስጥ ያሉ ተጋላጭነቶችን ለመለየት ከፍተኛ ሽልማቶችን ለመክፈል ብዙ ፕሮግራሞች ተዘጋጅተዋል።
  • NSS የGoogle oss-fuzz ተነሳሽነትን ከተቀላቀሉት የመጀመሪያ ፕሮጀክቶች አንዱ ሲሆን በሞዚላ ሊብፉዘር ላይ የተመሰረተ የfuzz ሙከራ ስርዓትም ተፈትኗል።
  • የላይብረሪ ኮድ በተለያዩ የማይንቀሳቀስ ተንታኞች ውስጥ ብዙ ጊዜ ተረጋግጧል፣ ከ2008 ጀምሮ በሽፋን አገልግሎት ክትትል የሚደረግበትን ጨምሮ።
  • እ.ኤ.አ. እስከ 2015፣ NSS በGoogle Chrome ውስጥ ጥቅም ላይ ውሏል እና በGoogle ቡድን ከሞዚላ ተለይቶ የተረጋገጠ ነው (ከ2015 ጀምሮ Chrome ወደ BoringSSL ተቀይሯል፣ ነገር ግን NSS ላይ ለተመሰረተው ወደብ የሚደረገው ድጋፍ ይቀራል)።

ችግሩ ለረጅም ጊዜ ሳይታወቅ የቆዩባቸው ዋና ዋና ችግሮች-

  • የኤንኤስኤስ ሞዱላር ቤተ መፃህፍት እና ፉዝ ፍተሻ የተካሄደው በአጠቃላይ ሳይሆን በግለሰብ አካላት ደረጃ ነው። ለምሳሌ፣ DER ን የመግለጫ ኮድ እና የምስክር ወረቀቶችን የማዘጋጀት ኮድ በተናጠል ተረጋግጧል - በማጭበርበር ጊዜ፣ በጥያቄ ውስጥ ያለውን የተጋላጭነት መገለጫ የሚያመጣ ሰርተፍኬት ማግኘት ይቻል ነበር፣ ነገር ግን ቼኩ የማረጋገጫ ኮድ አልደረሰም እና ችግሩ አልደረሰም እራሱን መግለጥ።
  • በሚገርም ሙከራ ወቅት በ NSS ውስጥ ተመሳሳይ ገደቦች በሌሉበት የውጤት መጠን (10000 ባይት) ላይ ጥብቅ ገደቦች ተጥለዋል (ብዙ በተለመደው ሁነታ ላይ ያሉ ብዙ መዋቅሮች ከ 10000 ባይት በላይ መጠን ሊኖራቸው ይችላል, ስለዚህ ችግሮችን ለመለየት ተጨማሪ የግቤት ውሂብ ያስፈልጋል) . ለሙሉ ማረጋገጫ፣ ገደቡ 224-1 ባይት (16 ሜባ) መሆን ነበረበት፣ ይህም በTLS ውስጥ ከሚፈቀደው ከፍተኛ የምስክር ወረቀት መጠን ጋር ይዛመዳል።
  • ስለ fuzz የሙከራ ኮድ ሽፋን የተሳሳተ ግንዛቤ። የተጋላጭ ኮድ በንቃት ተፈትኗል፣ ነገር ግን አስፈላጊውን የግቤት ውሂብ ማመንጨት ያልቻሉ ፊዚዎችን በመጠቀም። ለምሳሌ fuzzer tls_server_target ቀድሞ የተገለጹ ዝግጁ ሰርተፊኬቶችን ተጠቅሟል፣ ይህም የምስክር ወረቀት ማረጋገጫ ኮድ ቼክ በTLS መልዕክቶች እና በፕሮቶኮል ሁኔታ ለውጦች ላይ ብቻ ገድቧል።

ምንጭ: opennet.ru

አስተያየት ያክሉ