반환 지향형 프로그래밍
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
반환 지향형 프로그래밍(ROP)은 스택 버퍼 오버플로 공격의 발전된 형태로, 공격자가 프로그램의 버그를 악용하여 콜 스택을 조작한다. 데이터 실행 방지(DEP)와 같은 보안 기술이 등장하면서, 공격자들은 악성 코드를 직접 실행하는 대신, 이미 실행 가능한 메모리에 존재하는 명령어 시퀀스인 "가젯"을 반환 주소 조작을 통해 사용한다. ROP 공격은 튜링 완전성을 제공하며, 공유 라이브러리에서 잠재적으로 위험한 함수를 제거하는 것과 같은 기존 방어 기술들을 우회할 수 있다. ROP 공격을 방어하기 위해 주소 공간 배치 난수화(ASLR), G-Free, 바이너리 코드 난수화, 포인터 인증 코드(PAC), 분기 대상 식별(BTI) 등 다양한 기법들이 제안되었다.
더 읽어볼만한 페이지
반환 지향형 프로그래밍 | |
---|---|
반환 지향 프로그래밍 (Return-Oriented Programming) | |
유형 | 악용 기술 |
목표 | 코드 재사용 코드 주입 공격 방지 우회 |
기술적 특징 | 기존 코드 조각(가젯)을 연결하여 임의의 코드 실행 |
방어 기법 | 주소 공간 배치 무작위화(ASLR) 데이터 실행 방지(DEP) |
관련 공격 | 리턴 투 립씨 공격(Return-to-libc attack) 점프 지향 프로그래밍(Jump-Oriented Programming) |
상세 정보 | |
가젯 (Gadget) | 기존 코드 내의 짧은 명령어 시퀀스 일반적으로 'ret' 명령어로 끝남 |
작동 방식 | 스택 오버플로를 통해 반환 주소 조작 가젯 주소를 스택에 배치하여 실행 흐름 제어 |
장점 | 코드 서명 및 데이터 실행 방지(DEP) 우회 가능 코드 주입 공격이 차단된 환경에서 효과적 |
단점 | 공격 코드 작성이 복잡함 실행 흐름 제어에 제약이 있을 수 있음 |
역사 | |
등장 배경 | 코드 주입 공격 방어 기술의 발전 |
초기 연구 | 2007년 Shacham에 의해 처음 소개 |
발전 | 점프 지향 프로그래밍(JOP) 등 다양한 변종 등장 자동화된 가젯 검색 도구 개발 |
활용 사례 | |
보안 취약점 공격 | Check Point Secure Platform 해킹 다양한 소프트웨어 및 시스템 공격 |
악성 코드 분석 | 악성 코드의 동작 방식 분석 및 방어 기술 개발 |
참고 자료 | |
관련 논문 | Shacham, Hovav (2007). "The Geometry of Innocent Flesh: A Framework for Exploit Generation". CCS '07 Buchanan, E.; Roemer, R.; Shacham, H.; Savage, S. (October 2008). "When Good Instructions Go Bad: Generalizing Return-Oriented Programming to RISC". CCS '08 |
관련 발표 자료 | Shacham, Hovav. Return-Oriented Programming: Exploits Without Code Injection |
2. 배경
반환 지향형 프로그래밍(ROP)은 스택 스매싱 공격의 발전된 형태이다.[54] 일반적으로 이러한 유형의 공격은 공격자가 프로그램의 버그, 특히 버퍼 오버런을 악용하여 콜 스택을 조작할 때 발생한다. 버퍼 오버런에서 사용자가 제공한 데이터를 메모리에 저장하기 전에 적절한 범위 검사를 수행하지 않는 함수는 저장할 수 있는 것보다 더 많은 입력 데이터를 허용한다. 데이터가 스택에 기록되는 경우 초과된 데이터는 함수의 변수에 할당된 공간을 오버플로하여 반환 주소를 덮어쓸 수 있다. 이 주소는 나중에 함수에서 제어 흐름을 호출자로 다시 리디렉션하는 데 사용된다. 덮어쓰여진 경우 제어 흐름은 새 반환 주소에서 지정한 위치로 전환된다.DrawSquare
라는 서브루틴이 DrawLine
을 호출하고 있다. 스택은 위쪽으로 증가한다는 점에 유의한다.
표준 버퍼 오버런 공격에서 공격자는 단순히 공격 코드를 ( "페이로드" ) 스택에 쓰고 새로 작성된 이러한 명령어의 위치로 반환 주소를 덮어쓴다. 1990년대 후반까지 주요 운영 체제는 이러한 공격에 대한 어떠한 보호 기능도 제공하지 않았으며, 마이크로소프트 윈도우(Microsoft Windows)는 2004년까지 버퍼 오버런 방지 기능을 제공하지 않았다.[35] 결국 운영 체제는 데이터를 기록하는 메모리를 실행 불가능으로 표시하여 버퍼 오버플로 버그 악용에 대처하기 시작했는데, 이는 실행 공간 보호라고 알려진 기술이다. 이 기능이 활성화되면 시스템은 사용자 쓰기 가능 메모리 영역에 있는 코드를 실행하는 것을 거부하여 공격자가 페이로드를 스택에 배치하고 반환 주소 덮어쓰기를 통해 해당 스택으로 점프하는 것을 방지한다. 하드웨어 지원은 나중에 이 보호를 강화하는 데 사용 가능하게 되었다.
데이터 실행 방지 기능이 있으면 공격자는 버퍼의 메모리 섹션이 실행 불가능으로 표시되어 버퍼에 작성된 명령을 직접 실행할 수 없다. 이러한 보호를 무력화하기 위해 반환 지향 프로그래밍 공격은 악성 명령을 주입하는 대신 "가젯"이라고 하는 실행 가능한 메모리에 이미 있는 명령어 시퀀스를 반환 주소를 조작하여 사용한다. 일반적인 데이터 실행 방지 구현은 공격자가 악성 코드를 직접 실행하지 않고 저장된 반환 주소를 변경하여 "정상적인" 명령어 시퀀스를 결합했기 때문에 이 공격을 방어할 수 없다. 따라서 사용된 코드는 실행 가능으로 표시된다.
2. 1. 스택 버퍼 오버플로
2. 2. 데이터 실행 방지 (DEP)
2. 3. Return-into-library 기법
Return-to-libc 공격에서 공격자는 버퍼 오버런 취약점을 익스플로잇하여 프로그램 제어 흐름을 하이재킹한다.[6][7][36][37] 공격자는 스택에 공격 페이로드를 쓰는 대신, 사용 가능한 라이브러리 함수를 고르고 반환 주소를 자신의 엔트리 위치로 겹쳐쓴다.[6][36] libc와 같은 공유 라이브러리에는 시스템 호출 및 공격자에게 잠재적으로 유용한 기타 기능을 수행하는 서브루틴이 포함되어 있는 경우가 많기 때문에 공격을 조립할 코드를 찾기에 가장 적합한 후보이다. 나아가 스택 위치들은 함수 호출 규약에 따라 적절한 파라미터를 신중하게 전달하기 위해 겹쳐써지게 되며, 공격자에게 유용한 기능을 수행한다.[6]데이터 실행 방지(DEP)의 광범위한 구현으로 인해 전통적인 버퍼 오버플로우 취약점들을 익스플로잇하기 매우 힘들어졌다. 대신 공격자는 프로그램 코드 자체나 연결된 공유 라이브러리 같은 메모리에서 이미 마크된 실행 파일로만 제약되었다. 이 기술은 1997년에 Solar Designer에 의해 처음 제시되었으며,[6][36] 나중에 함수 호출을 무제한으로 연결하도록 확장되었다.[7][37]
2. 4. 빌린 코드 조각 (Borrowed Code Chunks)
64비트 x86 프로세서의 등장과 함께 서브루틴 호출 규약이 변화하면서, 공격자는 더 이상 버퍼 오버런 익스플로잇을 통해 콜 스택을 조작하는 것만으로는 라이브러리 함수 호출을 설정할 수 없게 되었다.[55][8][38] 이는 함수의 처음 몇몇 인수가 스택 대신 레지스터를 통해 전달되도록 변경되었기 때문이다. 또한 공유 라이브러리 개발자들은 시스템 호출 래퍼와 같이 공격자에게 유용한 함수들을 제거하거나 제한하였다.[38]이러한 변화에 대응하여, 공격은 전체 함수 대신 라이브러리 함수의 코드 조각(가젯)을 사용하는 방식으로 진화했다.[55][8][38] 이 기법은 스택에서 레지스터로 값을 팝하는 명령어 시퀀스를 포함하는 함수를 찾아, 공격자가 적절한 값을 올바른 레지스터에 넣어 새로운 호출 규약 하에서 함수 호출을 수행하도록 한다. 공격의 나머지 부분은 return-into-library 공격과 동일하다.
3. 공격
반환 지향 프로그래밍(ROP)은 빌린 코드 조각 접근법을 기반으로 하며, 공격자에게 튜링 완전성을 제공한다.[9][10] 즉, 공격자는 ROP 가젯들을 연결하여 임의의 연산을 수행할 수 있다. 호바브 샤참(Hovav Shacham)은 2007년에 이 기술을 발표했으며,[11] C 표준 라이브러리와 연결되어 있고 악용 가능한 버퍼 오버런 취약성을 포함하는 대상 애플리케이션에 대해 반환 지향 프로그래밍을 사용하여 모든 중요한 프로그래밍 구조를 어떻게 시뮬레이션할 수 있는지 시연했다.
반환 지향형 프로그래밍 공격은 표현력과 방어 조치에 대한 저항력 측면에서 논의된 다른 공격 유형보다 우수하다. 공유 라이브러리에서 잠재적으로 위험한 함수를 완전히 제거하는 것을 포함하여 위에 언급된 어떠한 반대 익스플로잇 기술도 반환 지향 프로그래밍 공격에 효과적이지 않다.
3. 1. x86 아키텍처
x86 아키텍처는 가변 길이 CISC 명령어 집합을 가지며, 명령어 집합이 매우 "밀집"되어 있어 임의의 바이트 시퀀스가 유효한 x86 명령어로 해석될 가능성이 높다.[58][11][41] 이러한 특성 때문에, 제어 흐름을 바꾸는 옵코드(주로 반환 명령어인 0xC3)를 찾고, 그 앞에 오는 바이트들을 분석하여 유용한 가젯을 식별하는 것이 가능하다. 가젯은 일반적으로 반환 명령어로 끝나며, 여러 가젯을 연결하여 복잡한 연산을 수행할 수 있다. Shacham은 C 표준 라이브러리를 포함한 충분히 큰 코드에서 튜링 완전성을 위한 충분한 가젯이 존재한다고 주장한다.[58][11][41]가젯을 찾고 공격을 구성하는 자동화된 도구(ROPgadget 등)가 개발되었다.[59][12][42]
3. 2. 공격 도구
3. 3. 주소 공간 배치 난수화 (ASLR)의 우회
주소 공간 배치 난수화(ASLR)는 ROP 공격을 어렵게 만드는 보안 기술이지만, 완벽하게 안전하지는 않다.Shacham 등의 연구[13][43]에 따르면, 32비트 시스템에서 ASLR은 주소 난수화에 사용할 수 있는 비트 수가 16개로 제한되어 있어 무차별 대입 공격에 취약하다. 16비트 주소 난수화는 몇 분 안에 무력화될 수 있다. 64비트 시스템에서는 더 많은 비트(40비트)를 난수화에 사용할 수 있어 ASLR이 더 강력하지만, 무차별 대입 공격이 불가능한 것은 아니다. 무차별 대입 공격 외에도, 난수화 제거 기법이 존재한다.
정보 누수 공격으로 메모리 내용의 정보가 유출되면, 런타임 시 공유 라이브러리의 기본 주소를 계산하는 데 사용될 수 있어[14][44] ASLR이 우회될 수 있다.
3. 4. Return 명령어 없이 ROP 공격
x86 및 ARM 아키텍처에서는 반환 명령어(x86의 0xC3)를 사용하지 않고도 반환 지향형 프로그래밍(ROP)을 수행할 수 있다.[15][45] 머신 메모리에 이미 존재하는 명령어 시퀀스를 조작하여 반환 명령어와 같은 효과를 내도록 한다. 반환 명령어는 스택 상단의 4바이트 값을 읽어 명령어 포인터를 해당 값으로 설정하고, 스택 포인터 값을 4 증가시키는(팝 연산) 두 가지 동작을 수행한다. x86 아키텍처에서는 `jmp` 및 `pop` 명령어 시퀀스가, ARM에서는 로드 및 분기 명령어 시퀀스가 반환 명령어 역할을 할 수 있다.[15][45]이러한 접근 방식은 반환 명령어를 사용하지 않아 방어를 어렵게 만들지만, 방어 프로그램이 여러 점프 명령도 함께 검사하는 경우 공격을 탐지할 수 있다.[15][45]
4. 방어
많은 기법들이 반환 지향형 프로그래밍에 기반한 공격을 막기 위해 제안되어 왔다.[60] 대부분은 프로그램과 라이브러리 코드의 위치를 랜덤화하는 것에 의존하여, 공격자가 정확하게 명령어들의 위치를 예상하지 못하게 한다. 이 기법의 꽤 흔한 구현은 주소 공간 배치 난수화(ASLR)이며, 공유 라이브러리들을 각 프로그램에 서로 다른 메모리 위치에 로드한다. 비록 현대 운영 체제에서 많이 쓰이고 있지만, ASLR은 정보 누수 공격에 취약하며 메모리에서 알려진 라이브러리 함수의 주소를 찾는 다른 접근법들이 존재한다. 만약 공격자가 성공적으로 알려진 명령어들의 위치를 결정할 수 있으면, 다른 모든 것들의 위치는 추론 가능해지고 반환 지향 프로그래밍 공격은 구성될 수 있다.
이 랜덤화 접근법은 단지 라이브러리 위치 뿐만 아니라 프로그램의 모든 명령어들을 각각 재위치시킴으로써 더 나아갈 수 있다.[61] 이것은 랜덤화된 명령어들을 런타임 시에 다시 모을 수 있도록 소프트웨어 동적 변환기 같은 광범위한 런타임 지원을 요구한다. 이 기법은 가젯을 찾고 활용하기 어렵게 만드는데 성공적이지만, 상당한 양의 오버헤드가 유발된다.
kBouncer이 사용하는 다른 접근법으로,[62] 운영 체제를 수정해서 반환 명령어들이 실제로 제어 흐름이 바뀌는지 추적하게 하는 것이 있다. 이것은 가젯 체이닝을 막지만 큰 성능 페널티를 유발한다.[62] 게다가 이것은 반환 지향형 프로그래밍이 반환 명령어 대신 제어 흐름 변경 명령어(jump 같은)를 사용하게 할 가능성이 있다. kBouncer는 이 유형의 수정된 공격에 효과적이지 않다.
4. 1. G-Free
G-Free는 칸 오날리오글루(Kaan Onarlioglu), 레일라 빌게(Leyla Bilge), 안드레아 란지(Andrea Lanzi), 다비데 발자롯티(Davide Balzarotti) 및 엥긴 키르다(Engin Kirda)가 개발한 기법이다.[16][46] 이 기법은 모든 형태의 반환 지향 프로그래밍에 대한 실질적인 해결책으로, 바이너리 실행 파일 내의 정렬되지 않은 모든 자유 분기 명령(RET, CALL 등)을 제거하여 ROP 공격을 방지한다.[16]G-Free는 XOR 카나리아가 StackGuard에 의해 구현된 방식과 유사하게 반환 주소를 보호한다.[16] 또한 검증 블록을 추가하여 함수 호출의 진위 여부를 확인하며, 예상 결과가 발견되지 않으면 응용 프로그램이 충돌하도록 한다.[16][46]
4. 2. 주소 공간 배치 난수화 (ASLR)
주소 공간 배치 난수화(ASLR)는 프로그램 및 라이브러리 코드의 메모리 위치를 무작위로 변경하여 반환 지향형 프로그래밍(ROP) 공격을 어렵게 만드는 기법이다.[60][17][47] ASLR은 공유 라이브러리들을 각 프로그램에 서로 다른 메모리 위치에 로드하는 방식으로 구현되며, 현대 운영 체제에서 널리 사용된다.[60] 하지만 ASLR은 정보 누수 공격 및 메모리에서 알려진 라이브러리 함수의 주소를 찾는 다른 접근법들에 취약하다.[60][17][47] 공격자가 알려진 명령어의 위치를 파악하면 다른 모든 명령어의 위치를 추론하여 ROP 공격을 구성할 수 있다.[60][17][47]라이브러리 위치뿐만 아니라 프로그램의 모든 명령어 및 기타 프로그램 상태(레지스터 및 스택 객체)를 무작위화하여 ASLR을 더 발전시킬 수 있다.[61][18][19][20][48][49][50] 하지만 이 방식은 런타임에 무작위화된 명령어들을 다시 결합하기 위한 소프트웨어 동적 변환기 등 광범위한 런타임 지원이 필요하며, 가젯을 찾고 활용하기 어렵게 만드는 대신 상당한 오버헤드가 발생한다.[61][48]
kBouncer와 같은 다른 접근법은 운영 체제를 수정하여 반환 명령어가 실제로 제어 흐름을 변경하는지 추적한다.[62][21][51] 이는 가젯 체이닝을 막지만 큰 성능 페널티를 유발하며, 점프(jump)와 같이 반환 명령어 대신 제어 흐름 변경 명령어를 사용하는 수정된 공격에는 효과적이지 않다.[62][21][51]
4. 3. 바이너리 코드 난수화
바이너리 코드 난수화는 실행 중인 소프트웨어 프로그램의 각 인스턴스에 변형을 도입하여 반환 지향형 프로그래밍(ROP) 공격에 대한 소프트웨어의 면역력을 높이는 기술이다.[22] 클라우드 기반 컴파일 및 배포 환경(예: 클라우드 람다)에서 효과적이다. 클라우드 람다를 무차별 대입 공격하는 것은 임의로 생성된 소프트웨어의 여러 인스턴스를 공격하는 결과를 낳을 수 있으며, 이는 공격의 효과를 감소시킨다.[22]아사프 셸리(Asaf Shelly)는 2017년에 이 기술을 발표하고 소프트웨어 업데이트 시스템에서 바이너리 랜덤화(Binary Randomization)의 사용을 시연했다.[22] 업데이트된 모든 장치에 대해 클라우드 기반 서비스는 코드에 변형을 도입하고, 온라인 컴파일을 수행하며, 바이너리를 전송했다. 이 기술은 ROP 공격이 소프트웨어의 내부 구조에 대한 지식에 의존하기 때문에 매우 효과적이다.[22]
이 기술의 단점은 임의로 생성된 소프트웨어의 모든 변형을 테스트하는 것이 불가능하기 때문에 소프트웨어가 배포되기 전에 완전히 테스트되지 않는다는 것이다. 이는 많은 바이너리 랜덤화 기술이 네트워크 인터페이스 및 시스템 프로그래밍에 적용 가능하며, 복잡한 알고리즘에는 권장되지 않는다는 것을 의미한다.
4. 4. 구조적 예외 처리기 덮어쓰기 방지 (SEHOP)
구조적 예외 처리기 덮어쓰기 방지(SEHOP)는 윈도우의 기능으로, 가장 흔한 스택 오버플로우 공격, 특히 구조적 예외 처리기를 덮어쓰는 공격으로부터 보호한다.4. 5. 제어 흐름 공격 방어 (IB-MAC)
사물 인터넷(IoT)의 확산으로 소형 임베디드 시스템이 증가함에 따라, 이들을 보호해야 할 필요성도 커지고 있다. 하드웨어로 구현된 명령 기반 메모리 접근 제어(IB-MAC)는 저가형 임베디드 시스템을 악의적인 제어 흐름 공격과 스택 오버플로우 공격으로부터 보호할 수 있다.[23] 데이터 스택과 반환 스택을 분리함으로써 이러한 보호 기능을 제공한다.[23] 그러나 일부 임베디드 시스템에는 메모리 관리 유닛이 없어, 하드웨어 솔루션을 모든 임베디드 시스템에 적용할 수는 없다.[23]4. 6. Return-oriented Rootkit 방어
수정된 컴파일러를 사용하여 각 `call` 명령어를 `pushl $index; jmp f`로, 각 `ret` 명령어를 `popl %reg; jmp table(%reg)`로 대체하여 반환 지향형 "가젯"을 제거할 수 있다.[24] 여기서 `table`은 프로그램 내 모든 "합법적인" 반환 주소의 불변 탭을 나타내고, `index`는 해당 테이블의 특정 인덱스를 나타낸다.[24] 이는 함수 끝에서 다른 함수 중간의 임의의 주소로 곧바로 반환하는 반환 지향형 가젯의 생성을 막는다. 대신, 가젯은 "합법적인" 반환 주소로만 반환할 수 있으며, 이는 유용한 가젯을 만드는 난이도를 극적으로 증가시킨다. "우리의 반환 간접 참조 기술은 본질적으로 반환 지향 프로그래밍을 예전 스타일의 return-into-libc로 ''되돌린다''"고 주장했다.[24] 개념 증명 컴파일러는 `movl $0xC3, %eax`와 같이 "opcode나 즉시 피연산자에 반환 opcode를 포함하는 특정 기계 명령"을 처리하기 위한 피홀 최적화 단계를 포함했다.[24]4. 7. 포인터 인증 코드 (PAC)
ARMv8.3-A 아키텍처는 포인터 주소 공간의 사용되지 않는 비트를 활용하여 특별히 설계된 튜닝 가능한 블록 암호[25][26]를 사용하여 포인터 주소를 암호화 방식으로 서명하는 새로운 기능을 하드웨어 수준에서 도입했다. 이 암호는 원하는 값(일반적으로 반환 주소)과 "로컬 컨텍스트" 값(예: 스택 포인터)을 결합하여 서명한다.민감한 작업(즉, 저장된 포인터로 반환)을 수행하기 전에 서명을 확인하여 변조 또는 잘못된 컨텍스트에서의 사용(예: 악용 트램펄린 컨텍스트에서 저장된 반환 주소 활용)을 감지할 수 있다.
특히 아이폰에 사용된 애플 A12 칩은 ARMv8.3으로 업그레이드되었으며 PAC를 사용한다. 리눅스는 2020년에 출시된 버전 5.7에서 커널 내에서 포인터 인증에 대한 지원을 받았으며, 사용자 공간 애플리케이션에 대한 지원은 2018년에 추가되었다.[27]
2022년, MIT 연구원들은 PAC에 대한 부채널 공격인 PACMAN을 발표했다.[28]
4. 7. 1. PACMAN 공격
PACMAN은 포인터 인증에 대한 부채널 공격으로, 2022년에 MIT 연구진에 의해 발표되었다.4. 8. 분기 대상 식별 (BTI)
ARMv8.5-A 아키텍처는 분기 명령의 유효한 대상을 명시적으로 식별하는 하드웨어 수준의 새로운 기능을 도입했다.[29] 컴파일러는 간접 분기 명령의 예상 랜딩 포인트마다 "BTI"라는 특수 명령(opcode)을 삽입하는데, 이러한 분기 대상에는 일반적으로 함수 진입점과 switch/case 코드 블록이 포함된다.BTI 명령은 컴파일러와 링커에 의해 "보호"로 표시된 코드 메모리 페이지에서 사용된다. 보호된 페이지에서 BTI가 아닌 다른 명령으로 랜딩하는 모든 간접 분기 명령은 오류를 생성한다.[29]
BTI 명령이 삽입된 식별된 대상은 평균적인 응용 프로그램 코드에서 전체 명령의 약 1%를 차지한다. 따라서 BTI를 사용하면 코드 크기가 동일한 양만큼 증가한다.[29]
ROP 공격에 사용되는 가젯은 응용 프로그램 코드의 어디에나 위치하므로 평균적으로 99%의 가젯은 BTI가 아닌 명령으로 시작한다. 이러한 가젯으로의 분기는 결과적으로 오류를 발생시킨다. ROP 공격은 여러 가젯의 체인으로 구성된다는 점을 고려할 때, 체인의 모든 가젯이 BTI로 시작하는 1%에 속할 확률은 매우 낮다.
PAC와 BTI는 ROP 및 JOP 공격을 사용하여 악성 코드 삽입을 방지하는 상호 보완적인 메커니즘이다. PAC가 분기 연산의 소스(서명된 포인터)에 초점을 맞추는 반면, BTI는 분기의 대상에 초점을 맞춘다.[30]
참조
[1]
웹사이트
Check Point Secure Platform Hack
https://www.pentest.[...]
Pentest Consultores
2007-10-01
[2]
웹사이트
Thread: CheckPoint Secure Platform Multiple Buffer Overflows
https://www.cpug.org[...]
[3]
웹사이트
Return-Oriented Programming: Exploits Without Code Injection
http://cseweb.ucsd.e[...]
2009-08-12
[4]
서적
Proceedings of the 15th ACM conference on Computer and communications security - CCS '08
2008-10
[5]
웹사이트
Microsoft Windows XP SP2 Data Execution Prevention
https://technet.micr[...]
[6]
Bugtraq
'Return-into-lib(c) exploits'
http://seclists.org/[...]
Solar Designer
[7]
간행물
return-into-lib(c) exploits
http://phrack.org/is[...]
Nergal, Phrack 58 Article 4
[8]
문서
'x86-64 buffer overflow exploits and the borrowed code chunks exploitation technique'
http://users.suse.co[...]
Sebastian Krahmer
2005-09-28
[9]
서적
Proceedings of the 12th ACM conference on Computer and communications security - CCS '05
2005-11
[10]
학술지
Control-flow integrity principles, implementations, and applications
2009-10
[11]
서적
Proceedings of the 14th ACM conference on Computer and communications security - CCS '07
2007-10
[12]
문서
ROPgadget - Gadgets finder and auto-roper
http://shell-storm.o[...]
Jonathan Salwan and Allan Wirth
[13]
문서
On the effectiveness of address-space randomization
2004
[14]
문서
The Number of the Beast
https://www.fireeye.[...]
2013
[15]
문서
Return-oriented programming without returns
2010
[16]
문서
G-Free: Defeating return-oriented programming through gadget-less binaries
2010
[17]
서적
Research in Attacks, Intrusions, and Defenses
2013-10
[18]
서적
Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems
ACM
2016-01-01
[19]
서적
2012 IEEE Symposium on Security and Privacy
2012-05
[20]
특허
Binary translator driven program state relocation
[21]
문서
kBouncer: Efficient and Transparent ROP Mitigation
https://www.cs.colum[...]
Vasilis Pappas
2012-04
[22]
특허
Security methods and systems by code mutation
[23]
문서
Defending embedded systems against control flow attacks
2009
[24]
문서
'Defeating return-oriented rootkits with "return-less" kernels.'
https://www.csc2.ncs[...]
[25]
conference
The QARMA Block Cipher Family
https://eprint.iacr.[...]
[26]
웹사이트
Pointer Authentication on ARMv8.3
https://www.qualcomm[...]
Qualcomm Technologies Inc.
2020-06-16
[27]
웹사이트
Linux 5.7 For 64-bit ARM Brings In-Kernel Pointer Authentication, Activity Monitors - Phoronix
https://www.phoronix[...]
2020-03-31
[28]
conference
PACMAN: attacking ARM pointer authentication with speculative execution
Association for Computing Machinery
2022-06
[29]
웹사이트
Applying PAC and BTI techniques to real code
https://developer.ar[...]
2024-02-04
[30]
웹사이트
Control Flow Integrity, anti-malware active protection on Arm64 systems
https://sipearl.com/[...]
2024-02-04
[31]
웹사이트
Check Point Secure Platform Hack
https://www.pentest.[...]
Pentest Consultores
2023-01-06
[32]
웹사이트
Thread: CheckPoint Secure Platform Multiple Buffer Overflows
https://www.cpug.org[...]
2023-01-06
[33]
웹사이트
Return-Oriented Programming: Exploits Without Code Injection
http://cseweb.ucsd.e[...]
2009-08-12
[34]
서적
Proceedings of the 15th ACM conference on Computer and communications security - CCS '08
2008-10
[35]
웹사이트
Microsoft Windows XP SP2 Data Execution Prevention
https://technet.micr[...]
[36]
간행물
"Return-into-lib(c) exploits"
http://seclists.org/[...]
Bugtraq
[37]
간행물
"return-into-lib(c) exploits"
http://phrack.org/is[...]
Phrack 58 Article 4
[38]
간행물
"x86-64 buffer overflow exploits and the borrowed code chunks exploitation technique"
http://users.suse.co[...]
2005-09-28
[39]
서적
Proceedings of the 12th ACM conference on Computer and communications security - CCS '05
2005-11
[40]
논문
Control-flow integrity principles, implementations, and applications
2009-10
[41]
서적
Proceedings of the 14th ACM conference on Computer and communications security - CCS '07
2007-10
[42]
기타
ROPgadget - Gadgets finder and auto-roper
http://shell-storm.o[...]
[43]
간행물
On the effectiveness of address-space randomization
Proceedings of the 11th ACM conference on Computer and Communications Security (CCS)
2004
[44]
간행물
The Number of the Beast
https://www.fireeye.[...]
2013
[45]
간행물
Return-oriented programming without returns
Proceedings of CCS 2010, A. Keromytis and V. Shmatikov, Eds. ACM Press
2010
[46]
간행물
G-Free: Defeating return-oriented programming through gadget-less binaries
Proceedings of ACSAC 2010, M. Franz and J. McDermott, Eds. ACM Press
2010
[47]
서적
Research in Attacks, Intrusions, and Defenses
http://web.mit.edu/h[...]
2013-10
[48]
논문
HIPStR: Heterogeneous-ISA Program State Relocation
ACM
2016-01-01
[49]
서적
2012 IEEE Symposium on Security and Privacy
2012-05
[50]
특허
Binary translator driven program state relocation
[51]
기타
"kBouncer: Efficient and Transparent ROP Mitigation"
https://www.cs.colum[...]
2012-04
[52]
웹인용
Return-Oriented Programming: Exploits Without Code Injection
http://cseweb.ucsd.e[...]
2009-08-12
[53]
서적
Proceedings of the 15th ACM conference on Computer and communications security - CCS '08
http://cseweb.ucsd.e[...]
2008-10
[54]
웹사이트
Microsoft Windows XP SP2 Data Execution Prevention
http://technet.micro[...]
[55]
간행물
"x86-64 buffer overflow exploits and the borrowed code chunks exploitation technique"
http://users.suse.co[...]
2005-09-28
[56]
서적
Proceedings of the 12th ACM conference on Computer and communications security - CCS '05
2005-11
[57]
저널
Control-flow integrity principles, implementations, and applications
2009-10
[58]
서적
Proceedings of the 14th ACM conference on Computer and communications security - CCS '07
2007-10
[59]
기타
ROPgadget - Gadgets finder and auto-roper
http://shell-storm.o[...]
[60]
서적
Research in Attacks, Intrusions, and Defenses
http://web.mit.edu/h[...]
2014-04-10
[61]
서적
2012 IEEE Symposium on Security and Privacy
2012-05
[62]
기타
"kBouncer: Efficient and Transparent ROP Mitigation"
http://www.cs.columb[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com