
CVE-2020-1971 자동 스캔 및 원격 익스플로잇 스크립트. 자동 로컬 스캔 및 패치 스크립트.
CVE-2020-1971 자동 스캔 및 원격 익스플로잇 스크립트. 자동 로컬 스캔 및 패치 스크립트.
5:03pm
현재 스크립트를 개발 중이며 오늘 밤까지 모든 것을 내놓기를 바랍니다. 현재 이 저장소에는 패치된 OpenSSL 1.1.1i 소스만 포함되어 있습니다. 현재 설치/업데이트 패치 스크립트를 작업 중입니다.
5:50pm
Debian/Ubuntu Linux 설치 스크립트 업로드되었습니다. 설치 지침은 "Linux 설치"를 참조하십시오.
6:40pm
X.509 GeneralName 유형은 다양한 이름 유형을 표현하기 위한 일반 유형입니다. 이러한 이름 유형 중 하나를 EDIPartyName이라고 합니다. OpenSSL은 GENERAL_NAME의 서로 다른 인스턴스를 비교하여 동일한지 여부를 확인하는 함수 GENERAL_NAME_cmp를 제공합니다. 이 함수는 두 GENERAL_NAME에 모두 EDIPARTYNAME이 포함된 경우 올바르게 작동하지 않습니다. NULL 포인터 역참조 및 충돌이 발생할 수 있으며, 이는 서비스 거부 공격으로 이어질 수 있습니다.
OpenSSL 자체는 두 가지 목적으로 GENERAL_NAME_cmp 함수를 사용합니다.
사용 가능한 CRL과 X509 인증서에 내장된 CRL 배포 지점 간의 CRL 배포 지점 이름 비교
타임스탬프 응답 토큰 서명자가 타임스탬프 기관 이름과 일치하는지 확인 (API 함수 TS_RESP_verify_response 및 TS_RESP_verify_token을 통해 노출됨)
공격자가 비교되는 두 항목을 모두 제어할 수 있는 경우 충돌을 유발할 수 있습니다. 예를 들어, 공격자가 클라이언트나 서버를 속여 악성 인증서와 악성 CRL을 확인하게 할 수 있다면 이러한 상황이 발생할 수 있습니다.
일부 애플리케이션은 인증서에 포함된 URL을 기반으로 CRL을 자동으로 다운로드합니다. 이 확인은 인증서 및 CRL의 서명이 검증되기 전에 수행됩니다. OpenSSL의 s_server, s_client 및 verify 도구는 자동 CRL 다운로드를 구현하는 "-crl_download" 옵션을 지원하며, 이 공격이 해당 도구에 대해 작동하는 것으로 입증되었습니다.
관련 없는 버그로 인해 영향을 받는 OpenSSL 버전은 EDIPARTYNAME의 올바른 인코딩을 구문 분석하거나 구성할 수 없습니다. 그러나 OpenSSL의 파서가 허용할 수 있는 잘못된 형식의 EDIPARTYNAME을 구성하여 이 공격을 유발할 수 있습니다.
모든 OpenSSL 1.1.1 및 1.0.2 버전이 이 문제의 영향을 받습니다. 다른 OpenSSL 릴리스는 지원이 종료되었으며 확인되지 않았습니다. OpenSSL 1.1.1i에서 수정됨 (영향 1.1.1-1.1.1h). OpenSSL 1.0.2x에서 수정됨 (영향 1.0.2-1.0.2w).
sudo chmod +x Linux_Patched_Install_From_Source_Script
실행:
sudo ./Linux_Patched_Install_From_Source_Script
"네이티브" OpenSSL은 런타임에 Windows API를 직접 사용합니다. 네이티브 OpenSSL을 빌드하려면 다음 중 하나를 사용할 수 있습니다:
명령줄에서 Microsoft Visual C++ (MSVC) C 컴파일러
또는
MinGW 크로스 컴파일러 GNU 유사 개발 환경 MSYS2에서 실행 또는 Linux 또는 Cygwin에서 실행
"호스팅된" OpenSSL은 빌드(GNU/Unix 셸, 컴파일러 및 도구 사용) 및 런타임 시 외부 POSIX 호환성 계층에 의존합니다. 이 옵션을 위해 Cygwin을 사용할 수 있습니다.
INSTALL.md에 나열된 요구 사항 및 지침 외에도 다음이 필요합니다:
Perl. Strawberry Perl, http://strawberryperl.com/에서 구할 수 있음 자세한 내용은 NOTES.PERL을 읽어 주세요. CPAN 사용도 포함됩니다. 대안으로 ActiveState Perl, https://www.activestate.com/ActivePerl이 있으며, Perl 모듈 Win32/Console.pm을 https://platform.activestate.com/ActiveState를 통해 명시적으로 빌드한 후 다운로드해야 할 수 있습니다.
Microsoft Visual C 컴파일러.
Netwide Assembler (NASM), https://www.nasm.us에서 구할 수 있음 NASM만 지원되는 어셈블러입니다.
Perl 설치
NASM 설치
Perl과 NASM이 모두 %PATH%에 있는지 확인
관리자 권한으로 Visual Studio 개발자 명령 프롬프트를 사용하고, 의도한 아키텍처에 따라 변형 중 하나를 선택합니다. 또는 "cmd"를 실행하고 "vcvarsall.bat"을 x86, x86_amd64, x86_arm, x86_arm64, amd64, amd64_x86, amd64_arm 또는 amd64_arm64 옵션 중 하나로 실행합니다. 이렇게 하면 nmake.exe, cl.exe 등에 필요한 환경 변수가 설정됩니다. 참조 https://docs.microsoft.com/cpp/build/building-on-the-command-line
OpenSSL 소스 디렉터리의 루트에서 다음을 실행합니다. perl Configure VC-WIN32 (32비트 OpenSSL을 원하는 경우) 또는 perl Configure VC-WIN64A (64비트 OpenSSL을 원하는 경우) 또는 perl Configure (Configure가 플랫폼을 자동으로 파악하도록 함)
nmake
nmake test
nmake install
전체 설치 지침 또는 어느 단계에서든 문제가 발생하는 경우 INSTALL.md 파일을 확인하세요.
기본 설치 디렉터리는 환경 변수에서 파생됩니다.
VC-WIN32의 경우 다음 기본값이 사용됩니다:
PREFIX: %ProgramFiles(86)%\OpenSSL
OPENSSLDIR: %CommonProgramFiles(86)%\SSL
VC-WIN64의 경우 다음 기본값이 사용됩니다:
PREFIX: %ProgramW6432%\OpenSSL
OPENSSLDIR: %CommonProgramW6432%\SSL
이러한 환경 변수가 존재하지 않는 경우(예를 들어 순수 Win32 설치), 다음 대체 값이 사용됩니다:
PREFIX: %ProgramFiles%\OpenSSL
OPENSSLDIR: %CommonProgramFiles%\SSL
또한 이러한 디렉터리는 일반적으로 계정이 관리자 그룹에 속해 있더라도 쓰기 보호되어 있습니다. 이 문제를 해결하려면 'nmake install'을 실행하기 전에 명령 프롬프트를 마우스 오른쪽 버튼으로 클릭하고 "관리자 권한으로 실행"을 선택하여 시작하십시오. 다른 해결책은 구성 시 --prefix 및 --openssldir를 사용하여 다른 디렉터리 집합을 선택하는 것입니다.
UWP 타겟은 정적 및 동적 라이브러리 빌드만 지원합니다.
컴파일하기 전에 "vcvarsall.bat"을 통해 "uwp"로 플랫폼 유형을 정의하고 타겟 아키텍처를 정의해야 합니다. 예를 들어 "arm64" 빌드를 원하는 경우 "vcvarsall.bat x86_arm64 uwp"를 실행하십시오.
참고문헌은 해당 취약점을 구별하는 데 도움이 되도록 독자의 편의를 위해 제공됩니다.
https://www.debian.org/security/2020/dsa-4807FREEBSD:FreeBSD-SA-20:33URL
https://security.FreeBSD.org/advisories/FreeBSD-SA-20:33.openssl.asc