15.5. GCC를 사용하여 코드 강화
컴파일러가 소스 코드를 개체 코드로 변환할 때 일반적으로 악용되는 상황을 방지하기 위해 다양한 검사를 추가하여 보안을 강화할 수 있습니다. 올바른 컴파일러 옵션 세트를 선택하면 소스 코드를 변경하지 않고도 보다 안전한 프로그램 및 라이브러리를 생성하는 데 도움이 될 수 있습니다.
릴리스 버전 옵션
다음은 Red Hat Enterprise Linux를 대상으로 하는 개발자에게 최소 권장 옵션 목록입니다.
$ gcc ... -O2 -g -Wall -Wl,-z,now,-z,relro -fstack-protector-strong -D_FORTIFY_SOURCE=2 ...
-
프로그램의 경우
-fPIE
및-pie
Position Independent Executable 옵션을 추가합니다. -
동적으로 연결된 라이브러리의 경우 필수
-fPIC
(Position Independent Code) 옵션은 간접적으로 보안을 강화합니다.
개발 옵션
다음 옵션을 사용하여 개발 중 보안 결함을 탐지하는 것이 좋습니다. 릴리스 버전 옵션과 함께 다음 옵션을 사용합니다.
$ gcc ... -Walloc-zero -Walloca-larger-than -Wextra -Wformat-security -Wvla-larger-than ...
추가 리소스
- Defensive Coding 가이드
- Red Hat Developer 블로그 포스트 - GCC를 사용하여 메모리 오류 탐지