From d6c8ac87d7c8658240bb8d6ae9732f79f270af8f Mon Sep 17 00:00:00 2001 From: Michael Ligh Date: Fri, 3 Jan 2020 12:15:41 -0600 Subject: [PATCH] try unverified retrieval if ssl.SSLCertVerificationError or ssl.SSLError with CERTIFICATE_VERIFY_FAILED --- volatility/framework/layers/resources.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/volatility/framework/layers/resources.py b/volatility/framework/layers/resources.py index 6d6c90e6e..4e2f6808b 100644 --- a/volatility/framework/layers/resources.py +++ b/volatility/framework/layers/resources.py @@ -70,7 +70,11 @@ class ResourceAccessor(object): fp = urllib.request.urlopen(url, context = self._context) except error.URLError as excp: if excp.args: - if isinstance(excp.args[0], ssl.SSLCertVerificationError): + unverified_retrieval = (hasattr(ssl, "SSLCertVerificationError") and isinstance(excp.args[0], + ssl.SSLCertVerificationError)) or ( + isinstance(excp.args[0], ssl.SSLError) and excp.args[ + 0].reason == "CERTIFICATE_VERIFY_FAILED") + if unverified_retrieval: vollog.warning("SSL certificate verification failed: attempting UNVERIFIED retrieval") non_verifying_ctx = ssl.SSLContext() non_verifying_ctx.check_hostname = False