😄 서론
OpenSSL에서 'CRITICAL'한 취약점이 발견되었다는 소식을 들었다. OpenSSL이 등장한 이래 두 번째 CRITICAL 취약점이라고 한다. (첫 번째 취약점은 2016년) 나에게도 영향이 미칠지에 대해 궁금해서 찾아보게 되었다.
😏 OpenSSL이란?
컴퓨터 네트워크를 통한 통신을 보호하거나 상대방을 식별해야 하는 응용 프로그램용 소프트웨어 라이브러리이다. 대부분의 HTTPS 웹사이트를 포함해 인터넷에서 널리 사용되고 있다. SSL, TLS 프로토콜의 구현이 포함된 오픈 소스로써 기본적인 암호화 기능이나 다양한 유틸리티 기능을 제공하고 있다.
😮 무엇이 문제인가?
OpenSSL의 개발자인 Mark Cox가 아래와 같은 트윗을 남겼다.
OpenSSL 공식 사이트가 분류한 CRITICAL이 얼마나 큰 영향인지 먼저 알아보자.
CRITICAL Severity. This affects common configurations and which are also likely to be exploitable. Examples include significant disclosure of the contents of server memory (potentially revealing user details), vulnerabilities which can be easily exploited remotely to compromise server private keys or where remote code execution is considered likely in common situations. These issues will be kept private and will trigger a new release of all supported versions. We will attempt to address these as soon as possible.
서버 메모리의 내용(어쩌면 사용자 세부 정보를 포함한 내용)이 공개되거나 서버 개인 키 손상시키기 위한 원격 코드 실행 등 영향이 정말 큰 취약성을 의미한다. 릴리즈 후에는 지원중인 모든 버전에 트리거된다고 한다. 또한 이 이슈에 대한 이야기는 private하게 유지되어 정확한 문제점은 공개되지 않는듯 하다. 이에 관한 정보도 릴리즈 후에 공개한다고 트윗에서 밝혔다.
(22.11.02 추가된 내용)
위 문제를 개선하기 위해 릴리즈 된 3.0.7 이후로 문제점이 공개되었다. 그리고 해당 취약점은 취약점 레벨이 CRITICAL에서 HIGH로 낮아졌다. 무엇이 문제였는지 OpenSSL 블로그의 내용을 가져와보았다.
이메일 주소 길이로 인한 버퍼 오버플로가 발생할 수 있는 것이 이번 취약점의 원인이다. 기존에 CRITICAL로 책정되었던 이유는 임의의 4byte 스택 버퍼 오버플로우라고 판단되었기 때문이다. RCE로 이어질 수 있는 위험성 때문에 CRITICAL로 책정되었으나 공격자가 데이터를 덮어쓰는 것이 아닌 길이에 대해서만 제어할 수 있다고 판명되어 취약점 레벨을 낮췄다.
❓ 스택 버퍼 오버플로우
- call stack: 컴퓨터 프로그램의 활성된 서브루틴에 대한 정보를 저장하는 stack 데이터 구조
- stack buffer overflow: call stack의 메모리 주소에 스택에 존재하는 버퍼에 할당된 양보다 더 많은 데이터를 write할 경우 발생
❓ RCE
: 사용자의 의도하지 않은, 공격자가 원하는 임의의 명령어를 실행하는 것
🤔 어떻게 대처할까?
이 취약점은 3.0 미만에서는 미치지 않으니 이전 버전을 사용하는 사람은 신경쓰지 않아도 괜찮다. (버전을 확인하고 싶다면 아래 명령어를 입력해보면 된다.)
$ openssl version
버전을 확인해본 결과 내 로컬에서는 1.1.1f였다. 팀 프로젝트에서 사용중인 AWS EC2에서는 3.0.2 버전임을 확인했다.😨 관련 자료를 찾아보니 버전 1이 훨씬 많이 사용되지만 버전 3은 CentOS Stream 9, Read Hat Enterprice Linux 9, Ubuntu 22.10, Ubuntu 220.04 LTS 등 여러 Linux 배포판에서 사용한다는 듯 하다.
3.0 버전 이상의 OpenSSL은 (한국 시간 기준) 11월 2일 새벽에 3.0.7을 릴리즈하며 해당 취약점을 해결했다. 아직까지는 악용 사례가 없다고 판명되었다지만 3.0.7 이전 버전을 사용하고 있다면 3.0.7로 업데이트 해야한다.
3.0.7 릴리즈 내역: https://mta.openssl.org/pipermail/openssl-announce/2022-October/000238.html
추가 정보가 올라오면 해당 포스팅을 업데이트 하겠습니다 😄
수정되었습니다!
참고
'Develop > CS' 카테고리의 다른 글
[DB] 'is not NULL'과 '!= NULL'은 다르다? (0) | 2023.06.07 |
---|---|
[HTTP] Accept-Charset은 왜 deprecated 되었나 (0) | 2023.05.02 |
무중단 배포 (feat: Jenkins & Shell) (0) | 2022.10.19 |
동시성 (Concurrency) vs 병렬성 (Parallelism) (4) | 2022.09.10 |
ssh 명령어 편하게 쓰기 (3) | 2022.08.17 |