પ્રમાણપત્રોની પ્રક્રિયા કરતી વખતે Mozilla NSS માં કોડ એક્ઝિક્યુશન નબળાઈ

મોઝિલા દ્વારા વિકસિત ક્રિપ્ટોગ્રાફિક લાઇબ્રેરીઓના NSS (નેટવર્ક સિક્યોરિટી સર્વિસિસ) સેટમાં નિર્ણાયક નબળાઈ (CVE-2021-43527) ઓળખવામાં આવી છે, જે DSA અથવા RSA-PSS ડિજિટલ હસ્તાક્ષરોની પ્રક્રિયા કરતી વખતે હુમલાખોર કોડના અમલ તરફ દોરી શકે છે. DER એન્કોડિંગ પદ્ધતિ ( વિશિષ્ટ એન્કોડિંગ નિયમો). બિગસિગ કોડનેમ ધરાવતો આ મુદ્દો, NSS 3.73 અને NSS ESR 3.68.1 માં ઉકેલાઈ ગયો છે. વિતરણમાં પેકેજ અપડેટ્સ ડેબિયન, RHEL, ઉબુન્ટુ, SUSE, આર્ક લિનક્સ, જેન્ટૂ, ફ્રીબીએસડી માટે ઉપલબ્ધ છે. Fedora માટે હજુ સુધી કોઈ અપડેટ્સ ઉપલબ્ધ નથી.

CMS, S/MIME, PKCS #7 અને PKCS #12 ડિજિટલ હસ્તાક્ષરોને હેન્ડલ કરવા અથવા TLS, X.509, OCSP અને CRL અમલીકરણોમાં પ્રમાણપત્રોની ચકાસણી કરતી વખતે NSS નો ઉપયોગ કરતી એપ્લિકેશન્સમાં સમસ્યા ઊભી થાય છે. નબળાઈ વિવિધ ક્લાયંટ અને સર્વર એપ્લિકેશન્સમાં દેખાઈ શકે છે જે TLS, DTLS અને S/MIME, ઈમેઈલ ક્લાયન્ટ્સ અને PDF દર્શકોને સપોર્ટ કરે છે જે ડિજિટલ હસ્તાક્ષરોને ચકાસવા માટે NSS CERT_VerifyCertificate() કૉલનો ઉપયોગ કરે છે.

લિબરઓફીસ, ઇવોલ્યુશન અને ઇવિન્સનો ઉલ્લેખ સંવેદનશીલ એપ્લિકેશનના ઉદાહરણો તરીકે કરવામાં આવ્યો છે. સંભવિત રીતે, સમસ્યા પિડગીન, અપાચે ઓપનઓફિસ, સુરિકાટા, કર્લ, ક્રોની, રેડ હેટ ડિરેક્ટરી સર્વર, રેડ હેટ સર્ટિફિકેટ સિસ્ટમ, અપાચે HTTP સર્વર માટે mod_nss, ઓરેકલ કોમ્યુનિકેશન્સ મેસેજિંગ સર્વર, ઓરેકલ ડિરેક્ટરી સર્વર એન્ટરપ્રાઇઝ એડિશન જેવા પ્રોજેક્ટ્સને પણ અસર કરી શકે છે. જો કે, નબળાઈ Firefox, Thunderbird અને Tor બ્રાઉઝરમાં દેખાતી નથી, જે ચકાસણી માટે NSS માં સમાવિષ્ટ અલગ mozilla::pkix લાઇબ્રેરીનો ઉપયોગ કરે છે. ક્રોમિયમ-આધારિત બ્રાઉઝર્સ (સિવાય કે તેઓ ખાસ કરીને NSS સાથે બનેલા હોય), જે 2015 સુધી NSS નો ઉપયોગ કરતા હતા, પરંતુ પછી બોરિંગએસએસએલ પર સ્વિચ કરવામાં આવ્યા હતા, તે પણ સમસ્યાથી પ્રભાવિત થતા નથી.

આ નબળાઈ secvfy.c ફાઇલમાંથી vfy_CreateContext ફંક્શનમાં પ્રમાણપત્ર ચકાસણી કોડમાં ભૂલને કારણે થાય છે. જ્યારે ક્લાયંટ સર્વરમાંથી પ્રમાણપત્ર વાંચે છે અને જ્યારે સર્વર ક્લાયંટ પ્રમાણપત્રો પર પ્રક્રિયા કરે છે ત્યારે બંનેમાં ભૂલ થાય છે. DER-એનકોડેડ ડિજિટલ હસ્તાક્ષર ચકાસતી વખતે, NSS નિશ્ચિત-કદના બફરમાં સહીને ડીકોડ કરે છે અને PKCS #11 મોડ્યુલમાં બફર પસાર કરે છે. આગળની પ્રક્રિયા દરમિયાન, DSA અને RSA-PSS હસ્તાક્ષરો માટે કદ ખોટી રીતે તપાસવામાં આવે છે, જે VFYContextStr સ્ટ્રક્ચર માટે ફાળવેલ બફરના ઓવરફ્લો તરફ દોરી જાય છે જો ડિજિટલ હસ્તાક્ષરનું કદ 16384 બિટ્સ કરતાં વધી જાય (બફર માટે 2048 બાઇટ્સ ફાળવવામાં આવે છે, પરંતુ તે ચકાસાયેલ નથી કે સહી મોટી હોઈ શકે છે)).

