Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Point-to-Point-Protocol-Daemon-RCE-Vulnerability-CVE-2020-8597- — CVE-2020-8597을 문서화한 대학 과제물로, pppd의 EAP 파서에서 발생하는 스택 버퍼 오버플로우 취약점이며, pppoe-server와 클라이언트 설정을 사용한 원격 코드 실행 익스플로잇 데모를 포함합니다. | Kitploit
도구/GitHubGitHub/dilan-diaz/point-to-point-protocol-daemon-rce-vulnerability-cve-2020-8597-
Vulnerability AnalysisExploitationPenetration TestingLearning & EducationBinary ExploitationLabs & Practice
GitHubdilan-diaz/point-to-point-protocol-daemon-rce-vulnerability-cve-2020-8597-

Point-to-Point-Protocol-Daemon-RCE-Vulnerability-CVE-2020-8597-

CVE-2020-8597을 문서화한 대학 과제물로, pppd의 EAP 파서에서 발생하는 스택 버퍼 오버플로우 취약점이며, pppoe-server와 클라이언트 설정을 사용한 원격 코드 실행 익스플로잇 데모를 포함합니다.

저장소 보기
6년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Point-to-Point-Protocol-Daemon-RCE-취약점-CVE-2020-8597-

스리랑카 정보기술 연구소

root@kitploit:~
                과제 1
              M. P. D. M. Dias
                 IT19165530
              MLB_WD_Y2S1_13.1                                             
       지점간 프로토콜 데몬 RCE    
        취약점 (CVE-2020-8597)






    시스템 및 네트워크 프로그래밍– IE2012

목차

  1. 소개
  2. 취약점 발견자 참조
  3. 발견 방법
  4. 발견 시기
  5. 초래할 수 있는 피해
  6. 공격 기술
  7. 선택한 공격 방법
  8. 익스플로잇 스크린샷
  9. 결론
  10. 참고문헌

소개

지점간 프로토콜(PPP)은 전이중(full-duplex) 프로토콜로, 전화 접속 연결에서 DSL 광대역, SSL 암호화를 통합한 가상 사설망(VPN)에 이르기까지 레이어 2 또는 데이터 링크 인프라를 통해 간단한 데이터를 캡슐화하여 배포할 수 있게 해줍니다. 이러한 프로토콜은 지점간 통신을 허용하지 않기 때문에, PPP는 두 개의 직접 연결된 노드 간에 IP 및 TCP를 강제하는 데에도 사용됩니다. Pppd는 Unix 계열 운영 체제에서 두 노드 간의 PPP 세션 설정 및 종료를 관리하는 데몬입니다.

PPP는 전화 접속 모뎀, DSL 연결, 그리고 가상 사설망(VPN)을 통한 여러 다른 지점 간 연결(예: 지점간 터널링 프로토콜(PPTP))을 통해 인터넷 연결을 생성하는 데 사용되는 프로토콜입니다. pppd 프로그램은 또한 네트워크에 연결되는 피어를 인증하거나 EAP와 같은 다양한 인증 프로토콜을 사용하여 피어에 인증 세부 정보를 제공할 수 있습니다.

지점간 프로토콜 데몬(pppd)의 확장 인증 프로토콜(EAP) 패킷 처리 결함으로 인해, 인증되지 않은 원격 공격자가 스택 버퍼 오버플로우를 유발하여 대상 시스템에서 임의의 코드 실행을 허용할 수 있습니다. 이 취약점은 메모리에 제공된 데이터를 복사하기 전에 입력 크기를 검증하는 과정의 오류로 인해 발생합니다. 데이터 크기 검증이 잘못되었기 때문에 임의의 데이터가 메모리에 복사되어 파일 누출을 유발하고 의도하지 않은 코드 실행으로 이어질 수 있습니다.

