맨위로가기

Return-to-libc 공격

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

1. 개요

Return-to-libc 공격은 스택에서 실행 코드를 실행하는 대신, 이미 존재하는 시스템 라이브러리 코드를 활용하는 공격 기법이다. NX 비트와 같은 스택 실행 방어 기술은 무력화되지만, 스택 스매싱 보호는 스택 손상을 감지하여 공격을 막을 수 있다. ASCII 아머링은 시스템 라이브러리 주소에 널 바이트를 추가하여 공격을 어렵게 만들지만, return-to-plt 공격과 같은 우회 방법이 존재한다. 주소 공간 배치 난수화(ASLR)는 함수 메모리 위치를 무작위로 배치하여 공격 성공 가능성을 낮추며, 특히 64비트 시스템에서 효과적이지만 32비트 시스템에서는 무차별 대입 공격에 취약하다.

더 읽어볼만한 페이지

  • C 표준 라이브러리 - 파일 끝
    파일 끝(EOF)은 데이터 소스에서 더 이상 읽을 데이터가 없음을 나타내는 조건이다.
  • C 표준 라이브러리 - C 자료형
    C 자료형은 C 언어에서 데이터 형태를 정의하는 기본 요소로, 다양한 크기와 속성을 가진 산술, 부울 자료형과 구조체, 공용체 등을 제공하며, 컴파일러 및 시스템 아키텍처에 따라 크기와 동작 방식이 달라질 수 있다.
  • 취약점 공격 - 보안 취약점
    보안 취약점은 시스템의 설계, 구현, 운영, 관리상 결함이나 약점으로, 위협에 의해 악용되어 시스템 보안 정책을 위반할 수 있는 요소이며, ISO 27005, IETF RFC 4949, NIST SP 800-30, ENISA 등 다양한 기관에서 정의하고 있다.
  • 취약점 공격 - 인터넷 보안
    인터넷 보안은 사이버 위협, 악성 소프트웨어, 서비스 거부 공격 등으로부터 정보와 시스템을 보호하기 위해 네트워크 계층 보안, 다단계 인증, 방화벽 등 다양한 기술과 방법을 포괄한다.
Return-to-libc 공격
공격 개요
유형컴퓨터 보안 공격
목표보안 시스템 우회
권한 상승
임의 코드 실행
공격 방법스택 기반 버퍼 오버플로우
함수 호출 주소 덮어쓰기
libc 함수 재사용
필요 조건실행 가능한 스택 부재 (NX 비트)
주소 공간 배치 난수화 (ASLR) 우회 또는 주소 누출
대응 방법주소 공간 배치 난수화 (ASLR) 활성화
데이터 실행 방지 (DEP) 활성화
컴파일러 및 운영체제 보안 강화
기술적 상세
작동 원리공격자가 스택 상에 libc 함수 주소와 인수를 배치
RET 명령어를 통해 해당 함수를 호출
ASLR을 우회하기 위해 정보 누출 기법 사용
공격 단계스택 버퍼 오버플로우 발생
RET 주소를 libc 함수의 주소로 덮어쓰기
원하는 libc 함수를 실행하기 위한 인수를 스택에 배치
RET 명령어 실행 시, 덮어쓰여진 libc 함수 주소로 실행 흐름 변경
역사 및 배경
최초 발견1997년 Solar Designer에 의해 처음 설명됨
등장 배경NX 비트(Non-eXecute bit)의 도입으로 쉘코드 직접 실행 방지
스택에서의 코드 실행을 막는 보안 기술의 발전
보안 대책
주소 공간 배치 난수화 (ASLR)메모리 주소를 예측하기 어렵게 만듦
데이터 실행 방지 (DEP)데이터 영역에서의 코드 실행을 방지
안전한 코딩 기법버퍼 오버플로우와 같은 취약점을 예방
관련 용어
버퍼 오버플로우지정된 버퍼 크기를 초과하는 데이터 쓰기
쉘코드공격자가 시스템에서 실행하려는 악성 코드
주소 공간 배치 난수화 (ASLR)메모리 주소를 무작위로 배치하여 공격을 어렵게 함
데이터 실행 방지 (DEP)데이터 영역에서 코드 실행을 방지하는 보안 기술
libcC 표준 라이브러리
RET (Return)함수 호출 후 복귀 주소로 돌아가는 명령어

2. return-to-libc 공격 방어

return-to-libc 공격은 기존의 실행 가능한 코드를 이용하기 때문에, 실행 불가능한 스택과 같은 전통적인 방어 기법으로는 막기 어렵다. 이 공격을 막거나 방해할 수 있는 몇 가지 방법은 다음과 같다.


  • '''스택 스매싱 보호 (Stack Smashing Protection)''': 스택의 오염을 탐지하여 공격을 막거나 방해한다.
  • '''ASCII 아머링 (ASCII Armoring)''': 시스템 라이브러리 주소에 NULL 바이트(0x00)를 포함시켜 공격을 어렵게 만든다. 하지만, 이를 우회하는 공격 방법(return-to-plt)이 존재한다.
  • '''주소 공간 배치 난수화 (ASLR)''': 함수의 메모리 위치를 무작위로 배치하여 공격 성공 확률을 낮춘다. 특히 64비트 시스템에서 효과적이지만, 32비트 시스템에서는 무차별 대입 공격으로 비교적 쉽게 무력화될 수 있다.[7]

2. 1. 스택 스매싱 보호 (Stack Smashing Protection)

실행 불가능한 스택은 몇몇 버퍼 오버플로 익스플로잇을 방지할 수 있지만, return-to-libc 공격에서는 단지 존재하는 실행 가능 코드가 사용되기 때문에 return-to-libc을 막을 수는 없다. 스택 스매싱 보호는 스택의 오염을 탐지할 수 있으므로 이 취약점 공격을 막거나 방해할 수 있다.[5]

스택 스매싱 보호는 스택의 변조를 감지하여 return-to-libc 공격을 포함한 다양한 버퍼 오버플로우 공격을 방지하거나 완화한다. 이 기술은 스택에 특정한 '카나리(canary)' 값을 삽입하고, 함수 반환 전에 이 값이 변경되었는지 확인하는 방식으로 작동한다.

2. 2. ASCII 아머링 (ASCII Armoring)

ASCII 아머링은 시스템 라이브러리 주소에 NULL 바이트(0x00)를 포함시켜 `strcpy()`와 같은 문자열 조작 함수를 이용한 공격을 어렵게 만드는 기법이다. 모든 시스템 라이브러리 주소를 메모리의 특정 영역(0x01010100까지, 약 16MB)에 배치하여 NULL 바이트를 포함하도록 한다.[5] 이렇게 하면 문자열 조작 함수를 사용하여 해당 주소를 포함하는 코드를 삽입하는 것이 불가능해진다.

하지만 공격자가 스택에 NULL 바이트를 오버플로우 할 수 있거나, 프로그램이 16MB보다 크면 이 방어는 효과가 없을 수 있다.[5]

'''return-to-plt''' 공격은 ASCII 아머링을 우회하는 방법 중 하나이다. 이 공격은 libc 함수 대신 프로시저 연결 테이블(PLT)에 있는 함수를 호출한다. (예: `system@plt`, `execve@plt`)[6]

2. 3. 주소 공간 배치 난수화 (ASLR)

주소 공간 배치 난수화(ASLR)는 함수의 메모리 위치를 무작위로 배치하여 64비트 시스템에서는 공격 성공 확률을 크게 낮춘다. 그러나 32비트 시스템에서는 난수화에 사용할 수 있는 비트가 16개뿐이어서 무차별 대입 공격에 취약하여 몇 분 안에 무력화될 수 있다.[4]

참조

[1] 웹사이트 Bugtraq: Getting around non-executable stack (and fix) http://seclists.org/[...] 1997-08-10
[2] 웹사이트 Secure programmer: Countering buffer overflows http://www.ibm.com/d[...] IBM DeveloperWorks 2004-01-27
[3] 웹사이트 Linux exploit development part 4 - ASCII armor bypass + return-to-plt https://www.exploit-[...] 2011-05-13
[4] 서적 Proceedings of the 11th ACM Conference on Computer and Communications Security http://www.stanford.[...] 2004-10
[5] 웹인용 Secure programmer: Countering buffer overflows http://www.ibm.com/d[...] IBM DeveloperWorks 2004-01-27
[6] 웹인용 Linux exploit development part 4 - ASCII armor bypass + return-to-plt http://www.exploit-d[...] 2011-05-13
[7] 서적 Proceedings of the 11th ACM conference on Computer and communications security - CCS '04 http://www.stanford.[...] 2004-10



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

문의하기 : help@durumis.com