OpenSSL RCE 漏洞影響多個Synology產品
OpenSSL RCE 漏洞影響多個Synology產品。
中國臺灣NAS廠商Synology近日公開了影響其產品的2個遠程代碼執行漏洞和DoS OpenSSL漏洞,CVE編號為CVE-2021-3711和CVE-2021-3712。
CVE-2021-3711
為解密SM2加密的數據,應用需要調用API函數EVP_PKEY_decrypt()。一般來說,應用會調用該函數兩次。第一次,函數的out 參數為NULL,退出時outlen參數等于解密明文所需的緩存大小。然后應用會分配足夠大小的緩存并再次調用EVP_PKEY_decrypt(),這次調用時out參數為非空值。
該漏洞是SM2解密代碼實現中的一個漏洞,具體來說是第一次調用EVP_PKEY_decrypt()計算得到的解密明文所需的緩存大小可以小于第二次調用的真實大小。這會導致應用第二次調用 EVP_PKEY_decrypt() 時由于緩存太小引發緩存溢出。可以向應用展示解密SM2內容的惡意攻擊者可以修改緩存數據的內容引發最大62字節的溢出,改變應用行為或引發應用奔潰。緩存的位置與具體應用有關,但都是堆分配的。該漏洞CVSS3評分8.1分,影響OpenSSL 1.1.1-1.1.1k版本,目前已在 OpenSSL 1.1.1l版本中修復。
CVE-2021-3712
ASN.1字符串在OpenSSL中以ASN1_STRING結構的形式表示,包含一個表示字符串數據的緩存和表示緩存長度的域。而正常的C字符串是以NUL (0)字節結束的字符串數據形式來表示緩存的。雖然不是嚴格要求,使用OpenSSL自帶的d2i函數處理的ASN.1字符串以及用 ASN1_STRING_set() 函數設置的字符串都會以NUL結束。但是在ASN1_STRING數組中,應用可以直接設置data域和length域來構建不以NUL結束的有效的ASN1_STRING結構。具體可以使用ASN1_STRING_set0()函數來實現。
但大多數打印ASN.1 數據的OpenSSL函數都假定ASN1_STRING字符串數組是以NUL結束的。當應用請求打印ASN.1結構,而ASN.1結構中包含不以NUL結尾的數據域的ASN1_STRING時,就會引發讀緩存溢出。這一問題同樣可以出現在證書處理中,包括X509_get1_email()、X509_REQ_get1_email() 和 X509_get1_ocsp() 函數。如果惡意攻擊者可以讓應用直接構建一個ASN1_STRING,然后通過受影響的OpenSSL函數來出席,就可以引發DoS攻擊和應用奔潰。應用于證書攻擊時可能引發隱私內存內容泄露,比如私鑰和敏感明文信息。該漏洞影響OpenSSL 1.1.1-1.1.1k和OpenSSL 1.0.2-1.0.2y版本,目前已在OpenSSL 1.1.1j 和OpenSSL 1.0.2za版本中修復。
受影響的產品
受影響的產品包括Synology DiskStation Manager (DSM)、Synology Router Manager (SRM)、虛擬網絡Plus 服務器和虛擬服務器,具體包括:

本文翻譯自:https://www.synology.com/en-us/security/advisory/Synology_SA_21_24如若轉載,請注明原文地址。