Needrestart 취약점 CVE-2024-48990을 이용한 Linux 권한 상승
CVE-2024-48990 취약점은 Needrestart 유틸리티 3.8 이하 버전에서 로컬 권한 상승(LPE)을 허용합니다. 이 문제는 PYTHONPATH 환경 변수 처리에 있으며, 루트 권한으로 임의 코드 실행을 가능하게 합니다. Ubuntu 21.04 이상, Debian, Fedora 및 기타 Linux 배포판에 영향을 미칩니다. CVSS 점수: 7.8.
Needrestart는 라이브러리 업데이트 후 프로세스를 스캔하고 취약한 서비스를 재시작합니다. 공격은 Python, Perl, Ruby의 모듈 로딩 경로에 대한 불충분한 제어를 악용하여 이를 악성 것으로 대체합니다.
시스템 취약점 확인
버전을 확인하려면 다음 명령어를 실행하세요:
needrestart --version | grep -q "3.7" && echo "Definitely vulnerable" || echo "Version is potentially not vulnerable, this simply checks for 3.7"
3.8 미만 버전은 취약합니다. 이 유틸리티는 apt를 통해 패키지 설치 중 자동으로 실행되므로 활용 창이 생깁니다.
단계별 활용
데모를 위해 공개 PoC를 사용하세요. 저장소를 복제하고 일반 사용자 권한으로 스크립트를 실행하세요:
cd CVE-2024-48990-PoC-Testing
./runner.sh
스크립트는 PYTHONPATH를 악성 모듈로 설정합니다. 그런 다음 루트 또는 sudo를 통해 Needrestart를 트리거하는 작업을 수행하세요. 예:
sudo apt remove ntp; sudo apt install ntp
이로 인해 루트 권한으로 코드가 실행되어 리버스 쉘 또는 직접 접근이 열립니다.
기술적 공격 세부 사항
취약점은 PYTHONPATH 파싱 중 발생합니다: Needrestart가 경로를 검증하지 않아 권한이 상승된 상태로 모듈이 로드될 수 있습니다. PERL5LIB와 RUBYLIB에도 동일하게 적용됩니다.
- 공격자가 PYTHONPATH=/path/to/malicious로 설정합니다.
- Needrestart가 스캔 중 지정된 경로에서 모듈을 가져옵니다.
- 페이로드가 루트 권한으로 실행됩니다.
로컬 접근과 다른 사용자(sudo)에 의한 Needrestart 호출이 필요합니다.
보호 조치 및 패치
- Needrestart 3.8 이상으로 업데이트: 환경 변수 검증 강화로 취약점 수정.
- /etc/needrestart/needrestart.conf에서 인터프리터 스캔 비활성화:
```
$nrconf{interpscan} = 0;
```
- auditd 또는 falco를 사용해 환경 변수 모니터링.
- AppArmor 또는 SELinux를 사용해 Needrestart 제한.
주요 사항
- CVE-2024-48990은 초기 루트 접근 없이 PYTHONPATH를 통해 활용됩니다.
- 기본적으로 Needrestart가 활성화된 Ubuntu 21.04+ 서버, Debian, Fedora에 영향.
- 3.8 버전 패치: 전체 모듈 경로 검증.
- 권장: 위험 최소화를 위해 interpscan 비활성화.
- 배포 전에 격리된 환경에서 업데이트 테스트.
— Editorial Team
아직 댓글이 없습니다.