취약점은 eap 파싱 코드 로직, 특히 네트워크 입력 핸들러가 호출하는 eap.c의 eap request) ( 및 eap response) ( 함수에 있습니다. 이 함수들은 첫 번째 바이트를 유형으로 사용하여 포인터와 길이를 입력으로 받습니다. 유형이 인 경우, 1바이트 길이의 임베디드 영역을 확인합니다. 이 코드의 로직은 임베디드 기간이 패킷의 총 길이보다 작은지 확인하기 위한 것입니다. 이 검증 후에, 로컬 스택 버퍼에 있는 임베디드 길이 필드 이후에 제공된 데이터(호스트명)를 복사하려고 시도합니다. 이 경계 검사는 잘못되어 임의의 데이터 길이로 메모리 복사가 발생할 수 있습니다.

EAPT MD5CHAP(4)

또 다른 논리적 오류로 인해 eap input) ( 함수가 라인 제어 프로토콜(LCP) 프로세스 중에 EAP가 해결되었는지 테스트하지 않습니다. 이로 인해 ppp가 EAP 지원 부족이나 LCP 단계에서 합의된 사전 공유 비밀번호 불일치로 인해 인증 협상을 거부하더라도 인증되지 않은 공격자가 EAP 패킷을 보낼 수 있습니다. eap input에서 안전하지 않은 pppd 코드는 여전히 EAP 패킷을 처리해야 하며 스택 버퍼 오버플로우를 유발합니다. 이 검증되지 않은, 크기를 알 수 없는 데이터는 대상 장치 메모리를 손상시키는 데 사용될 수 있습니다. pppd는 또한 높은 권한(시스템 또는 루트)으로 실행되며 커널 드라이버와 함께 작동합니다.

pppd 프로그램은 LWIP(lightweight IP) 프로젝트와 함께 소형 컴퓨터에 pppd 기능을 제공하는 데에도 사용됩니다. 기본 lwIP 설치 및 구성은 이 버퍼 오버로드에 취약하지 않습니다. 그러나 lwIP 소스 코드를 사용하여 컴파일 시 명시적으로 EAP를 허용하도록 수정한 경우, 프로그램은 버퍼 오버플로우에 취약할 수 있습니다.

CVE-2020-8597은 확장 인증 프로토콜(EAP) 패킷 프로세서의 개념적 결함으로 인한 pppd의 버퍼 오버플로우 버그입니다. 취약한 PPP 클라이언트나 서버에 특수하게 조작된 EAP 패킷을 보내는 인증되지 않은 원격 공격자는 서비스 거부 조건이나 임의의 코드 실행을 유발할 수 있습니다. pppd는 커널 드라이버와 함께 작동하고 장치 또는 코어와 같은 높은 권한을 가지므로, 모든 코드 실행도 동일한 권한으로 수행될 수 있습니다.

취약점 발견자 참조

IOActive 보안 연구원 Ilja Van Sprundel이 발견한 이 중요한 문제는 pppd 애플리케이션의 확장 인증 프로토콜(EAP) 모듈 파서의 논리적 오류로 인해 발생하는 스택 버퍼 오버플로우 결함입니다. 이 확장은 PPP 연결에서 추가 인증 방법을 지원합니다.

CVSS 점수 9.8로 모니터링되는 CVE-2020-8597로 추적되는 이 취약점은 인증되지 않은 공격자가 영향을 받는 장치에서 원격으로 임의의 코드를 실행하고 장치에 대한 완전한 제어권을 얻는 데 악용될 수 있습니다.

발견 방법

이 취약점은 메모리에 데이터를 전송하기 전에 입력 크기를 검증하는 과정의 오류로 인해 발생합니다. 데이터 크기 검증이 잘못되었기 때문에 임의의 데이터가 메모리에 복사되어 데이터베이스 조각화를 유발하고, 허가되지 않은 코드 실행에 기여할 가능성이 있습니다.

취약점은 eap 파싱 코드의 로직, 특히 네트워크 입력 핸들러가 호출하는 eap.c의 eap request) ( 및 eap response) ( 함수에서 발견됩니다.

EAP가 허용되지 않거나 원격 피어가 비밀번호 또는 암호를 사용하여 EAP를 시작하지 않은 경우에도 pppd가 안전하지 않다고 결론짓는 것은 잘못입니다. 이는 인증된 침입자가 항상 버퍼 오버플로우를 유발하기 위해 원치 않는 EAP 패킷을 제출할 수 있기 때문입니다.

취약점은 지점간 프로토콜(PPP) 데몬(pppd)에서 확인되었습니다. PPP는 전화 접속 모뎀, DSL 연결 및 모바일 네트워크를 포함한 많은 다른 물리적 네트워크를 통한 연결을 설정하는 데 사용되는 레이어 2 프로토콜입니다. PPP는 암호화된 연결을 제공하기 위해 가상 사설망(VPN)에서 사용되는 지점간 터널링 프로토콜(PPTP)과 같은 추가 프로토콜을 포함하도록 확장되었습니다.

이 상황에서 SEI CERT 협력 팀은 이 결함을 발견한 보안 분석가 Ilja Van Sprundel(IOActive) 및 소스 코드를 관리하는 소프트웨어 개발자 Paul Mackerras(OZlabs)와 협력하여 문제를 쉽게 조사하고 해결 방법을 찾았습니다. 문제는 부울 표현식의 기본 버퍼 오버플로우와 그 결과로 발생한 조건문 구현으로 인한 pppd 소스 코드의 버퍼 오버플로우와 관련이 있었습니다. 아래 문장은 알 수 없는 기간 피드백을 허용하고 스택 버퍼에 복사하도록 속일 수 있습니다. 이를 일반적으로 프레임 오버로드 또는 스택 버퍼 오버플로우라고 합니다.

if (vallen >= len + sizeof(rhostname)) { // 버퍼 rhostname에 복사

취약점 수정은 위의 문장을 아래 부울 논리로 간단히 변경하는 것이었습니다.

if (len-vallen >= sizeof(rhostname)) { // 버퍼 rhostname에 복사

Paul은 이 결함에 대해 CVE-2020-8597을 발행하고 자신이 관리하는 소스 코드에 수정 사항을 계속 적용했습니다. 버그를 수정하는 데 필요한 시스템 업데이트는 몇 줄의 코드만 필요한 사소한 것입니다. 그럼에도 불구하고 이 안전하지 않은 기술은 수천 개의 소프트웨어 프로젝트 라이브러리에 존재합니다. 홈 라우터에서 비즈니스 네트워크 하드웨어에 이르기까지 네트워크 액세스 장치를 제공하는 100개 이상의 회사에서 채택했습니다. 이 취약점은 모든 PPP 클라이언트와 서버에 영향을 미치므로 인터넷 서비스 제공업체(ISP)에도 영향을 미칩니다.

발견 시기

2020년 3월 4일, CERT 조정 센터(CERT/CC)의 연구원들은 지점간 프로토콜 데몬(pppd) 버전 2.4.2부터 2.4.8까지의 중요한 취약점에 대한 취약점 노트 #782301을 발표했으며, 공개는 IOActive의 Ilja van Sprundel에게 귀속되었습니다.

초래할 수 있는 피해

취약한 ppp 클라이언트나 서버에 원치 않는 EAP 패킷을 제출함으로써 인증되지 않은 원격 침입자는 pppd 메커니즘에서 메모리 손상을 유발할 수 있으며, 이는 임의의 코드 실행을 요구할 수 있습니다.

연구원에 따르면, 지점간 프로토콜 데몬 버전 2.4.2부터 2.4.8까지(지난 17년 동안 출시된 모든 버전)가 이 새로운 원격 코드 실행 버그에 취약합니다. 아래 언급된 일반적으로 사용되는 성공적인 Linux 배포판 중 일부는 이미 영향을 받은 것으로 보고되었으며, 다른 여러 프로젝트도 영향을 받을 가능성이 높습니다.

Debian Ubuntu SUSE Linux Fedora NetBSD Red Hat Enterprise Linux

또한, pppd 앱을 제공하는 다른 취약한 애플리케이션과 장치(일부는 아래 언급됨)의 수도 방대할 가능성이 높으며, 해커에게 넓은 공격 표면을 제공합니다.

Cisco CallManager TP-LINK 제품 OpenWRT 임베디드 OS Synology 제품

지점간 프로토콜 데몬(pppd)의 확장 인증 프로토콜(EAP) 패킷 처리 결함으로 인해, 인증되지 않은 원격 공격자가 스택 버퍼 오버플로우를 유발하여 대상 시스템에서 임의의 코드 실행을 허용할 수 있습니다. 이 취약점은 메모리에 제공된 데이터를 복사하기 전에 입력 크기를 검증하는 과정의 오류로 인해 발생합니다. 데이터 크기 검증이 잘못되었기 때문에 임의의 데이터가 메모리에 복사되어 메모리 손상을 유발하고 원치 않는 코드 실행으로 이어질 가능성이 있습니다.

공격 기술

중요한 문제는 pppd 소프트웨어의 확장 인증 프로토콜(EAP) 패킷 파서의 논리적 오류로 인해 존재하는 스택 버퍼 오버플로우 취약점입니다. 이 확장은 PPP 연결에서 추가 인증 방법을 지원합니다.

이를 위해 공격자는 직접 직렬 링크, ISDN, 이더넷, SSH, 소켓 CAT, PPTP, GPRS 또는 ATM 네트워크를 통해 취약한 ppp 클라이언트나 서버에 원치 않는 잘못된 형식의 EAP 패킷을 보내기만 하면 됩니다. 또한, pppd는 종종 높은 권한으로 실행되고 커널 드라이버와 함께 작동하므로, 이 결함은 공격자가 시스템 또는 루트 수준 권한으로 악성 코드를 실행할 수 있게 할 수 있습니다. 선택한 공격 방법

취약한 클라이언트를 악용하기 위해 원격 코드 실행 방법을 사용했습니다. 원격 코드 실행(RCE)은 사이버 침입자가 허가 없이 그리고 장치가 위치한 곳을 알지 못한 채 다른 사람이 제어하는 장치에 진입하여 수정하는 능력과 관련이 있습니다. RCE는 공격자가 임의의 악성 소프트웨어(멀웨어)를 실행하여 컴퓨터나 서버를 장악할 수 있게 합니다.

동일한 컴퓨터에서 테스트하기 위해 두 개의 가상 머신을 사용합니다. 하나는 서버, 다른 하나는 클라이언트입니다. 가상 머신을 연결하기 위해 SSH를 설치합니다. IP 주소를 사용하여 Fedora 29 가상 머신을 서버 측으로, Kali Linux 가상 머신을 취약한 클라이언트 측으로 연결합니다. 지시에 따라 pppoe-server를 설정합니다. 디버그 모드를 열고 로그 파일을 설정한 후 로그 파일 '/etc/ppp/pppoe-server-options'에 다음을 추가합니다. 그런 다음 'sudo pppoeconf'를 입력하여 pppoe-client를 설정합니다. 마지막으로 파이썬 코드를 사용하여 취약한 클라이언트를 악용할 수 있습니다. 또한 취약한 ppp 클라이언트에 원치 않는 EAP 패킷을 보내면 원격 공격자가 pppd 프로세스에서 메모리 손상을 유발하여 임의의 코드 실행을 허용할 수 있습니다.

익스플로잇 스크린샷

 취약한 클라이언트로 핑(Ping)

 서버에 SSH 설치

 클라이언트 측 루트 액세스 획득

 클라이언트의 루트 액세스 획득 후

 클라이언트 측에서 SSH 활성화

 충돌(Crash)

 결과

결론

GitHub Security Lab의 구조

Vijay Sarvepalli가 GitHub의 최신 보호 이니셔티브를 연구하는 동안, Vijay Sarvepalli는 GitHub의 API 및 CodeQL 솔루션을 활용하여 문제를 해결할 기회를 식별하고자 했으며, 코드를 사용하여 소프트웨어 저장소 사용자에게 수정 사항을 제안했습니다. 그는 미국 상무부 국립 통신 정보청(NTIA)의 사이버 보안 이니셔티브 책임자인 Allan Friedman(정부 보호 리더)에게 연락했습니다. Allan은 GitHub를 포함한 여러 조직을 모아 소프트웨어 자재 명세서(SBOM)를 작성했습니다. Allan은 Vijay Sarvepalli를 GitHub의 기밀 유지에 전념하는 사람들에게 소개했고, 그들은 저를 GitHub Security Lab의 책임자인 Nico Waisman에게 연결해 주었습니다.

Nico와 GitHub Security Lab의 국제 팀은 이 문제에 보안 패치 메커니즘을 적용할 방법을 빠르게 찾았습니다. 그들은 이 버그의 영향을 받는 모든 저장소의 소유자에게 연락하는 자동 "로봇" 기술을 시작했습니다. 저장소 소유자는 복사하거나 포크한 pppd 프로그램 버전을 수정하고 보호하기 위해 몇 가지 빠른 조치를 취하기만 하면 되었습니다. 이 커뮤니티 이니셔티브는 기술이 수정되는 단계로 이끌었습니다. 이는 보호를 강화하기 위해 소스 코드를 개선하는 모듈식의 시의적절한 접근 방식을 제공했습니다. GitHub Security Lab의 자동 업데이트 후 4일 이내에 1,896명의 저장소 소유자가 버그에 대한 세부 정보를 제공받았으며 몇 번의 클릭으로 수정할 수 있는 옵션이 주어졌습니다. 이 저장소 소유자 중 최소 42명이 자동 패치를 승인했으며, 13명이 더 문제가 이미 수정되었음을 확인했습니다. 자동화 없이는 영향을 받은 저장소 소유자에게 연락하여 앱을 수정하는 데 며칠이 걸릴 것입니다.

DoD의 도전과 소프트웨어 미래에서 CERT의 역할

연방 자금 지원 연구 개발 센터(FFRDC)로서 카네기 멜론 대학의 소프트웨어 공학 연구소(SEI)와 그 CERT 부서는 미국 국방부(DoD)가 사이버 공간에서 직면하는 도전에 지속적으로 직면하고 있습니다. DoD CIO Terry Halvorsen은 유명한 사이버 보안 전도사로서 AFCEA 회의 연설에서 "사이버 방어 조치와 대응은 밀리초 단위로 발생할 것"이라고 말했습니다. 이러한 원하는 사이버 방어 조치는 수동으로 또는 번거로운 통신 프로세스를 통해 수행될 수 없습니다. 이는 소프트웨어를 통해 전달되어야 하며 현재의 인-더-루프 패치 모델의 문제를 제한하기 위해 가능한 한 자동화되어야 합니다.

잠재적 위협 관리 활동 전반에 걸쳐 우리는 소프트웨어 패치를 정보 보안 취약점에 대해 가속화하기 위해 인센티브(예: GitHub Security Lab과의 이 파트너십)를 활용할 수 있는 상황을 식별할 것으로 예상합니다. 이것이 정보 보호의 모든 문제를 해결하지는 않으며 좋은 코딩 방법을 대체하지 않는다는 것을 이해하지만, 버그는 정보가 게시된 후에 발견되는 경향이 있다는 것을 알고 있습니다. 정보가 우리 일상 생활에 널리 퍼져 있을 때, 정보는 취약점의 신속한 식별을 통해서만 보호될 수 있으며, 가능한 경우 식별과 응답을 모두 자동화함으로써 보호될 수 있습니다.

참고문헌

• https://www.kb.cert.org/vuls/id/782301/ • https://thehackernews.com/2020/03/ppp-daemon-vulnerability.html • https://www.tenable.com/blog/cve-2020-8597-buffer-overflow-vulnerability-in-point-to-point-protocol-daemon-pppd • https://insights.sei.cmu.edu/cert/2020/03/security-automation-should-begin-at-the-source.html • https://packetstormsecurity.com/files/156802/pppd-2.4.8-Buffer-Overflow.html • https://www.drizgroup.com/driz_group_blog/what-is-remote-code-execution-attack-how-to-prevent-this-type-of-cyberattack • https://github.com/WinMin/CVE-2020-8597 • http://www.howtodoityourself.org/pppoe-server-how-to-do-it-yourself.html

도구 다운로드