
UpdatedAug 3, 2026
cve-2021-41773-source-code-analysis — Updated!
Python 기반 정적 패치 분석 도구로, 취약한 Apache HTTP Server 2.4.49 소스 코드와 패치된 2.4.51 구현을 비교하여 CVE-2021-41773(Apache HTTP Server 경로 탐색)의 근본 원인과 수정 방법을 연구합니다.
Apache HTTP Server CVE-2021-41773 소스 코드 분석
CVE-2021-41773 (Apache HTTP Server 경로 탐색) 의 근본 원인과 수정 사항을 연구하기 위해 취약한 Apache HTTP Server 2.4.49 소스 코드와 패치된 2.4.51 구현을 비교하는 Python 기반 정적 패치 분석 도구입니다.
이 프로젝트는 단순한 텍스트 기반 diff 대신 의미론적 소스 코드 분석을 수행합니다. 대상 함수에서 구조적 정보를 추출하고, 두 버전을 비교하며, 보안 관련 변경 사항을 추론하고, 전문적인 분석 보고서를 생성합니다.
기능
- 정적 소스 코드 분석
- 중괄호 매칭을 이용한 함수 추출
- 취약한 버전과 패치된 버전 간 구조적 비교
- 보안 기능 탐지
- 패치 추론 엔진
- Markdown 보고서 생성
- JSON 보고서 생성
- HTML 보고서 생성
- 자동화된 Docker 랩 설정
- 환경 검증 도구
프로젝트 아키텍처
Apache 소스 코드
│
▼
parser.py
│
▼
extractor.py
│
▼
comparator.py
│
▼
reasoning.py
│
▼
reports.py
프로젝트 구조
cve-2021-41773-source-code-analysis
│
├── docker
│ ├── apache249
│ │ ├── Dockerfile # Apache HTTP Server 2.4.49 컨테이너 빌드
│ │ └── docker-compose.yml # 취약한 Apache 컨테이너 시작
│ │
│ └── apache251
│ ├── Dockerfile # Apache HTTP Server 2.4.51 컨테이너 빌드
│ └── docker-compose.yml # 패치된 Apache 컨테이너 시작
│
├── labs # 다운로드된 Apache 소스 코드 저장
│
├── references
│ └── resources.md # CVE 연구를 위한 참고 자료
│
├── scripts
│ ├── patch_analysis
│ │ ├── __init__.py # 분석 패키지 초기화
│ │ ├── parser.py # Apache 소스에서 대상 C 함수 추출
│ │ ├── extractor.py # 변수, 호출, 조건 및 보안 기능 추출
│ │ ├── comparator.py # 취약한 버전과 패치된 함수 구조 비교
│ │ ├── reasoning.py # 탐지된 변경 사항에 대한 보안 추론 수행
│ │ ├── reports.py # 보고서 생성 조정
│ │ ├── markdown_report.py # Markdown 분석 보고서 생성
│ │ ├── json_report.py # JSON 분석 보고서 생성
│ │ └── html_report.py # HTML 분석 보고서 생성
│ │
│ ├── analyze_patch.py # 패치 분석의 메인 진입점
│ ├── verify_lab.py # Docker 랩 구성 검증
│ └── debug.py # 디버깅을 위한 원시 비교 출력 표시
│
├── analysis # 생성된 분석 보고서
│
├── setup.sh # 전체 랩을 자동으로 준비
│
├── LICENSE
└── README.md
요구 사항
- Python 3.10+
- Docker
- Docker Compose
- Bash
- Linux (Kali Linux에서 테스트됨)
설치
저장소 클론
git clone https://github.com/KunalKhandelwal-dev/cve-2021-41773-source-code-analysis.git
프로젝트 디렉토리로 이동
cd cve-2021-41773-source-code-analysis
설정
자동 설정 스크립트를 실행합니다.
sudo bash setup.sh
설정 스크립트는 다음 작업을 자동으로 수행합니다:
- 필수 도구 확인
- Docker 설치 확인
- Apache HTTP Server 2.4.49 다운로드
- Apache HTTP Server 2.4.51 다운로드
- 두 소스 트리 압축 해제
- Docker 이미지 빌드
- Apache 컨테이너 시작
- 분석 환경 생성
출력 예시
[INFO] 필수 도구 확인 중...
[SUCCESS] 필수 도구를 찾았습니다.
[INFO] Docker 확인 중...
[SUCCESS] Docker가 실행 중입니다.
[INFO] Apache HTTP Server 2.4.49 다운로드 중...
[SUCCESS] Apache 2.4.49가 다운로드되었습니다.
[INFO] Apache HTTP Server 2.4.51 다운로드 중...
[SUCCESS] Apache 2.4.51이 다운로드되었습니다.
[INFO] Docker 이미지 빌드 중...
[SUCCESS] Docker 이미지가 빌드되었습니다.
[INFO] Apache 컨테이너 시작 중...
[SUCCESS] 컨테이너가 시작되었습니다.
=========================================================
[SUCCESS] Apache CVE 랩 설정 완료
=========================================================
환경 검증
실행
cd scripts
sudo python3 verify_lab.py
성공적인 검증
검증 도구는 다음을 확인합니다:
- Docker 설치
- Docker 데몬
- 실행 중인 컨테이너
- Apache 버전
- Apache 소스 코드
- 대상 함수
- HTTP 서비스
- GDB 사용 가능 여부
패치 분석 실행
scripts 디렉토리로 이동합니다.
cd scripts
실행
sudo python3 analyze_patch.py
출력 예시
분석 출력 샘플
Apache HTTP Server 패치 분석 보고서
보안 발견 사항
[MEDIUM]
퍼센트 디코딩 도입 또는 수정됨
[MEDIUM]
16진수 검증 도입 또는 수정됨
[HIGH]
디렉토리 탐색 처리 개선됨
[HIGH]
경로 정규화 파이프라인 업데이트됨
[CRITICAL]
탐색 보호 강화됨
생성된 보고서
성공적인 실행 후 다음 보고서가 생성됩니다:
analysis/
├── analysis.md
├── analysis.json
└── analysis.html
분석 파이프라인
Apache 소스 로드
│
▼
대상 함수 추출
│
▼
구조적 정보 추출
│
▼
취약한 버전 vs 패치된 버전 비교
│
▼
보안 추론
│
▼
보고서 생성
탐지된 보안 기능
- 퍼센트 인코딩 / 디코딩
- 16진수 검증
- 점 세그먼트 처리
- 경로 구분자 정규화
- URI 정규화 플래그
- 디렉토리 탐색 보호
생성된 발견 사항
추론 엔진은 다음과 같은 보안 개선 사항을 식별합니다:
- 퍼센트 디코딩 도입
- 16진수 검증 도입
- 디렉토리 탐색 처리 개선
- 경로 정규화 업데이트
- 탐색 보호 강화
교육 목적
이 프로젝트는 다음을 대상으로 합니다:
- 보안 연구원
- CVE 근본 원인 분석을 배우는 학생
- 안전한 소프트웨어 엔지니어링
- 정적 소스 코드 분석
- 패치 diff 분석
- 취약점 연구
라이선스
이 프로젝트는 MIT 라이선스로 배포됩니다.
저자
Kunal Khandelwal
B.Tech 컴퓨터 과학 공학 (사이버 보안)
보안 연구 | 애플리케이션 보안 | Docker | 소스 코드 분석