반응형
* 포맷 스트링 공격 : 외부로부터 입력된 값을 검증하지 않고, 입출력 함수의 포맷 스트링을 그대로 사용하는 경우, 공격자가 권한을 획득하거나, 메모리 내용을 확인(%x) 및 원하는 위치(RET 영역) 이동, Return Address 를 악성 코드 주소로 변조(%n)하여, 임의 코드를 실행 하는 등의 공격이 가능
* 포맷 스트링 주요 함수
주요 함수 | 기능 |
printf(서식문자열, 인자1,..인자N) | 인자값을 포맷 스트링 표준으로 출력 |
fprintf(서식문자열, 인자1,...인자N) | 인자값을 포맷 스트링으로 지정한 파일(fp)에 출력 |
sprintf(서식문자열, 인자1,...인자N) | 인자값을 포맷 스트링으로 지정한 버퍼(buf)에 출력 |
* 포맷 스트링 대응 방안 : 서식문자열을 함수의 입력 파라미터로 직접 사용하지 않아야 함
// 포맷 스트링 사용 함수(printf등)에 입력 파라미터를 직접 지정한 취약한 사용 예
#include <stdio.h>
int main(int argc, char **argv){
printf(argv[1]);
}
// 포맷 스트링 사용 함수(prinft등)에 서식 문자열 지정으로 입력 파라미터가 간접적으로 참조된 안전한 사용 예
#include <stdio.h>
int main(int argc, char **argv){
printf("%s", argv[1]);
}
- 즉 포맷스트링 지정 없이, 입력값을 필터링 없이 받아 들일 시, 설계와 다른 의도로 동작할 수 있기때문에, 정확한 포맷스트링의 지정이 필요
반응형
'Information Security > Hacking' 카테고리의 다른 글
DRDoS (Distributed Reflection DoS) (0) | 2021.03.20 |
---|---|
포트 스캐닝 (Port Scanning) (2) | 2021.03.07 |
레이스 컨디션 공격 (Race Condition Attack) (0) | 2021.03.05 |
버퍼 오버 플로우 (BOF - Buffer OverFlow) 공격 (0) | 2021.03.02 |
웹 서버 보안 대책 (Apache 설정 기준) (0) | 2021.02.18 |