5강 Logical Bugs
5.1 Logical Bugs
Logical Bugs (논리적 오류) : 프로그램이 부정확하게 동작하지만 크래시가 발생하지 않는 경우
<-> 프로그램의 메모리 관리 실수로 인해 발생하는 메모리 커럽션 취약점
버퍼오버플로우 :버퍼가 허용할 수 있는 양의 데이터보다 더 많은 값이 저장돼 버퍼가 넘치는 취약점
5.2 Command Injection
Injection : 검증되지 않은 공격자의 입력을 셸 커맨드 또는 쿼리 일부로 처리해 정상적인 실행 흐름을 변경할 수 있는 취약점
분류
- SQL 인젝션 : 문자열을 Structured Query Language(SQL)의 일부로 처리해 발생하는 취약점
- 커맨드 인젝션 : 문자열 일부를 셸 커맨드에서 처리하면서 발생하는 취약점 (검증 없이 사용자 입력을 셸 명령어로 실행할 때)
공격자는 메타문자*와 같은 특수한 문자를 활용해 임의의 코드 실행까지 이어지게 한다.
- $ (셸 환경변수)
- && (이전 명령어 실행 후 다음 명령어 실행)
- ; (명령어 구분자)
- | (명령어 파이핑 - 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달)
- * (와일드 카드)
5.3 Race Condition
프로세스 혹은 스레드 간 자원 관리 실수로 발생하는 상태로 단일 스레드에서는 취약점이 발생하지 않는 코드라도 두 개 이상의 스레드가 자원을 동시에 참조할 수 있다면 발생할 수 있다.
5.4 Path Traversal
프로그래머가 가정한 디렉토리를 벗어나 외부에 존재하는 파일에 접근할 수 있는 취약점이다.
- /와 . 을 검증해주지 않을 경우
5.5 Environment attack
환경 변수는 프로세스가 동작하는 방식에 영향을 미칠 수 있는 동적인 값들의 모임이다.
Review(5강 Logical Bugs)
커맨드 인젝션
- 프로그램이 적절한 검증 없이 사용자의 입력을 셸 명령어로 실행할 때 발생하는 취약점으로, 메타 문자* 사용으로 임의의 명령어를 추가로 삽입해 임의 코드 실행
레이스 컨디션
- 프로세스 혹은 스레드 간 자원 관리 실수로 발생하는 상태로 뮤텍스*가 걸려있지 않은 하나의 자원에 대해 두 개 이상의 프로세스 및 스레드가 접근할 수 있을때 가능
Path Traversal
- 프로그래머가 의도하지 않은 외부의 파일에 접근할 수 있는 취약점으로 . 과 / 와 같이 특정 디렉토리를 벗어날 수 있는 문자에 대해 검증이 존재하지 않을 경우 발생
환경 변수 공격
- PATH 환경 변수*에 경로를 넣어두면 해당 경로에 있는 파일은 현재 디렉토리에 있는 파일과 같이 실행할 수 있어 프로그램 내 상대 경로를 사용해 명령어를 실행하고 PATH 환경 변수를 조작해 공격자가 원하는 명령어 실행
메타 문자 : 리눅스 셸에서 여러 명령어를 한 줄로 실행할 수 있게 하는 특수문자
뮤텍스(Mutex) : 중복 실행을 방지하기 위한 목적으로 사용
환경 변수 : 프로세스가 동작하는 방식에 영향을 미칠 수 있는 동적인 값들의 모임
'공부 > 보안' 카테고리의 다른 글
[dreamhack] System Exploitation 6강 - Return Address Overwrite (0) | 2021.03.09 |
---|---|
[dreamhack] System Exploitation 6강 - ELF 동적 분석 (0) | 2021.03.08 |
[dreamhack] System Exploitation 3강 (0) | 2021.03.07 |
나 보려고 정리해두는 gdb 명령어 (0) | 2021.03.07 |
[dreamhack] System Exploitation 2강 (0) | 2021.03.06 |