glibc 보안 취약점 개요 및
해결방안 (CVE-2015-0235)
File Lists & Where to Download 4
첨부: 취약점 확인 프로그램 (GHOSTTEST.C) 7
GNU C glibc는 GNU Project Group에서 배포하는 C library
- http://www.gnu.org/software/libc/libc.html
보안 취약점 발표내용
2015년 1월27일(현지시간) 미국 보안회사인 퀼리스(Qualys)는 리눅스
GNU C 라이브러리(glibc)에서 일명 '고스트(GHOST)'라 불리는 중대
취약점을 발견했다고 밝혔다.
glibc에서 제공하는 gethostbyname 함수의 소스코드 결함을 이용,
공격자가 Buffer Overflow를 일으켜 웍격 코드실행을 통해 ID나
PASSWORD없이 목표 시스템에 접근해 원격제어를 하는 것이
가능하게 된다.
2000년 11월 10일부터 배포되기 시작한 glibc-2.2를 기반으로 한
시스템들은 모두 영향을 받을 수 있으며, 이 취약점이 그 동안 공식
보안 취약점으로 분류되지 않았던 탓에 데비안7, 레드햇
엔터프라이즈 리눅스(RHEL) 5, 6, 7, 센트OS 6 및 7, 우분투12.04 등
오랫동안 전 세계 여러 시스템에 활용돼 온 리눅스 배포판에서 악용될
가능성이 높다.
보안 취약점 대상
Oracle Linux 기반의 모든 Engineered System 이 영향 받음
(단, Solaris 기반 Exadata의 경우 Storage Server만 영향 받음)
개별적으로 GNU library인 glibc 2.2 를 받아서 설치한 OS 시스템 문제가 발생되는 GNU library의 소스코드 리스트
inet/gethstbynm.c
inet/gethstbynm2.c
inet/gethstbynm_r.c
inet/gethstbynm2_r.c
nscd/gethstbynm3_r.c
첨부된 점검 소스 파일의 내용을 해당 시스템의 vi editort를 이용하여
아래와 같은 이름으로 저장을 합니다.
위 파일 생성 후 컴파일하여 실행될 수 있는 파일을 만듭니다.
# gcc ghosttest.c -o ghosttest
확인합니다."vulnerable"이라고 뜨면 취약하다는 것입니다.
File Lists & Where to Download
Exadata Image Version |
해당 Patch 파일 |
Where to Download |
12.1.1.1 이하 버전 |
https://public-yum.oracle.com/repo/OracleLinux /OL5/latest/x86_64/ | |
12.1.2.1.0 이상 |
glibc-2.12-1.149.el6_6.5.i686.rpm |
https://public-yum.oracle.com/repo/OracleLinux /OL6/latest/x86_64/ |
How to Patch
Exadata Node |
Command Line |
Compute Node |
1.현 재 사용중인 시스템 확인 |
Cell Node |
Compute node와 작업 절차가 동일하며 설치 시 아래와 같은 메시지가 나올 수 있으나 무시 해야 합니다. |
첨부된 점검 소스 파일의 내용을 해당 시스템의 vi editort를 이용하여
아래와 같은 이름으로 저장을 합니다.
# gcc ghosttest.c -o ghosttest
패치 한 후에 다시 ghosttest를 실행하여 취약점이 수정되었는지
확인합니다."not vulnerable"이라고 뜨면 취약점이 수정된 것으로
판단하시면 됩니다.
Responses to common Exadata security scan findings (Doc ID
1405320.1)
http://www.openwall.com/lists/oss-security/2015/01/27/9
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-
0235
/* ghosttest.c: GHOST vulnerability tester */
/* Credit: http://www.openwall.com/lists/oss-
security/2015/01/27/9 */
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#define CANARY "in_the_coal_mine"
struct {
char buffer[1024];
char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };
int main(void) {
struct hostent resbuf;
struct hostent *result;
int herrno;
int retval;
/*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/
size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) -
2*sizeof(char *) - 1;
char name[sizeof(temp.buffer)]; memset(name, '0', len);
name[len] = '\0';
retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);
if (strcmp(temp.canary, CANARY) != 0) { puts("vulnerable");
exit(EXIT_SUCCESS);
}
if (retval == ERANGE) {
puts("not vulnerable");
exit(EXIT_SUCCESS);
}
puts("should not happen");
exit(EXIT_FAILURE);
}
'DB - ORACLE > Oracle DB Admin ' 카테고리의 다른 글
오라클 AWR 은 돈주고 사야 하는 기능입니다. (0) | 2015.05.12 |
---|---|
윤초 (Leap Second Time Adjustment) (0) | 2015.04.17 |
Oracle ADRCI (0) | 2015.03.28 |
리눅스 Ghost 취약점 보안 업데이트 권고 (0) | 2015.02.05 |
RMAN을 이용한Duplicating Test (1) | 2014.12.22 |