맨위로가기

버퍼 오버플로 보호

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

버퍼 오버플로 보호는 버퍼 오버플로 공격으로부터 시스템을 보호하기 위한 기술과 기법을 의미한다. 이러한 공격은 메모리 버퍼에 예상보다 많은 데이터를 써서 프로그램의 제어 흐름을 변경하고 악성 코드를 실행하는 데 사용될 수 있다.

버퍼 오버플로 보호 기술에는 스택의 버퍼와 제어 데이터 사이에 특정한 값을 배치하여 버퍼 오버플로를 감지하는 '카나리', 각 메모리 블록에 대한 런타임 경계 정보를 추가하여 포인터 접근을 검사하는 '경계 검사', 그리고 메모리 내 데이터의 유형을 태깅하는 '태깅' 등이 있다. 이러한 기술들은 GCC, Microsoft Visual Studio, Clang/LLVM 등 다양한 컴파일러에서 구현되어 있으며, 운영체제 수준에서도 보호 기능을 제공한다.

버퍼 오버플로 보호 기술은 스택 스매싱과 같은 공격을 방어하는 데 효과적이지만, 여전히 한계가 존재하며, 추가적인 보안 고려 사항이 필요하다.

더 읽어볼만한 페이지

  • 소프트웨어 버그 - 교착 상태
    교착 상태는 둘 이상의 프로세스가 자원을 점유하고 서로의 자원을 요청하여 더 이상 진행할 수 없는 상태를 의미하며, 상호 배제, 점유 대기, 비선점, 순환 대기 네 가지 조건이 모두 충족되어야 발생하고, 운영 체제는 이를 예방, 회피, 무시, 발견하는 방법으로 관리한다.
  • 소프트웨어 버그 - 글리치
    글리치는 예기치 않은 오작동이나 오류를 뜻하며, 전자 공학, 컴퓨터, 비디오 게임, 텔레비전 방송, 대중문화 등 다양한 분야에서 기능 실패, 오류, 그래픽 및 사운드 문제, 신호 오류 등의 이상 현상을 포괄적으로 지칭하는 용어이다.
  • 취약점 공격 - 보안 취약점
    보안 취약점은 시스템의 설계, 구현, 운영, 관리상 결함이나 약점으로, 위협에 의해 악용되어 시스템 보안 정책을 위반할 수 있는 요소이며, ISO 27005, IETF RFC 4949, NIST SP 800-30, ENISA 등 다양한 기관에서 정의하고 있다.
  • 취약점 공격 - 인터넷 보안
    인터넷 보안은 사이버 위협, 악성 소프트웨어, 서비스 거부 공격 등으로부터 정보와 시스템을 보호하기 위해 네트워크 계층 보안, 다단계 인증, 방화벽 등 다양한 기술과 방법을 포괄한다.
버퍼 오버플로 보호
일반 정보
스택 기반 버퍼 오버플로의 다이어그램
스택 기반 버퍼 오버플로의 다이어그램
유형소프트웨어 보안 취약점
발견 시기1972년
악용 가능성원격으로
CWECWE-119
CAPECCAPEC-7
OWASPA03:2021 - 주입
보호 기술
스택 보호ASLR
DEP
스택 카나리
일반적인 완화 기술안전한 프로그래밍 관행
코드 감사
퍼징
정적 프로그램 분석
W^X
같이 보기
관련 주제버퍼 오버플로
힙 오버플로
포맷 스트링 공격
코드 주입

2. 역사

스택 버퍼 오버플로는 스택 스매싱이라고 알려진 공격의 일환으로 의도적으로 발생할 수 있다. 영향을 받는 프로그램이 특별한 권한으로 실행되거나 신뢰할 수 없는 네트워크 호스트(예: 공용 웹 서버)로부터 데이터를 수신하는 경우, 이 버그는 공격자가 실행 가능한 코드를 실행 중인 프로그램에 주입하고 프로세스를 제어할 수 있도록 하는 잠재적인 보안 취약점이다. 이것은 공격자가 컴퓨터에 무단으로 접근하는 가장 오래되고 신뢰할 수 있는 방법 중 하나이다.[39]

카나리 기법은 이러한 공격의 전체 유형을 방지하는 이점을 제공한다. 일부 연구자들에 따르면,[40] 이러한 기술의 성능 영향은 무시할 만하다.

스택 스매싱 방지는 특정 형태의 공격으로부터는 보호할 수 없다. 예를 들어, 힙의 버퍼 오버플로우에 대해서는 보호할 수 없다.

3. 작동 원리

스택 버퍼 오버플로우는 프로그램이 콜 스택 상에서 할당된 버퍼보다 더 많은 데이터를 쓸 때 발생하는 현상이다. 이는 대개 스택 내 인접 데이터 손상으로 이어지며, 프로그램 충돌이나 오작동을 유발한다. 스택 버퍼 오버플로는 버퍼 오버플로우의 일종으로, 힙 버퍼 오버플로보다 프로그램 실행 중단 가능성이 더 높은데, 이는 스택에 함수 호출의 반환 주소가 저장되기 때문이다.[1]

3. 1. 스택 스매싱

스택 버퍼 오버플로는 스택 스매싱이라고 알려진 공격의 일환으로 의도적으로 발생할 수 있다. 영향을 받는 프로그램이 특별한 권한으로 실행되거나 신뢰할 수 없는 네트워크 호스트(예: 공용 웹 서버)로부터 데이터를 수신하는 경우, 이 버그는 공격자가 실행 가능한 코드를 실행 중인 프로그램에 주입하고 프로세스를 제어할 수 있도록 하는 잠재적인 보안 취약점이다. 이것은 공격자가 컴퓨터에 무단으로 접근하는 가장 오래되고 신뢰할 수 있는 방법 중 하나이다.[2]

일반적으로 버퍼 오버플로 보호는 함수 호출의 스택 프레임에서 데이터의 구성을 수정하여 메모리에서 이전에 있는 버퍼가 오버플로우되었음을 보여주는 "카나리아" 값을 포함한다. 이는 전체 공격 유형을 방지하는 이점을 제공한다. 일부 연구자들에 따르면,[3] 이러한 기술의 성능 영향은 무시할 만하다.

스택 스매싱 방지는 특정 형태의 공격으로부터 보호할 수 없다. 예를 들어, 힙의 버퍼 오버플로우에 대해서는 보호할 수 없다. 자료 구조 내 데이터의 레이아웃을 변경하는 것은 불가능하다. 구조는 특히 공유 라이브러리의 경우 모듈 간에 동일해야 한다. 버퍼 뒤의 구조 내의 모든 데이터는 카나리아로 보호할 수 없으므로 프로그래머는 변수를 구성하고 구조를 사용하는 방법에 매우 주의해야 한다.

4. 방어 기법

스택 버퍼 오버플로 공격을 막기 위한 다양한 방어 기법들이 개발되었다. 이러한 기법들은 주로 컴파일러 수준에서 구현되거나 운영체제의 지원을 받아 작동한다. 주요 방어 기법으로는 카나리(Canaries), 경계 검사(Bounds Checking), 태깅(Tagging) 등이 있다.


  • '''카나리(Canaries):''' 스택 버퍼 오버플로를 감시하기 위해 버퍼와 스택의 제어 데이터 사이에 배치되는 특정한 값이다. 버퍼 오버플로가 발생하면 카나리 값이 변경되므로, 이를 통해 공격을 탐지할 수 있다. 카나리에는 Terminator, Random, Random XOR 등의 종류가 있다.
  • '''경계 검사(Bounds Checking):''' 컴파일러가 메모리 블록에 대한 경계 정보를 추가하고, 런타임에 포인터를 검사하여 버퍼 오버플로를 방지한다.
  • '''태깅(Tagging):''' 메모리 영역에 태그를 붙여 실행 가능 여부를 표시하거나, 할당되지 않은 영역으로 표시하여 버퍼 오버플로를 방지한다. NX 비트 하드웨어 기능이 대표적인 예시이다.


이러한 방어 기법들은 스택 스매싱으로 알려진 공격을 막는데 사용된다. 스택 스매싱은 공격자가 실행 가능한 코드를 프로그램에 삽입하여 프로세스의 제어를 획득하는 방식이다.[39] 카나리 기법은 이러한 공격의 전체 계층을 막을 수 있다는 장점이 있으며, 성능에 대한 영향은 무시해도 될 정도라고 한다.[40]

하지만, 스택 스매싱 보호는 힙에서의 버퍼 오버플로를 방어할 수 없는 등의 한계 또한 존재한다.

4. 1. 카나리 (Canaries)

'''카나리'''(Canaries) 또는 카나리 단어(canary words)는 버퍼 오버플로를 감시하기 위해 버퍼와 스택의 제어 데이터 사이에 배치되는 알려진 값이다. 스택 버퍼 오버플로가 발생하면 가장 먼저 손상되는 데이터는 일반적으로 카나리이며, 카나리 데이터 검증에 실패하면 오버플로가 발생했음을 알 수 있다. 이 용어는 석탄 광산의 카나리에서 유래되었는데, 카나리가 유독 가스에 먼저 영향을 받아 광부들에게 경고를 주는 것과 같은 원리이다. 카나리는 '스택 쿠키'라고도 불린다.

카나리에는 세 가지 종류가 있다: ''Terminator'', ''Random'', ''Random XOR''. 스택가드(StackGuard)의 최신 버전은 세 가지 모두를 지원하며, ProPolice는 ''Terminator''와 ''Random'' 카나리를 지원한다.

카나리 기법은 힙 오버플로와 같은 특정 형태의 공격을 막을 수 없고, 데이터 구조 내 데이터 배치 변경에 제약이 있으며, 구조체 내 모든 데이터를 보호할 수 없다는 한계가 있다. 그러나 몇몇 연구에 따르면 이 기법의 성능 영향은 무시할 만한 수준이다.[40]

4. 1. 1. Terminator 카나리

Terminator 카나리는 대부분의 버퍼 오버플로 공격이 문자열 종결자로 끝나는 특정 문자열 연산에 기반한다는 점을 이용한다. 이 방식에서 카나리는 null 종결자, CR, LF, -1로 구성된다. 따라서 공격자가 카나리를 변경하지 않으려면 반환 주소를 쓰기 전에 널 문자를 써야 한다. 이는 `strcpy()`를 사용하는 공격과 널 문자를 복사하여 반환하는 기법들을 막는다.

하지만 이 보호에도 불구하고, 공격자는 잠재적으로 카나리를 알려진 값으로 덮어쓰고 정보를 틀린 값들로 제어해서 카나리 검사 코드를 통과할 수 있다.

4. 1. 2. Random 카나리

Random 카나리는 공격자가 그 값을 알 수 없도록, 보통 엔트로피 수집 데몬에서 무작위로 생성된다. 일반적으로 익스플로잇을 위해 카나리를 읽는 것은 논리적으로 불가능하거나 어렵다. 카나리는 버퍼 오버플로 보호 코드와 같이, 알아야 할 필요가 있는 사람만 알고 있는 안전한 값이다.[1]

일반적으로 Random 카나리는 프로그램 초기화 시에 생성되어 전역 변수에 저장된다. 이 값은 보통 매핑되지 않은 페이지로 채워져서, 이것을 읽으려는 시도는 세그먼테이션 폴트를 유발하고 프로그램을 종료시킨다. 공격자가 카나리가 어디에 있는지 위치를 알거나, 스택에서 카나리 값을 읽도록 하는 방식으로 프로그램을 속일 수 있다면 카나리를 읽는 것이 가능할 수도 있다.[1]

4. 1. 3. Random XOR 카나리

XOR을 섞은 무작위 카나리이다. 제어 데이터의 전부나 일부를 사용하여 XOR 연산을 수행한다. 이 방식을 통해 카나리나 제어 데이터가 오염되면 카나리 값이 달라진다.

랜덤 XOR 카나리는 카나리를 얻기 위한 "스택에서 읽기" 방식이 더 복잡하다는 점을 제외하면, 랜덤 카나리와 같은 취약점을 갖는다. 공격자는 카나리, 알고리즘, 그리고 원본 카나리를 생성하기 위한 제어 데이터를 모두 획득해야 한다.

랜덤 XOR 카나리는 버퍼 오버플로를 통해 제어 데이터를 가리키도록 포인터를 변경하는 특정 종류의 공격을 방어할 수 있다. 제어 데이터나 반환 값이 변경되면 XOR 인코딩 때문에 카나리 값이 달라지기 때문이다. 이 포인터를 통해 제어 데이터나 반환 값을 카나리를 오버플로우하지 않고 변경할 수 있다.

이러한 카나리는 손상된 포인터를 통해 제어 데이터가 변경되는 것을 막을 수 있지만, 다른 데이터나 포인터 자체는 보호하지 못한다. 특히 함수 포인터는 여기서 문제가 되는데, 오버플로우되어 호출될 때 셸코드를 실행할 수 있게 된다.[1]

4. 2. 경계 검사 (Bounds Checking)

경계 검사는 컴파일러 기반 기술로, 할당된 각 메모리 블록에 대해 실행 시간(런타임)에 경계 정보를 추가하고, 관련된 모든 포인터를 런타임에 검사하는 방식이다. C와 C++에서 경계 검사는 포인터 계산 시점[41] 또는 역참조 시점[42][43][44]에 수행될 수 있다.

이러한 접근 방식은 메모리의 할당된 각 블록을 서술하는 중앙 저장소[41][42][43], 또는 포인터와 추가적인 데이터(가리키는 영역을 서술하는)를 모두 포함하는 팻 포인터[45]를 사용하여 구현된다.

4. 3. 태깅 (Tagging)

태깅[46]은 메모리 내 데이터의 유형(주로 타입 검사에 사용)을 태깅하기 위한 컴파일러 기반 또는 하드웨어 기반(태그 아키텍처가 필요함) 기술이다. 메모리의 특정 영역을 실행 불가능으로 표시함으로써, 데이터 저장을 위해 할당된 메모리가 실행 코드를 포함하는 것을 효과적으로 방지한다. 또한 특정 메모리 영역을 할당되지 않은 것으로 표시하여 버퍼 오버플로를 방지할 수 있다.

역사적으로 태깅은 고급 프로그래밍 언어를 구현하는 데 사용되었으며,[47] 운영 체제의 적절한 지원을 통해 버퍼 오버플로를 감지하는 데에도 사용될 수 있다.[48] 예를 들어 인텔, AMD, ARM 프로세서에서 지원하는 NX 비트 하드웨어 기능이 있다.

5. 구현

스택 스매싱 보호는 1997년 StackGuard에 의해 처음 구현되었고 1998년 USENIX 보안 심포지엄에서 발표되었다.[49] StackGuard는 GNU 컴파일러 모음 2.7의 인텔 x86 백엔드를 위한 패치로서 도입되었다. StackGuard는 1998년부터 2003년까지 Immunix 리눅스 배포판을 위해 유지되었고 종결자, 랜덤 그리고 랜덤 XOR 카나리스를 구현하는 방식으로 확장되었다.

2001년부터 2005년까지, IBM은 ''ProPolice''라고 알려진 스택 스매싱 방어를 위한 GCC 패치를 개발하였다.[50] 이것은 스택 프레임에서 버퍼들을 로컬 포인터들과 함수 매개변수들의 뒤에 둠으로써 스택가드의 아이디어를 개선하였다. 이것은 임의적인 메모리 위치로 접근하는 것을 막음으로써 포인터의 오염을 피하게 도와주었다.

레드햇 엔지니어들은 ProPolice의 문제점을 인식하고 2005년 GCC 4.1에 포함되는 스택 스매싱 보호를 재구현하였다.[51][52]

StackGuard와 ProPolice는 함수 포인터를 오버플로우하는 자동 할당된 구조체에서의 오버플로우를 방어하지 못한다. ProPolice는 함수 포인터들 전에 이러한 할당된 구조체들을 얻기 위해 적어도 할당 순서를 재배치한다. 포인터 보호를 위한 독립된 메커니즘은 PointGuard[56]에서 제안되었으며 마이크로소프트 윈도우에서 사용 가능하다.[57]

이후 GCC, Microsoft Visual Studio, Clang/LLVM, 인텔 C/C++ 컴파일러 등 주요 컴파일러들은 다양한 스택 버퍼 오버플로 방어 기법을 구현하였다. 또한, OpenBSD, FreeBSD 등 일부 운영체제는 운영체제 수준에서 스택 버퍼 오버플로 방어 기능을 제공한다.

5. 1. GCC (GNU Compiler Collection)

GNU 컴파일러 모음(GCC)은 스택 스매싱 공격을 방어하기 위한 여러 가지 메커니즘을 제공한다.

  • StackGuard: 1997년에 처음 구현되어 1998년 USENIX 보안 심포지엄에서 발표되었다.[49] GCC 2.7의 인텔 x86 백엔드를 위한 패치로 도입되었으며, Immunix 리눅스 배포판에서 1998년부터 2003년까지 유지 관리되었다. 종결자, 랜덤, 랜덤 XOR 카나리 방식을 구현하여 스택 스매싱 공격을 방어한다.

  • ProPolice: 2001년부터 2005년까지 IBM에서 개발한 GCC 패치이다.[50] 스택 프레임에서 버퍼를 로컬 포인터와 함수 매개변수 뒤에 배치하여 스택 가드의 아이디어를 개선했다. 이를 통해 포인터 오염을 방지하고 임의적인 메모리 위치 접근을 막는다.

  • `-fstack-protector`: 레드햇 엔지니어들이 ProPolice의 문제점을 인식하고 2005년 GCC 4.1에 포함시킨 스택 스매싱 보호 기능이다.[51][52] 몇몇 취약한 함수들만 보호한다.[53]

  • `-fstack-protector-strong`: 2012년 구글 엔지니어들이 보안과 성능의 균형을 위해 구현한 플래그이다.[54] `-fstack-protector`보다 더 많은 종류의 취약한 함수를 보호하지만, 모든 함수를 보호하지는 않으며, `-fstack-protector-all`보다 더 나은 성능을 제공한다. GCC 4.9 버전부터 사용 가능하다.[55]


StackGuard와 ProPolice는 함수 포인터를 오버플로우하는 자동 할당 구조체에서의 오버플로우는 방어하지 못한다.

5. 2. Microsoft Visual Studio

마이크로소프트 컴파일러는 2003년부터 `/GS` 커맨드라인 스위치를 통해 버퍼 오버플로 방어 기능을 구현했으며, 2005 버전부터는 이 기능이 기본적으로 활성화되었다.[58] `/GS-`를 사용하면 방어 기능을 비활성화할 수 있다.[30]

5. 3. Clang/LLVM

Clang은 버퍼 오버플로우 탐지자 세 가지를 지원하는데, AddressSanitizer (-fsanitize=address)[59], -fsanitize=bounds[60], 그리고 SafeCode[61]가 그것이다. 이러한 시스템들은 성능 페널티, 메모리 오버헤드, 그리고 탐지된 버그들의 종류에 따라 다른 트레이드오프를 갖는다.

Clang은 GCC와 동일한 -fstack-protector 옵션을 지원하며[32], 성능 저하가 비교적 적은 보다 강력한 "안전 스택" 시스템도 지원한다.[33]

5. 4. 기타 컴파일러

IBM 컴파일러는 `-qstackprotect` 플래그를 사용하여 스택 스매싱 보호 기능을 켤 수 있다.[31]

인텔(Intel)의 C 및 C++ 컴파일러도 GCC 및 Microsoft Visual Studio에서 제공하는 옵션과 유사한 스택 스매싱 보호 기능을 지원한다.[37]

5. 5. 운영체제 수준의 보호

OpenBSD, FreeBSD, Hardened Gentoo, DragonFly BSD 등 운영체제 수준에서 스택 버퍼 오버플로 방어 기능을 제공한다.[3] 이러한 기능은 함수 호출의 스택 프레임에서 데이터 구성을 수정하여, 메모리에서 이전에 있는 버퍼가 오버플로 되었음을 알려주는 "카나리아" 값을 포함한다.[3] 이러한 기술은 성능에 미치는 영향이 미미한 것으로 알려져 있다.[3]

6. 한계점 및 추가적인 고려사항

카나리 기법은 공격의 전체 계층을 막을 수 있다는 장점을 제공한다. 몇몇 연구에 따르면[40] 이 기법의 성능에 대한 영향은 무시해도 될 정도라고 한다.

스택 스매싱 보호는 특정한 형태의 공격에 대한 방어를 할 수 없다. 예를 들면 힙에서의 버퍼 오버플로를 방어할 수 없다. 자료 구조 내에서 데이터의 배치를 바꾸는 제대로 된 방식은 없다. 자료 구조는 모듈 간에 같다는 것이 요구되며 특히 공유 라이브러리에서 그렇다. 구조 안의 어떤 데이터도 카나리들로 보호할 수 없다. 그래서 프로그래머들은 반드시 자신의 구조체를 사용해서 변수들을 어떻게 체계화할지를 신경써야 한다.[1]

7. 한국의 특수한 상황

죄송합니다. 이전 답변에서 원본 소스(`source`)가 없다고 말씀드렸지만, 이는 현재 작업에 대한 이해 부족으로 인한 것이었습니다. 주어진 지시사항에 따라 이전 결과물을 수정하는 작업을 진행해야 합니다.

그러나, 이전 결과물은 빈 텍스트("") 이기 때문에, 수정할 내용이 없습니다. 따라서, 현재로서는 아무런 출력도 할 수 없습니다. 원본 소스와 이전 결과물이 제공되면, 지시사항에 따라 수정 작업을 진행하여 위키텍스트 형식으로 출력하겠습니다.

참조

[1] 웹사이트 VT-MB. Violation of Memory Bounds https://www.secureco[...] US CERT 2007-03-27
[2] 간행물 Smashing The Stack for Fun and Profit http://www.phrack.or[...] 1996-11-08
[3] 웹사이트 Buffer Overflows: Attacks and Defenses for the Vulnerability of the Decade* https://www.cpe.ku.a[...]
[4] 웹사이트 Bounds Checking for C http://www.doc.ic.ac[...] Doc.ic.ac.uk 2014-04-27
[5] 웹사이트 SAFECode: Secure Virtual Architecture http://sva.cs.illino[...] Sva.cs.illinois.edu 2014-04-27
[6] 웹사이트 google/sanitizers https://code.google.[...] 2021-06-19
[7] 웹사이트 Fail-Safe C: Top Page http://staff.aist.go[...] Staff.aist.go.jp 2014-04-27
[8] 웹사이트 Tuesday, April 05, 2005 http://www.feustel.u[...] 2016-09-17
[9] 간행물 Tags and type checking in LISP: hardware and software approaches ACM
[10] 웹사이트 ClearPath Enterprise Servers MCP Security Overview http://public.suppor[...] Public.support.unisys.com 2014-04-27
[11] 웹사이트 Papers - 7th USENIX Security Symposium, 1998 http://www.usenix.or[...] Usenix.org 2014-04-27
[12] 웹사이트 Proceedings of the GCC Developers Summit http://www.linux.org[...] 2016-09-17
[13] 웹사이트 GCC extension for protecting applications from stack-smashing attacks http://www.research.[...] Research.ibm.com 2014-04-27
[14] 웹사이트 GCC 4.1 Release Series — Changes, New Features, and Fixes - GNU Project - Free Software Foundation (FSF) https://gcc.gnu.org/[...] Gcc.gnu.org 2014-04-27
[15] 웹사이트 Richard Henderson - [rfc] reimplementation of ibm stack-smashing protector https://gcc.gnu.org/[...] Gcc.gnu.org 2014-04-27
[16] 웹사이트 Optimize Options - Using the GNU Compiler Collection (GCC) https://gcc.gnu.org/[...] Gcc.gnu.org 2014-04-27
[17] 웹사이트 Han Shen(ææ) - [PATCH] Add a new option "-fstack-protector-strong" (patch / doc inside) https://gcc.gnu.org/[...] Gcc.gnu.org 2014-04-27
[18] 웹사이트 "Strong" stack protection for GCC https://lwn.net/Arti[...] 2014-11-28
[19] 웹사이트 Security Features https://fedoraprojec[...] FedoraProject 2014-04-27
[20] 웹사이트 "#1128 (switching from \"-fstack-protector\" to \"-fstack-protector-strong\" in Fedora 20) – FESCo" https://fedorahosted[...] Fedorahosted.org 2014-04-27
[21] 웹사이트 Security/Features - Ubuntu Wiki https://wiki.ubuntu.[...] Wiki.ubuntu.com 2014-04-27
[22] 웹사이트 FS#18864 : Consider enabling GCC's stack-smashing protection (ProPolice, SSP) for all packages https://bugs.archlin[...] Bugs.archlinux.org 2014-04-27
[23] 웹사이트 svntogit/packages.git - Git clone of the 'packages' repository https://projects.arc[...]
[24] 웹사이트 Debian Security Hardening Statistics http://outflux.net/d[...] Outflux.net 2014-04-27
[25] 웹사이트 FreeBSD 8.0-RELEASE Release Notes http://www.freebsd.o[...] Freebsd.org 2014-04-27
[26] 웹사이트 OpenBSD's gcc-local(1) manual page https://man.openbsd.[...]
[27] 웹사이트 Hardened/Toolchain - Gentoo Wiki https://wiki.gentoo.[...] 2016-07-31
[28] 웹사이트 12th USENIX Security Symposium — Technical Paper http://www.usenix.or[...]
[29] 웹사이트 MSDN Blogs – Get the latest information, insights, announcements, and news from Microsoft experts and developers in the MSDN blogs. http://blogs.msdn.co[...] 2021-08-06
[30] 웹사이트 /GS (Buffer Security Check) (C++) http://msdn.microsof[...] 2014-04-27
[31] 웹사이트 qstackprotect http://publib.boulde[...] Publib.boulder.ibm.com 2014-04-27
[32] 웹사이트 Clang mailing list https://lists.llvm.o[...] Clang.llvm.org 2022-11-16
[33] 웹사이트 SafeStack — Clang 17.0.0git documentation https://releases.llv[...]
[34] 웹사이트 Clang Compiler User's Manual — Clang 3.5 documentation http://clang.llvm.or[...] Clang.llvm.org 2014-04-27
[35] 웹사이트 SAFECode http://safecode.cs.i[...] Safecode.cs.illinois.edu 2014-04-27
[36] 웹사이트 OpenBSD's clang-local(1) manual page https://man.openbsd.[...]
[37] 웹사이트 User and Reference Guide for the Intel C++ Compiler 15.0: fstack-security-check, GS https://software.int[...] 2015-02-13
[38] 웹사이트 thesis.dvi http://staff.aist.go[...] 2016-09-17
[39] 저널 Smashing The Stack for Fun and Profit http://www.phrack.or[...] 1996-11-08
[40] 웹인용 Buffer Overflows: Attacks and Defenses for the Vulnerability of the Decade* http://tmp-www.cpe.k[...] 2014-02-22
[41] 웹인용 Bounds Checking for C http://www.doc.ic.ac[...] Doc.ic.ac.uk 2014-04-27
[42] 웹인용 SAFECode: Secure Virtual Architecture http://sva.cs.illino[...] Sva.cs.illinois.edu 2009-08-12
[43] 문서 https://code.google.[...]
[44] 웹인용 Fail-Safe C: Top Page http://staff.aist.go[...] Staff.aist.go.jp 2013-05-07
[45] 웹인용 Fail-Safe C: Top Page http://staff.aist.go[...] Staff.aist.go.jp 2013-05-07
[46] 웹인용 보관된 사본 http://www.feustel.u[...] 2020-06-23
[47] 웹인용 Tags and type checking in LISP: hardware and software approaches https://dl.acm.org/c[...] ACM
[48] 웹인용 ClearPath Enterprise Servers MCP Security Overview http://public.suppor[...] Public.support.unisys.com 2014-04-27
[49] 웹인용 Papers - 7th USENIX Security Symposium, 1998 http://www.usenix.or[...] Usenix.org 2002-04-12
[50] 웹인용 GCC extension for protecting applications from stack-smashing attacks http://www.research.[...] Research.ibm.com 2014-04-27
[51] 웹인용 GCC 4.1 Release Series — Changes, New Features, and Fixes - GNU Project - Free Software Foundation (FSF) http://gcc.gnu.org/g[...] Gcc.gnu.org 2014-04-27
[52] 웹인용 Richard Henderson - [rfc] reimplementation of ibm stack-smashing protector http://gcc.gnu.org/m[...] Gcc.gnu.org 2014-04-27
[53] 웹인용 Optimize Options - Using the GNU Compiler Collection (GCC) http://gcc.gnu.org/o[...] Gcc.gnu.org 2014-04-27
[54] 웹인용 Han Shen(ææ) - [PATCH] Add a new option "-fstack-protector-strong" (patch / doc inside) http://gcc.gnu.org/m[...] Gcc.gnu.org 2012-06-14
[55] 웹사이트 "Strong" stack protection for GCC http://lwn.net/Artic[...] 2014-02-05
[56] 문서 PointGuard: Protecting Pointers From Buffer Overflow Vulnerabilities http://www.usenix.or[...]
[57] 웹인용 Protecting against Pointer Subterfuge (Redux) http://blogs.msdn.co[...] 2016-05-21
[58] 웹인용 /GS (Buffer Security Check) (C++) http://msdn.microsof[...] 2014-04-27
[59] 문서 https://code.google.[...]
[60] 웹인용 Clang Compiler User’s Manual — Clang 3.5 documentation http://clang.llvm.or[...] Clang.llvm.org 2014-04-27
[61] 웹인용 SAFECode http://safecode.cs.i[...] Safecode.cs.illinois.edu 2014-04-27



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com