맨위로가기

스택 버퍼 오버플로

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

1. 개요

스택 버퍼 오버플로는 프로그램이 스택에 할당된 버퍼의 경계를 넘어 데이터를 기록하여 발생하는 보안 취약점이다. 공격자는 이 취약점을 악용하여 함수의 반환 주소를 덮어쓰고, 악성 코드를 실행하거나 프로그램의 제어 흐름을 변경할 수 있다. 공격 기법으로는 셸코드 삽입, 내부 변수 값 수정 등이 있으며, 플랫폼에 따라 콜 스택 구현 방식의 차이로 공격 방식에 영향을 받는다. 이러한 공격을 방어하기 위해 스택 카나리스, 실행 불가능 스택, 주소 공간 배치 무작위화(ASLR) 등의 기술이 사용되지만, 공격자들은 이러한 방어 체계를 우회하는 방법을 끊임없이 개발하고 있다. 모리스 웜, SQL 슬래머 웜, 블래스터 웜, 위티 웜 등은 스택 버퍼 오버플로 취약점을 악용한 주요 사례이며, 닌텐도 Wii 해킹에서도 이 취약점이 활용되었다.

더 읽어볼만한 페이지

  • 컴퓨터 오류 - 블루스크린
    블루스크린은 윈도우 운영체제에서 발생하는 치명적인 오류로, 컴퓨터 작동을 멈추고 파란색 화면에 오류 메시지를 표시하며, 하드웨어 또는 소프트웨어 문제로 인해 발생하고, 시스템 복원, 안전 모드 부팅 등의 방법으로 대처한다.
  • 컴퓨터 오류 - 글리치
    글리치는 예기치 않은 오작동이나 오류를 뜻하며, 전자 공학, 컴퓨터, 비디오 게임, 텔레비전 방송, 대중문화 등 다양한 분야에서 기능 실패, 오류, 그래픽 및 사운드 문제, 신호 오류 등의 이상 현상을 포괄적으로 지칭하는 용어이다.
  • 소프트웨어 버그 - 교착 상태
    교착 상태는 둘 이상의 프로세스가 자원을 점유하고 서로의 자원을 요청하여 더 이상 진행할 수 없는 상태를 의미하며, 상호 배제, 점유 대기, 비선점, 순환 대기 네 가지 조건이 모두 충족되어야 발생하고, 운영 체제는 이를 예방, 회피, 무시, 발견하는 방법으로 관리한다.
  • 소프트웨어 버그 - 글리치
    글리치는 예기치 않은 오작동이나 오류를 뜻하며, 전자 공학, 컴퓨터, 비디오 게임, 텔레비전 방송, 대중문화 등 다양한 분야에서 기능 실패, 오류, 그래픽 및 사운드 문제, 신호 오류 등의 이상 현상을 포괄적으로 지칭하는 용어이다.
  • 취약점 공격 - 보안 취약점
    보안 취약점은 시스템의 설계, 구현, 운영, 관리상 결함이나 약점으로, 위협에 의해 악용되어 시스템 보안 정책을 위반할 수 있는 요소이며, ISO 27005, IETF RFC 4949, NIST SP 800-30, ENISA 등 다양한 기관에서 정의하고 있다.
  • 취약점 공격 - 인터넷 보안
    인터넷 보안은 사이버 위협, 악성 소프트웨어, 서비스 거부 공격 등으로부터 정보와 시스템을 보호하기 위해 네트워크 계층 보안, 다단계 인증, 방화벽 등 다양한 기술과 방법을 포괄한다.
스택 버퍼 오버플로
소프트웨어 취약점
스택 버퍼 오버플로
스택 버퍼 오버플로
일반 정보
종류소프트웨어 버그
클래스버퍼 오버플로
발견 시기1972년
세부 정보
악용 가능성
공격 벡터로컬 또는 원격
심각도높음
일반적인 취약점 열거CVE-2007-5611
CVE-2007-6243
CVE-2008-1093
CVE-2008-1447
CVE-2008-2938
CVE-2008-4314
CVE-2009-0029
CVE-2009-0658
CVE-2009-0692
CVE-2009-0927
설명
영향정보 유출
임의 코드 실행
발생 원인C 및 C++와 같은 언어의 안전하지 않은 함수 사용
입력 유효성 검사 부족
경계 검사 부족
예방 방법안전한 코딩 관행
컴파일러 및 운영 체제 수준에서의 완화 기술
입력 유효성 검사
경계 검사

