상위 질문
타임라인
채팅
관점
하드닝
위키백과, 무료 백과사전
Remove ads
하드닝(hardening) 또는 시스템 하드닝(system hardening)은 컴퓨터 보안에서 일반적으로 공격 표면의 취약점을 줄여 시스템을 '강화된 표적'으로 만들어 보안을 강화하는 과정이다.[1][2] 시스템이 더 많은 기능을 수행할수록 공격 표면은 더 커진다. 원칙적으로 단일 기능 시스템이 다목적 시스템보다 더 안전하다. 하드닝은 사이버 보안의 중요한 구성 요소로 간주된다.[3]
사용 가능한 공격 방식을 줄이는 것은 일반적으로 기본 암호 변경, 불필요한 소프트웨어 제거, 불필요한 사용자 이름 또는 로그인 제거, 불필요한 서비스 비활성화 또는 제거를 포함한다. 이는 또한 취약점을 패치하고 필수적이지 않은 보조 서비스를 끄는 것을 포함할 수 있다.[4] 하드닝 조치는 침입 방지 시스템 설정, 계정 비활성화 또는 제한, 파일 시스템 권한 축소, 암호화된 네트워크 연결 사용 및 호스트 기반 네트워크 보안 활성화도 포함할 수 있다.[5]
Remove ads
바이너리 하드닝
바이너리 하드닝은 일반적인 익스플로잇으로부터 보호하기 위해 바이너리 실행 파일을 분석하고 수정하는 보안 기술이다. 바이너리 하드닝은 컴파일러와 무관하며 전체 도구 체인을 포함한다. 예를 들어, 한 가지 바이너리 하드닝 기술은 잠재적인 버퍼 오버플로를 감지하고 기존 코드를 더 안전한 코드로 대체하는 것이다. 바이너리를 조작하는 장점은 소스 코드가 없거나 난독화되어 있을 때 레거시 코드의 취약점을 자동으로 수정할 수 있다는 것이다. 둘째, 동일한 기술을 여러 컴파일러의 바이너리에 적용할 수 있으며, 일부 컴파일러는 다른 컴파일러보다 보안이 취약할 수 있다.
바이너리 하드닝은 종종 공격자가 프로그램 코드를 성공적으로 재사용하여 익스플로잇을 수행하는 것을 방지하기 위해 제어 흐름 및 명령어 주소의 비결정론적 수정을 포함한다. 일반적인 하드닝 기술은 다음과 같다.
- 버퍼 오버플로 보호
- 스택 덮어쓰기 보호
- 위치 독립 실행 파일 및 주소 공간 배치 난수화
- 바이너리 스터링 (기본 블록의 주소 무작위화)
- 포인터 마스킹 (코드 인젝션 방어)
- 제어 흐름 난수화 (제어 흐름 우회 방어)
Remove ads
각주
같이 보기
외부 링크
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads