작업 환경
- VMware Workstation Pro (17.6.2 ver)
- Server
- Web 서버 : Rocky_Linux(8.10 ver, VMnet 2, PHP로 구성)
- DNS 서버 : Rocky_Linux(8.10 ver, VMnet 1)
- Client
- Kali Linux : Web 취약점 점검용 (VMnet 1)
- GNS 구성
- 해당 점검은 비밀번호 수정 페이지에 한해서 진행됨
FS (상) | 2. 포맷 스트링 |
취약점 개요 | |
점검 내용 | 웹 애플리케이션에 포맷 스트링 취약점 존재 여부 점검 |
점검 목적 | 공격자의 포맷 스트링 취약점을 통한 악의적인 행위를 차단하기 위함 |
보안 위협 | C언어로 만드는 프로그램 중 변수의 값을 출력하거나 입력받을 때 입력받은 값을 조작하여 프로그램의 메모리 위치를 반환받아 메모리 주소를 변조하여 시스템의 관리자 권한을 획득할 수 있음 |
판단 기준 |
양호 : 포맷 스트링 버그를 발생시키는 문자열 입력 시 검증 로직이 존재하여 오류가 발생하지 않는 경우 취약 : 포맷 스트링 버그를 발생시키는 문자열 입력 시 검증 로직이 미흡하여 오류가 발생하는 경우 |
참고 | OWASP TOP 10 항목 중 A03 : Vulnerable and Outdated Components A05 : Security Misconfiguration A06 : Vulnerable and Outdated Components 에 해당한다고 판단 |
점검 방법
- Step 1) 웹 사이트에서 사용자가 입력한 파라미터 값에 아래와 같은 패턴 입력 후 전송 시 다른 값을 입력했을 때는 발생하지 않는 에러 반응이나 멈추는 등 이상 반응을 보이는지 확인
- 패턴 1 : %n%n%n%n%n%n%n%n%n%n
- 패턴 2 : %s%s%s%s%s%s%s%s%s%s
- 패턴 3 : %1!n!%2!n!%3!n!%4!n!%5!n!%6!n!%7!n!%8!n!%9!n!%10!n!
- 패턴 4 : %1!s!%2!s!%3!s!%4!s!%5!s!%6!s!%7!s!%8!s!%9!s!%10!s!
[ 패턴 1 ]
이상 없음
[ 패턴 2 ]
이상 없음
[ 패턴 3 ]
이상 없음
[ 패턴 4 ]
이상 없음
보안 설정 방법
- 컴파일러에서 문자열 입력 포맷에 대한 자체적인 검사를 내장하고 있으므로 문자열 입력 포맷 검증 후 소스 코드에 적용
- (예) GCC 컴파일러는 문자열 입력 포맷과 실제 입력이 맞지 않는 경우 경고 옵션이 존재하나 해당 방식은 컴파일 과정에서만 검증 가능하며, 런타임 상황에서는 Fuzz testing을 이용하여 포맷 스트링 버그가 존재하는지 검증이 필요함
- 웹 서버 프로그램 최신 보안패치 적용
- 웹 사이트에서 사용자가 입력한 파라미터 값 처리 중에 발생한 경우 사용자 입력 값의 유효성에 대한 검증 로직을 구현
참고
📌 포맷 스트링 취약점이란?
- 공격자가 %x, %s, %n 등의 포맷 토큰을 이용해 메모리 조작이나 정보 유출을 유도하는 취약점
🔐 OWASP TOP 10(2021)과의 연관
1. A03: Injection
- 포맷 스트링은 일종의 인젝션(SQL 인젝션, 명령어 인젝션처럼 정의되지 않은 제어 구조 삽입을 통해 원래 코드 흐름을 깨트리는 방식
- %x, %s, %n 등의 제어문자가 내부 메모리 접근을 유도
- 애플리케이션이 사용자 입력을 직접적으로 처리하면 포맷 인젝션이 발생할 수 있음
2. A05 : Security Misconfiguration
- 로깅, 출력, 메시지 템플릿 등을 잘못 구성하여 사용자 입력을 포맷 문자열로 그대로 전달
- 특히 PHP에서 printf($_GET['msg']) 와 같이 사용 시 공격 가능성 존재
- PHP에서도 printf, sprintf 사용 시 취약하게 설계할 경우 문제 발생
3. A06 : Vulnerable and Outdated Components
- 오래된 C 기반 확장 모듈, 또는 외부 바이너리와 연동된 웹 애플리케이션에서는 여전히 format string 버그가 남아 있을 수 있음
- PHP 내부는 안전하더라도, **확장 모듈(libc, openssl 등)**이 취약할 수 있음
'주요정보통신기반시설가이드 > Web 취약점 점검' 카테고리의 다른 글
[SS (상)] 6. SSI 인젝션 (0) | 2025.05.12 |
---|---|
[SI (상)] 5. SQL 인젝션 (0) | 2025.05.12 |
[OC (상)] 4. 운영체제 명령 실행 (2) | 2025.05.11 |
[LI (상)] 3. LDAP 인젝션 (0) | 2025.05.11 |
[BO (상)] 1. 버퍼 오버플로우 (0) | 2025.05.11 |