2. 스택 버퍼 오버플로 취약점 공격

스택 버퍼 오버플로 취약점을 공격하는 대표적인 방법은 함수의 반환 주소를 공격자가 제어하는 데이터 (주로 셸코드)의 주소로 덮어쓰는 것이다.[24][27] 공격자는 이를 통해 함수가 반환될 때 자신이 원하는 코드를 실행시킬 수 있다.

공격자는 반환 주소뿐만 아니라, 스택 버퍼 오버플로를 이용해 내부 변수 값도 수정할 수 있다. 이로써 프로그램 동작을 의도와 다르게 바꿀 수 있다. 만약 프로그램이 특별한 권한 (예: SUID 비트 설정)을 가졌다면, 공격자는 이 취약점으로 슈퍼유저 권한을 얻을 수도 있다.[24]

2. 1. 예시

다음은 스택 버퍼 오버플로 취약점 공격의 예시이다.

C 언어의 `strcpy()` 함수를 사용한 예시를 통해 스택 버퍼 오버플로가 어떻게 발생하는지 살펴본다. `strcpy()` 함수는 복사할 문자열의 길이를 검사하지 않아 문제가 발생할 수 있다.



#include

void foo (char *bar)

{

char c[12];

strcpy(c, bar); // 경계 검사 없음

}

int main (int argc, char **argv)

{

foo(argv[1]);

}



위 코드는 명령 줄 인자를 받아 `c`라는 스택 변수에 복사한다. 이때 `strcpy()` 함수는 복사할 문자열의 길이를 검사하지 않기 때문에, 만약 명령 줄 인자가 12바이트보다 크다면 버퍼 오버플로가 발생한다.[24][27]

아래 그림들은 `foo()` 함수 호출 시 메모리 상태를 나타낸다.

A. - 데이터가 복사되기 전.


B. - "hello"는 첫 번째 명령 줄 인자이다.


C. - "AAAAAAAAAAAAAAAAAAAA\x08\x35\xC0\x80"이 첫 번째 명령 줄 인자이다.

  • 그림 A는 데이터 복사 전의 메모리 상태를 보여준다.
  • 그림 B는 "hello"라는 5바이트 문자열이 복사된 후의 상태를 보여준다.
  • 그림 C는 12바이트를 초과하는 "A" 문자열과 특정 주소 값(\x08\x35\xC0\x80)이 복사되면서 스택의 반환 주소를 덮어쓴(overwrite) 상황을 보여준다.


그림 C와 같이, 11바이트보다 큰 인자가 입력되면 `foo()` 함수는 저장된 프레임 포인터와 반환 주소를 포함한 로컬 스택 데이터를 덮어쓰게 된다. `foo()` 함수가 반환될 때, 덮어씌워진 반환 주소로 점프하여 공격자가 지정한 코드를 실행하게 된다. 실제 공격에서는 "A" 대신 셸코드가 사용되며, 프로그램에 특별한 권한(예: SUID 비트 설정)이 있다면 공격자는 슈퍼유저 권한을 획득할 수 있다.[24]

2. 1. 1. 내부 변수 값 수정

c

#include

#include

void foo (char *bar)

{

float My_Float = 10.5; // Addr = 0x0023FF4C

char c[28]; // Addr = 0x0023FF30

// 10.500000을 출력한다.

printf("My Float value = %f\n", My_Float);

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Memory map:

@ : c 할당된 메모리

# : My_Float 할당된 메모리

  • c *My_Float

0x0023FF30 0x0023FF4C

| |

@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####

foo("my string is too long !!!!! XXXXX");

memcpy는 0x1010C042(little endian)를 My_Float 값에 넣는다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

memcpy(c, bar, strlen(bar)); // 경계 검사 없음...

// 96.031372을 출력한다.

printf("My Float value = %f\n", My_Float);

}

int main (int argc, char **argv)

{

foo("my string is too long !!!!! \x10\x10\xc0\x42");

return 0;

}

