KR102351663B1 - Cfi 기반 got 변조 공격 방지 장치 및 그 방법 - Google Patents
Cfi 기반 got 변조 공격 방지 장치 및 그 방법 Download PDFInfo
- Publication number
- KR102351663B1 KR102351663B1 KR1020200038983A KR20200038983A KR102351663B1 KR 102351663 B1 KR102351663 B1 KR 102351663B1 KR 1020200038983 A KR1020200038983 A KR 1020200038983A KR 20200038983 A KR20200038983 A KR 20200038983A KR 102351663 B1 KR102351663 B1 KR 102351663B1
- Authority
- KR
- South Korea
- Prior art keywords
- branch
- library
- identifier
- calling program
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
Abstract
Description
도 2는 일 실시예에 따른 GOT 보호 장치의 구성을 설명하기 위한 블록도이다.
도 3은 일 실시예에 따른 GOT 보호 장치에서 GOT 변조 공격을 방지하는 방법을 설명하기 위한 흐름도이다.
도 4는 일 실시예에 있어서, 프로그램과 라이브러리 간 동적 함수 심볼을 공유하는 것을 설명하기 위한 도면이다.
도 5는 일 실시예에 있어서, 호출 프로그램의 PLT 엔트리에서 분기 식별자를 검사하는 것을 설명하기 위한 도면이다.
도 6은 일 실시예에 있어서, 라이브러리 점프 테이블을 설명하기 위한 도면이다.
도 7은 일 실시예에 있어서, 라이브러리 함수를 호출하는 예제 프로그램에 대하여 라이브러리 점프 테이블을 구현한 것을 설명하기 위한 예이다.
도8은 일 실시예에 있어서, 호출 프로그램에서의 분기 검증을 설명하기 위한 도면이다.
도 9는 일 실시예에 있어서, 프로그램 그룹의 파일 크기 정보를 설명하기 위한 예이다.
도 10은 일 실시예에 있어서, 프로그램 그룹이 호출한 라이브러리의 파일 크기 정보를 설명하기 위한 도면이다.
도 11은 일 실시예에 있어서, 프로그램별 서로 다른 기법에 의한 동적 링커의 재배치 회수와 로딩시간을 설명하기 위한 도면이다.
Claims (12)
- 컴퓨터로 구현되는 GOT(Global Offset Table) 보호 장치에 의해 수행되는 GOT 변조 공격 방지 방법에 있어서,
호출 프로그램과 라이브러리 간에 공유되는 동적 바인딩 심볼을 코드화하여 분기 식별자를 생성하는 단계;
상기 호출 프로그램에 포함된 분기 테이블에서 상기 코드화된 분기 식별자 코드를 검사하기 위한 명령 코드를 통해 분기 유효성 검사를 수행하는 단계; 및
상기 수행된 분기 유효성 검사에 기초하여 상기 호출 프로그램에 포함된 분기 테이블로부터 함수 호출을 통해 호출 프로그램을 실행시키는 단계
를 포함하고,
상기 분기 식별자는 생성하는 단계는,
상기 동적 바인딩 심볼을 이름 꾸밈(name mangling) 규칙 기반의 코드화를 수행하는 단계
를 포함하고,
상기 분기 유효성 검사를 수행하는 단계는,
프로그램의 실행 환경에 따라 호출 프로그램이나 라이브러리 중 어느 하나에 CFI 기반의 GOT 변조 공격 방지 방법이 적용된 채로 호출이 발생될 경우, 상기 분기 유효성 검사 수행 여부를 결정하고, 상기 라이브러리에 CFI 기반의 GOT 변조 공격 방지 방법이 적용되지 않을 경우, 상기 라이브러리에서 분기 식별자를 포함하고 있는지 여부를 체크하여 분기 유효성 검사 코드 추가 여부를 결정하고, 상기 라이브러리에 분기 식별자를 포함하고 있을 경우, 상기 호출 프로그램의 PLT 엔트리에 분기 식별자를 포함하는 명령 코드를 삽입하고, 상기 라이브러리에 분기 식별자를 포함하고 있지 않을 경우, 동적 링커에 의한 심볼 바인딩을 통해 호출 프로그램을 다이렉트로 호출하는 단계
를 포함하는 GOT 변조 공격 방지 방법. - 제1항에 있어서,
상기 분기 유효성 검사를 수행하는 단계는,
상기 라이브러리에 상기 생성된 분기 식별자를 삽입하고, 상기 라이브러리에 삽입된 분기 식별자와 상기 호출 프로그램 PLT(Procedure Linkage Table) 엔트리에서 상기 코드화된 분기 식별자 코드를 검사하기 위하여 추가된 명령 코드를 통해 GOT 엔트리가 가리키는 분기 목표점에 위치한 값을 비교하고, 상기 비교한 결과값이 일치할 경우 분기를 진행하고, 상기 비교한 결과값이 일치하지 않을 경우, GOT 엔트리 값을 재설정하는 단계
를 포함하는 GOT 변조 공격 방지 방법. - 삭제
- 제1항에 있어서,
상기 분기 유효성 검사를 수행하는 단계는,
상기 호출 프로그램에 CFI 기반의 GOT 변조 공격 방지 방법이 적용되지 않을 경우, 분기 식별자 검사를 미수행하는 단계
를 포함하는 GOT 변조 공격 방지 방법. - 삭제
- 삭제
- 컴퓨터로 구현되는 GOT(Global Offset Table) 보호 장치에 있어서,
호출 프로그램과 라이브러리 간에 공유되는 동적 바인딩 심볼을 코드화하여 분기 식별자를 생성하는 식별자 생성부;
상기 호출 프로그램에 포함된 분기 테이블에서 상기 코드화된 분기 식별자 코드를 검사하기 위한 명령 코드를 통해 분기 유효성 검사를 수행하는 유효성 검사부; 및
상기 수행된 분기 유효성 검사에 기초하여 상기 호출 프로그램에 포함된 분기 테이블로부터 함수 호출을 통해 호출 프로그램을 실행시키는 프로그램 실행부
를 포함하고,
상기 식별자 생성부는,
상기 동적 바인딩 심볼을 이름 꾸밈(name mangling) 규칙 기반의 코드화를 수행하는 것을 포함하고,
상기 유효성 검사부는,
프로그램의 실행 환경에 따라 호출 프로그램이나 라이브러리 중 어느 하나에 CFI 기반의 GOT 변조 공격 방지 방법이 적용된 채로 호출이 발생될 경우, 상기 분기 유효성 검사 수행 여부를 결정하고, 상기 라이브러리에 CFI 기반의 GOT 변조 공격 방지 방법이 적용되지 않을 경우, 상기 라이브러리에서 분기 식별자를 포함하고 있는지 여부를 체크하여 분기 유효성 검사 코드 추가 여부를 결정하고, 상기 라이브러리에 분기 식별자를 포함하고 있을 경우, 상기 호출 프로그램의 PLT 엔트리에 분기 식별자를 포함하는 명령 코드를 삽입하고, 상기 라이브러리에 분기 식별자를 포함하고 있지 않을 경우, 동적 링커에 의한 심볼 바인딩을 통해 호출 프로그램을 다이렉트로 호출하는
GOT 보호 장치. - 제7항에 있어서,
상기 유효성 검사부는,
상기 라이브러리에 상기 생성된 분기 식별자를 삽입하고, 상기 라이브러리에 삽입된 분기 식별자와 상기 호출 프로그램 PLT(Procedure Linkage Table) 엔트리에서 상기 코드화된 분기 식별자 코드를 검사하기 위하여 추가된 명령 코드를 통해 GOT 엔트리가 가리키는 분기 목표점에 위치한 값을 비교하고, 상기 비교한 결과값이 일치할 경우 분기를 진행하고, 상기 비교한 결과값이 일치하지 않을 경우, GOT 엔트리 값을 재설정하는
것을 특징으로 하는 GOT 보호 장치. - 삭제
- 제7항에 있어서,
상기 유효성 검사부는,
상기 호출 프로그램에 CFI 기반의 GOT 변조 공격 방지 방법이 적용되지 않을 경우, 분기 식별자 검사를 미수행하는
것을 특징으로 하는 GOT 보호 장치.
- 삭제
- 삭제
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/KR2021/002188 WO2021201433A1 (ko) | 2020-02-26 | 2021-02-22 | Cfi 기반 got 변조 공격 방지 장치 및 그 방법 |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR20200023549 | 2020-02-26 | ||
| KR1020200023549 | 2020-02-26 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20210108848A KR20210108848A (ko) | 2021-09-03 |
| KR102351663B1 true KR102351663B1 (ko) | 2022-01-17 |
Family
ID=77785182
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020200038983A Active KR102351663B1 (ko) | 2020-02-26 | 2020-03-31 | Cfi 기반 got 변조 공격 방지 장치 및 그 방법 |
Country Status (2)
| Country | Link |
|---|---|
| KR (1) | KR102351663B1 (ko) |
| WO (1) | WO2021201433A1 (ko) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102567924B1 (ko) * | 2021-11-01 | 2023-08-17 | 부산대학교 산학협력단 | 웹 어셈블리에서의 간접호출 명령어 보호를 위한 장치 및 방법 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150356294A1 (en) * | 2014-06-09 | 2015-12-10 | Lehigh University | Methods for enforcing control flow of a computer program |
| JP2019121203A (ja) * | 2018-01-09 | 2019-07-22 | 株式会社Attc | 変換装置、変換プログラム、プログラム変換方法 |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP2256659A1 (en) * | 2009-05-27 | 2010-12-01 | NTT DoCoMo, Inc. | Method and apparatus for preventing modification of a program execution flow |
| KR101256149B1 (ko) * | 2010-07-12 | 2013-04-19 | 홍익대학교 산학협력단 | 프로그램 카운터 인코딩을 이용한 간접 함수 호출 보호 방법 및 보호 장치 |
| KR101955356B1 (ko) * | 2017-12-08 | 2019-03-07 | 한국인터넷진흥원 | 취약 함수 사용에 의한 취약점을 보완하기 위한 바이너리 패치 장치 및 그 방법 |
-
2020
- 2020-03-31 KR KR1020200038983A patent/KR102351663B1/ko active Active
-
2021
- 2021-02-22 WO PCT/KR2021/002188 patent/WO2021201433A1/ko not_active Ceased
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150356294A1 (en) * | 2014-06-09 | 2015-12-10 | Lehigh University | Methods for enforcing control flow of a computer program |
| JP2019121203A (ja) * | 2018-01-09 | 2019-07-22 | 株式会社Attc | 変換装置、変換プログラム、プログラム変換方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2021201433A1 (ko) | 2021-10-07 |
| KR20210108848A (ko) | 2021-09-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Williams-King et al. | Egalito: Layout-agnostic binary recompilation | |
| Zeng et al. | Combining control-flow integrity and static analysis for efficient and validated data sandboxing | |
| Dang et al. | The performance cost of shadow stacks and stack canaries | |
| US8434064B2 (en) | Detecting memory errors using write integrity testing | |
| Niu et al. | Monitor integrity protection with space efficiency and separate compilation | |
| CN109918903B (zh) | 一种基于llvm编译器的程序非控制数据攻击防护方法 | |
| Zhang et al. | A platform for secure static binary instrumentation | |
| US6151618A (en) | Safe general purpose virtual machine computing system | |
| US20090282393A1 (en) | Securing Software By Enforcing Data Flow Integrity | |
| CN115659333B (zh) | 一种基于二进制插桩的沙箱、内存隔离方法及存储介质 | |
| US12517744B2 (en) | Applying security mitigation measures for stack corruption exploitation in intermediate code files | |
| US11176060B2 (en) | Dynamic memory protection | |
| Mashtizadeh et al. | Cryptographically enforced control flow integrity | |
| US9129137B2 (en) | Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine | |
| Kiaei et al. | Rewrite to reinforce: Rewriting the binary to apply countermeasures against fault injection | |
| Saito et al. | A survey of prevention/mitigation against memory corruption attacks | |
| Jeong et al. | A cfi countermeasure against got overwrite attacks | |
| KR102351663B1 (ko) | Cfi 기반 got 변조 공격 방지 장치 및 그 방법 | |
| DuVarney et al. | SELF: a transparent security extension for ELF binaries | |
| US11113392B2 (en) | Executable binary code insertion | |
| CN119357948A (zh) | 一种进程注入的方法及相关设备 | |
| Lehniger et al. | Combination of rop defense mechanisms for better safety and security in embedded systems | |
| US20230418950A1 (en) | Methods, Devices, and Systems for Control Flow Integrity | |
| Yedidia et al. | Deterministic client: Enforcing determinism on untrusted machine code | |
| Arnold | Ksplice: An automatic system for rebootless kernel security updates |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-3-3-R10-R13-asn-PN2301 St.27 status event code: A-3-3-R10-R11-asn-PN2301 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-3-3-R10-R13-asn-PN2301 St.27 status event code: A-3-3-R10-R11-asn-PN2301 |
|
| D14-X000 | Search report completed |
St.27 status event code: A-1-2-D10-D14-srh-X000 |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
| E13-X000 | Pre-grant limitation requested |
St.27 status event code: A-2-3-E10-E13-lim-X000 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
| PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 Fee payment year number: 1 |
|
| PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 4 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 5 |
|
| U11 | Full renewal or maintenance fee paid |
Free format text: ST27 STATUS EVENT CODE: A-4-4-U10-U11-OTH-PR1001 (AS PROVIDED BY THE NATIONAL OFFICE) Year of fee payment: 5 |