નબળાઈ ધરાવતો કોડ 2003 માં શોધી શકાય છે, પરંતુ 2012 માં રિફેક્ટરિંગ હાથ ધરવામાં આવે ત્યાં સુધી તેને કોઈ ખતરો ન હતો. 2017 માં, RSA-PSS સપોર્ટને લાગુ કરતી વખતે સમાન ભૂલ કરવામાં આવી હતી. હુમલો કરવા માટે, જરૂરી ડેટા મેળવવા માટે ચોક્કસ કીના સંસાધન-સઘન જનરેશનની જરૂર નથી, કારણ કે ડિજિટલ હસ્તાક્ષરની શુદ્ધતા તપાસતા પહેલા તબક્કે ઓવરફ્લો થાય છે. ડેટાનો ભાગ જે સીમાઓની બહાર જાય છે તે મેમરી એરિયામાં લખવામાં આવે છે જેમાં ફંક્શનના નિર્દેશકો હોય છે, જે કાર્યકારી શોષણની રચનાને સરળ બનાવે છે.

Google પ્રોજેક્ટ ઝીરોના સંશોધકો દ્વારા નવી અસ્પષ્ટ પરીક્ષણ પદ્ધતિઓ સાથે પ્રયોગ કરતી વખતે નબળાઈ શોધી કાઢવામાં આવી હતી અને વ્યાપક રીતે પરીક્ષણ કરાયેલ જાણીતા પ્રોજેક્ટમાં કેવી રીતે તુચ્છ નબળાઈઓ લાંબા સમય સુધી શોધી શકાતી નથી તેનું સારું પ્રદર્શન છે:

  • NSS કોડની જાળવણી અનુભવી સુરક્ષા ટીમ દ્વારા અત્યાધુનિક પરીક્ષણ અને ભૂલ વિશ્લેષણ તકનીકોનો ઉપયોગ કરીને કરવામાં આવે છે. NSS માં નબળાઈઓને ઓળખવા માટે નોંધપાત્ર પુરસ્કારો ચૂકવવા માટે ઘણા કાર્યક્રમો છે.
  • NSS એ Google ની oss-fuzz પહેલમાં જોડાનાર પ્રથમ પ્રોજેક્ટમાંનો એક હતો અને મોઝિલાની libFuzer-આધારિત ફઝ ટેસ્ટિંગ સિસ્ટમમાં પણ તેનું પરીક્ષણ કરવામાં આવ્યું હતું.
  • 2008 થી Coverity સેવા દ્વારા દેખરેખ રાખવા સહિત વિવિધ સ્ટેટિક વિશ્લેષકોમાં લાઇબ્રેરી કોડ ઘણી વખત તપાસવામાં આવ્યો છે.
  • 2015 સુધી, NSS નો ઉપયોગ Google Chrome માં થતો હતો અને Google ટીમ દ્વારા સ્વતંત્ર રીતે Mozilla થી સ્વતંત્ર રીતે ચકાસવામાં આવ્યો હતો (2015 થી, Chrome એ બોરિંગએસએસએલ પર સ્વિચ કર્યું હતું, પરંતુ NSS-આધારિત પોર્ટ માટે સમર્થન રહે છે).

મુખ્ય સમસ્યાઓ જેના કારણે સમસ્યા લાંબા સમય સુધી શોધી શકાતી નથી:

  • NSS મોડ્યુલર લાઇબ્રેરી અને ફઝિંગ ટેસ્ટિંગ સંપૂર્ણ રીતે નહીં, પરંતુ વ્યક્તિગત ઘટકોના સ્તરે હાથ ધરવામાં આવ્યું હતું. ઉદાહરણ તરીકે, ડીકોડિંગ ડીઇઆર અને પ્રમાણપત્રોની પ્રક્રિયા કરવા માટેનો કોડ અલગથી તપાસવામાં આવ્યો હતો - ફઝિંગ દરમિયાન, એક પ્રમાણપત્ર મેળવી શકાયું હોત જે પ્રશ્નમાં નબળાઈના અભિવ્યક્તિ તરફ દોરી જશે, પરંતુ તેનો ચેક ચકાસણી કોડ સુધી પહોંચ્યો ન હતો અને સમસ્યા ઊભી થઈ ન હતી. પોતાને પ્રગટ કરે છે.
  • ફઝિંગ ટેસ્ટિંગ દરમિયાન, NSS માં સમાન પ્રતિબંધોની ગેરહાજરીમાં આઉટપુટ કદ (10000 બાઇટ્સ) પર કડક નિયંત્રણો સેટ કરવામાં આવ્યા હતા (સામાન્ય મોડમાં ઘણી રચનાઓ 10000 બાઇટથી વધુનું કદ ધરાવી શકે છે, તેથી સમસ્યાઓ ઓળખવા માટે વધુ ઇનપુટ ડેટાની જરૂર હતી) . સંપૂર્ણ ચકાસણી માટે, મર્યાદા 224-1 બાઇટ્સ (16 MB) હોવી જોઈએ, જે TLS માં માન્ય મહત્તમ પ્રમાણપત્ર કદને અનુરૂપ છે.
  • ફઝ ટેસ્ટિંગ કોડ કવરેજ વિશે ગેરસમજ. સંવેદનશીલ કોડનું સક્રિયપણે પરીક્ષણ કરવામાં આવ્યું હતું, પરંતુ ફઝરનો ઉપયોગ કરીને જે જરૂરી ઇનપુટ ડેટા જનરેટ કરવામાં અસમર્થ હતા. ઉદાહરણ તરીકે, fuzzer tls_server_target એ તૈયાર પ્રમાણપત્રોના પૂર્વવ્યાખ્યાયિત સમૂહનો ઉપયોગ કર્યો હતો, જે પ્રમાણપત્ર ચકાસણી કોડ ચેકને માત્ર TLS સંદેશાઓ અને પ્રોટોકોલ સ્ટેટ ફેરફારો સુધી મર્યાદિત કરે છે.

સોર્સ: opennet.ru

એક ટિપ્પણી ઉમેરો