```

공격자는 위와 같은 예시 코드에서 보이는 것처럼, 스택 버퍼 오버플로를 이용하여 단순히 함수의 반환 주소뿐만 아니라 내부 변수의 값을 수정할 수도 있다.[24] 위의 예시에서 `My_Float` 변수의 값은 원래 10.5였지만, `memcpy` 함수 호출 시 경계 검사를 하지 않아 버퍼 오버플로가 발생하여 `My_Float` 변수의 값이 96.031372로 변경되었다. 이처럼 공격자는 버퍼 오버플로를 통해 프로그램의 특정 변수 값을 변경하여 프로그램의 동작을 의도한 것과 다르게 조작할 수 있다.

3. 플랫폼 관련 차이점

여러 플랫폼은 콜 스택 구현 방식에 미묘한 차이를 보여, 스택 버퍼 오버플로 공격의 작동 방식에 영향을 줄 수 있다. 일부 컴퓨터 구조는 콜 스택의 최상위 반환 주소를 레지스터에 저장하는데, 이는 덮어쓰여진 반환 주소가 나중에 콜 스택을 언와인딩할 때까지 사용되지 않음을 의미한다.[28] 공격 기법 선택에 영향을 줄 수 있는 또 다른 사항은 대부분의 RISC 스타일 컴퓨터 구조가 메모리에 정렬되지 않은 접근을 허용하지 않는다는 것이다.[8] 이는 기계 OP 코드의 고정 길이와 결합되어, 스택으로 점프하는 기법을 구현하는 것을 거의 불가능하게 만들 수 있다.[9][10]

3. 1. 자라는 스택

스택이 반대 방향으로 자라는 구조는 스택 버퍼 오버플로 문제에 대한 해결책으로 종종 제안되지만, 실제로는 완전한 해결책이 아니다. 같은 스택 프레임 내에서 발생하는 오버플로는 반환 포인터를 덮어쓸 수 없지만, 이전 스택 프레임에서 발생하는 오버플로는 여전히 반환 포인터를 덮어쓸 수 있기 때문이다.[31]

예를 들어, 앞선 예시에서 `foo` 함수의 반환 주소는 `strcpy` 함수 내에서 오버플로가 발생하기 때문에 덮어쓰이지 않는다. 그러나 `strcpy` 호출 중에 오버플로되는 버퍼가 이전 스택 프레임에 위치하기 때문에, `strcpy` 함수의 반환 포인터는 버퍼보다 높은 메모리 주소를 가지게 된다. 따라서 `foo` 함수의 반환 포인터 대신 `strcpy` 함수의 반환 포인터가 덮어쓰이게 된다.[11]

결론적으로, 스택이 반대 방향으로 자라는 구조는 스택 버퍼 오버플로가 악용되는 방식을 일부 변경할 뿐, 악용 가능한 버그의 수를 줄이지는 못한다.

4. 방어 방식

악의적인 스택 버퍼 오버플로를 막기 위해 여러 방어 기법들이 개발되어 왔다. 이러한 기법들은 크게 세 가지로 분류할 수 있다.


  • 스택 버퍼 오버플로 발생을 탐지하고, 악의적인 코드로 명령어 포인터가 리디렉션되는 것을 방지한다.
  • 스택 버퍼 오버플로를 직접 탐지하지 않고, 스택에서 악의적인 코드가 실행되는 것을 막는다.
  • 실행 가능한 코드를 찾는 것을 어렵게 만들기 위해 메모리 공간을 무작위화한다.


이러한 방어 기법에는 스택 카나리스, 실행 불가능 스택, 주소 공간 배치 무작위화(ASLR) 등이 있다.

4. 1. 스택 카나리스 (Stack Canaries)

스택 카나리는 탄광 속의 카나리아에 비유되어 악성 코드 실행 전에 스택 버퍼 오버플로를 탐지하는 데 사용된다. 이 방법은 프로그램 시작 시 선택된 랜덤한 작은 정수를 스택 반환 포인터 앞에 놓는 것이다. 대부분의 버퍼 오버플로는 낮은 메모리 주소에서 높은 메모리 주소로 덮어쓰므로, 반환 포인터를 덮어쓰려면 카나리아 값도 반드시 덮어써야 한다. 이 값은 루틴이 스택의 반환 주소를 사용하기 전에 변경되었는지 검사된다.[23] 이 기법은 공격자가 스택의 다른 중요한 변수를 오염시키는 것과 같은 비전통적인 방식으로 명령어 포인터의 제어를 얻게 하기 때문에 스택 버퍼 오버플로를 익스플로잇하는 난이도를 증가시킨다.[23]

4. 2. 실행 불가능 스택 (Non-executable Stack)

스택 버퍼 오버플로 익스플로잇을 방지하는 다른 접근법으로 스택 메모리 영역에 대한 정책을 강제하는 것이 있는데, 이는 스택에서의 실행을 불허하는 방식(W^X, "쓰기 XOR 실행")이다.[32] 대부분의 데스크탑 프로세서들이 하드웨어에서 실행 불가능 플래그를 지원하기 때문에 이 방식은 현재 더 유명해졌다.

이 방식이 스택 버퍼 오버플로 취약점 공격을 실패하게 하는 좋은 접근법이지만, 여전히 문제는 존재한다. 셸코드를 힙 같은 보호되지 않은 메모리에 저장하는 방식을 찾기가 쉽다.[32]

이 방법이 아니더라도 다른 방식들도 존재한다. 가장 최악은 셸코드 생성을 위한 return-to-libc 공격 방식이다. 이 공격에서 악의적인 페이로드는 셸코드 없이, 하지만 적절한 콜 스택과 함께 스택을 로드해서 실행은 표준 라이브러리 호출들의 체인에 위치하게 된다.[33] 이것은 실행이 실제로는 스택 자체에 위치하지 않기 때문에 동작한다.

return-to-libc의 변형으로 반환 지향형 프로그래밍(ROP)이 있는데, 이것은 반환 주소 시리즈들을 설치하는 방식이다. 여기서 각 주소는 현재의 프로그램 코드나 시스템 라이브러리 내에서 기계어 명령어들의 작은 시퀀스(return으로 끝나는)들을 실행한다.[33] 반환 전에 각각 몇몇 간단한 레지스터 조작이나 비슷한 실행을 수행하고 같이 잇는 이러한 일명 가젯들은 공격자의 종료를 달성한다. 이것은 반환 명령어와 비슷하게 행동하는 명령어들을 익스플로잇 함으로써 심지어 "반환 없는" ROP를 사용할 수도 있다.[33]

4. 3. 주소 공간 배치 무작위화 (ASLR)

코드와 데이터를 분리하는 대신, 실행 중인 프로그램의 메모리 공간에 무작위성을 도입하는 또 다른 완화 기술이 있다. 공격자는 사용할 수 있는 실행 가능한 코드가 어디에 있는지 파악해야 하므로, 실행 가능한 페이로드가 제공되거나(실행 가능한 스택 포함) ret2libc 또는 ROP와 같은 코드 재사용을 사용하여 구성된다. 메모리 레이아웃을 무작위로 지정하면 개념적으로 공격자가 코드가 어디에 있는지 알 수 없게 된다. 그러나 실제 구현에서는 모든 것을 무작위로 지정하지는 않으며, 일반적으로 실행 파일 자체는 고정된 주소에 로드되므로 ASLR(주소 공간 배치 무작위화)이 실행 불가능한 스택과 결합된 경우에도 공격자는 이 고정된 메모리 영역을 사용할 수 있다. 따라서 모든 프로그램은 이 메모리 영역까지 무작위로 지정될 수 있도록 PIE(위치 독립 실행 파일)로 컴파일해야 한다. 무작위성의 엔트로피는 구현에 따라 다르며, 엔트로피가 너무 낮으면 무작위로 지정된 메모리 공간을 무차별 대입하는 데 문제가 발생할 수 있다.

5. 방어 체계 우회

이전의 완화 기법들은 익스플로잇 단계를 더 어렵게 만들지만, 몇몇 취약점이 존재하거나 특정 조건이 충족되면 스택 버퍼 오버플로를 여전히 악용할 수 있다.[15]

5. 1. 실행 불가능 스택 우회

실행 불가능 스택 환경에서도 다른 방식을 통해 스택 버퍼 오버플로 취약점을 공격할 수 있다. 예를 들어 셸코드를 힙과 같이 보호되지 않는 메모리에 저장하는 방법을 사용할 수 있다.[32]

또한 return-to-libc 공격처럼 셸코드를 생성하지 않는 방식을 사용할 수도 있다. 이 공격에서는 악성 페이로드가 스택을 셸코드 대신 적절한 호출 스택으로 채워서, 실행 흐름이 표준 라이브러리 호출 체인으로 이어지도록 한다.[33] 반환 지향형 프로그래밍(ROP)은 return-to-libc의 변형이다.[33]

5. 1. 1. 코드 재사용 공격 (Code-Reuse Attacks)

스택 버퍼 오버플로 익스플로잇을 방지하는 방법 중 하나는 스택 메모리 영역에 대해 쓰기와 실행을 동시에 허용하지 않는 정책(W^X, "Write XOR Execute")을 강제하는 것이다. 대부분의 데스크톱 프로세서가 하드웨어에서 실행 불가능 플래그를 지원하기 때문에 이 방식이 널리 사용된다.[32]

하지만 이 방법에도 문제는 있다. 셸코드를 힙과 같이 보호되지 않는 메모리에 저장하는 방법을 쉽게 찾을 수 있기 때문이다.[32]

return-to-libc 공격은 셸코드를 사용하지 않고 표준 라이브러리 호출을 연결하여 실행 흐름을 제어하는 방식이다. 이 공격은 실행이 스택 자체에서 이루어지지 않기 때문에 실행 불가능 스택 방어를 우회할 수 있다.[33]

반환 지향형 프로그래밍(ROP)은 return-to-libc의 변형으로, 프로그램 코드나 시스템 라이브러리 내에 존재하는 짧은 명령어 시퀀스(가젯)들을 연결하여 공격자가 원하는 동작을 수행하게 한다. 각 가젯은 return으로 끝나며, 레지스터 조작 등을 수행한다. "반환 없는" ROP는 반환 명령어와 유사하게 동작하는 다른 명령어들을 이용한다.[33]

5. 2. 주소 공간 배치 무작위화 (ASLR) 우회

64비트 시스템에서 ASLR 구현은 메모리 공개 및 정보 유출 공격에 취약하다는 한계가 있다. 공격자는 정보 유출 공격을 사용하여 단일 함수 주소를 노출시켜 ROP 공격을 시작할 수 있다.[19]

6. 주요 사례

스택 버퍼 오버플로는 대한민국뿐만 아니라 전 세계적으로 다양한 시스템에 영향을 미쳤다. 주요 사례는 다음과 같다.


  • 1988년 모리스 웜유닉스 finger 프로토콜 서버의 스택 버퍼 오버플로를 악용하여 부분적으로 확산되었다.
  • 2003년 슬래머 웜마이크로소프트 SQL 서버의 스택 버퍼 오버플로를 악용하여 확산되었다.[19]
  • 2003년 블래스터 웜은 마이크로소프트 DCOM 서비스의 스택 버퍼 오버플로를 악용하여 확산되었다.
  • 2004년 위티 웜은 인터넷 보안 시스템 BlackICE 데스크톱 에이전트의 스택 버퍼 오버플로를 악용하여 확산되었다.[20]
  • Wii에서는 시스템 수정 없이 임의의 코드를 실행할 수 있는 몇 가지 방법이 있다. ''젤다의 전설: 황혼의 공주''에서는 "트와일라잇 해킹"을 이용하고,[20] ''대난투 스매시 브라더스 X''에서는 "스매시 스택"을 이용한다.[21]

6. 1. 모리스 웜 (1988)

1988년 모리스 웜유닉스 finger 프로토콜 서버의 스택 버퍼 오버플로를 악용하여 부분적으로 확산되었다.

6. 2. SQL 슬래머 웜 (2003)

2003년 슬래머 웜마이크로소프트 SQL 서버의 스택 버퍼 오버플로를 악용하여 확산되었다.[19]

6. 3. 블래스터 웜 (2003)

2003년에 블래스터 웜은 마이크로소프트 DCOM 서비스의 스택 버퍼 오버플로를 악용하여 확산되었다.

6. 4. 위티 웜 (2004)

위티 웜은 2004년에 인터넷 보안 시스템 BlackICE 데스크톱 에이전트의 스택 버퍼 오버플로를 악용하여 확산되었다.[20]

6. 5. 닌텐도 Wii 해킹 (2008~)

Wii에서는 시스템이 수정되지 않아도 임의의 코드를 실행할 수 있는 몇 가지 방법이 있다. ''젤다의 전설: 황혼의 공주''에서는 주인공의 말에게 긴 이름을 부여하는 "트와일라잇 해킹"을 이용하고,[20] ''대난투 스매시 브라더스 X''에서는 SD 카드를 사용하여 특별히 준비된 파일을 게임 내 레벨 편집기에 로드하는 "스매시 스택"을 이용한다.[21] 이 두 가지 방법 모두 임의의 코드를 실행하는 데 사용할 수 있지만, "스매시 스택"은 주로 수정된 상태로 ''브롤'' 자체를 다시 로드하는 데 사용된다.[21]

참조

[1] 웹사이트 VT-MB. Violation of Memory Bounds https://www.secureco[...] US CERT 2007-03-27
[2] 서적 The Art Of Software Security Assessment Addison Wesley 2006-11
[3] 저널 Smashing The Stack for Fun and Profit http://www.phrack.or[...] 1996-11-08
[4] 저널 Beyond Stack Smashing: Recent Advances in Exploiting Buffer Overruns http://www.cs.berkel[...] 2004-07
[5] 웹사이트 Stack Overflows http://www.securityf[...]
[6] 간행물 OpenBSD: Fix the Bugs, Secure the System http://www.openbsd.o[...]
[7] 저널 Detection and prevention of stack buffer overflow attacks https://dl.acm.org/d[...] 2005-11
[8] 웹사이트 Exploiting SPARC Buffer Overflow vulnerabilities http://www.ouah.org/[...]
[9] 저널 Reverse engineering - PowerPC Cracking on Mac OS X with GDB http://www.phrack.or[...] 2005-01-08
[10] 리포트 Where's the FEEB? The Effectiveness of Instruction Set Randomization http://www.cs.virgin[...]
[11] 저널 HP-UX (PA-RISC 1.1) Overflows http://www.phrack.or[...] 2001-12-28
[12] 서적 Buffer Overflow Attacks: Detect, Exploit, Prevent http://apossum.alfas[...] Syngress Publishing, Inc.
[13] 저널 The advanced return-into-lib(c) exploits: PaX case study http://www.phrack.or[...] 2001-12-28
[14] 서적 Proceedings of the 17th ACM conference on Computer and communications security - CCS '10 2010-10
[15] 웹사이트 Memory Errors, program security https://pwn.college/[...] 2024-09-07
[16] 저널 An In-Depth Survey of Bypassing Buffer Overflow Mitigation Techniques 2022-01
[17] 저널 An In-Depth Survey of Bypassing Buffer Overflow Mitigation Techniques 2022-01
[18] 서적 Sécurité matérielle des systèmes https://www.dunod.co[...] 2022-09-03
[19] 저널 An In-Depth Survey of Bypassing Buffer Overflow Mitigation Techniques 2022-01
[20] 웹사이트 Twilight Hack - WiiBrew http://wiibrew.org/w[...] 2018-01-18
[21] 웹사이트 Smash Stack - WiiBrew http://wiibrew.org/w[...] 2018-01-18
[22] 웹인용 VT-MB. Violation of Memory Bounds https://www.secureco[...] US CERT 2007-03-27
[23] 서적 The Art Of Software Security Assessment Addison Wesley 2006-11
[24] 저널 Smashing The Stack for Fun and Profit http://www.phrack.or[...] 1996-11-08
[25] 저널 Beyond Stack Smashing: Recent Advances in Exploiting Buffer Overruns http://www.cs.berkel[...] 2004-07
[26] 웹인용 Stack Overflows http://www.securityf[...] 2007-08-14
[27] 간행물 OpenBSD: Fix the Bugs, Secure the System http://www.openbsd.o[...] 2016-03-07
[28] 저널 Exploiting SPARC Buffer Overflow vulnerabilities http://www.utdallas.[...] 2016-03-07
[29] 저널 Reverse engineering - PowerPC Cracking on Mac OS X with GDB http://www.phrack.or[...] 2005-01-08
[30] 저널 Where’s the FEEB? The Effectiveness of Instruction Set Randomization http://www.cs.virgin[...]
[31] 저널 HP-UX (PA-RISC 1.1) Overflows http://www.phrack.or[...] 2001-12-28
[32] 서적 Buffer Overflow Attacks: Detect, Exploit, Prevent http://apossum.alfas[...] Syngress Publishing, Inc.
[33] 저널 The advanced return-into-lib(c) exploits: PaX case study http://www.phrack.or[...] 2001-12-28



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

문의하기 : help@durumis.com