링커, 로더, 실행 파일
메모리 페이지에 「쓰기 가능」과 「실행 가능」을 동시에 허용하지 않는(W^X, 쓰기와 실행의 분리) 것으로 막기 쉬워지는 공격은?
- A비밀번호를 무차별 대입으로 시도하는 공격
- B대량의 통신을 보내 서버를 멈추게 하는 공격
- C스택 등의 데이터 영역에 공격용 기계어를 써 넣고, 거기로 점프시켜 실행하게 하는 공격
정답과 해설 보기
정답: C. 스택 등의 데이터 영역에 공격용 기계어를 써 넣고, 거기로 점프시켜 실행하게 하는 공격
예전의 공격에서는 버퍼 오버플로로 스택에 기계어를 써 넣고, 복귀 주소를 그쪽으로 향하게 해 실행시키는 방법이 자주 쓰였습니다. CPU의 페이지 테이블에는 실행 금지 비트(NX 비트 등)가 있으며, OS가 스택, 힙, .data를 실행 금지로, .text를 쓰기 금지로 하면 이 방법은 쓸 수 없게 됩니다. JIT 컴파일러처럼 실행 중에 코드를 만드는 경우에는 쓰기와 실행 권한을 전환해서 사용합니다.
- A. 비밀번호 무차별 대입은 메모리 권한과 관계가 없습니다.
- B. 통신량에 의한 공격은 메모리 권한으로 막을 수 없습니다.
- C. 올바릅니다. 쓸 수 있었던 장소는 실행할 수 없게 됩니다.