버퍼 오버플로우 : 정해진 메모리의 범위를 넘치게 해서 데이터나 함수 주소, 리턴 주소를 변경시켜 임의의 코드를 실행시킴
1) 스택 버퍼 오버플로우
스택 : 함수 처리를 위해 지역변수 및 매개변수 위치
정의된 버퍼의 한계치를 넘는 경우 버퍼 오버플로우 발생
- 스택의 RET(Return Address) 영역을 변조시켜 악성코드 실행 시킴
- 루트 소유의 SUID 설정 프로그램에 버퍼 오버 플로우 취약점이 존재하면 root 권한으로 악성 프로그램 실행 가능
(SUID, SGID : 루트가 아닌 사용자들이 잠깐 루트의 사용권한을 써서 프로그램 실행해야할 때 주는 권한 설정)
<대책>
- 운영체제의 커널 패치
- 함수로부터 복귀하기 전에 스택 무결성 검사
- 스택에서의 쓰기 권한 제한
- 스택에서의 프로그램 실행금지
- SUID 프로그램 제한
ASLR(Address Space Layout Randomization) : 프로세스의 주소 공간을 랜덤하게 배치하는 방법. 실행 시 마다 메모리 주소를 변경시켜 악성코드에 의한 특정주소 호출을 방지.
2) 힙 버퍼 오버플로우
힙 : 필요시 할당하고 해제하여 동적으로 관리하는 영역. linked-list 구조, 연속된 메모리 구조에 할당되는 것이 아니라서 주소 예측이 어려움.
[포맷 스트링 공격(Format string attack)]
포맷 스트링(서식 문자열) : C 언어의 printf()등의 함수에서 사용되는 문자열의 입출력 형태를 정의하는 문자열
- 포맷 스트링을 인자로 하는 함수의 취약점 이용한 공격
- 외부 입력값 검증 않고 입출력 함수의 포맷 스트링을 그대로 사용하는 경우 발생
https://eliez3r.github.io/post/2018/09/04/study-system-Format-String-Attack.html
포맷스트링 공격(Format String Attack) - eli_ez3r Hacking Blog
2000년도 후반에 해커들 사이에 큰 반향을 일으키 보고서 하나가 발표되었다. Format String Attack Format String Attack이란 무엇인가? 이것은 기존에 가장 널리 사용되고 있던 Buffer Overflow 공격 기법에 견
eliez3r.github.io
[레이스 컨디션 공격(Race condition attack)]
레이스 컨디션 : 둘 이상의 프로세스나 스레드가 공유자원에 동시에 접근할 때 접근하는 순서에 따라 비정상적인 결과 발생
- 실행되는 프로세스가 임시파일을 만드는 경우 악의적인 프로그램을 통해 그 프로세스의 실행 중에 끼어들어 임시파일을 심볼릭 링크하여 악의적인 행위를 수행하는 공격
1) 취약 프로그램이 생성하는 임시 파일의 이름을 파악. 2) 생성될 임시파일과 같은 이름의 파일을 생성. 3) 이에 대한 심볼릭 링크를 생성. 4) 원본 파일을 지운 채 취약 프로그램이 심볼릭 링크를 건 파일을 생성할 때를 기다림. 5) 생성되었을 때 심볼릭 링크를 이용해 파일 내용 변경. 6) 시스템은 변경된 파일을 자신이 생성한 임시 파일로 생각하고 프로세스를 진행시키고, 공격자는 관리자 권한으로 실행되는 프로그램에 끼어들어 악의적인 행위를 수행.
'보안기사 > 01. 시스템 보안' 카테고리의 다른 글
1. 윈도우 기본 학습 (0) | 2022.03.30 |
---|---|
저널링(Journaling) (0) | 2021.06.14 |
리눅스 디렉터리 구조 (루트(/) 디렉터리) (0) | 2021.06.14 |
아이노드(inode) (0) | 2021.06.14 |
리눅스 프로세스(PROCESS) 관리 명령어 (0) | 2021.06.14 |