임의 코드 실행
Arbitrary code execution다음에 대한 시리즈 일부 |
정보 보안 |
---|
관련 보안 카테고리 |
위협 |
|
방어 |
컴퓨터 보안에서 임의 코드 실행(ACE)은 공격자가 대상 시스템이나 대상 프로세스에서 공격자가 선택한 명령이나 코드를 실행할 수 있는 능력이다.[1]임의 코드 실행 취약성은 임의 코드 실행을 허용하는 소프트웨어 또는 하드웨어의 보안 결함이다.이러한 취약성을 이용하도록 설계된 프로그램을 임의 코드 실행 공격이라고 한다.네트워크를 통해(특히 인터넷과 같은 광역 네트워크를 통해) 임의 코드 실행을 트리거하는 기능을 흔히 원격 코드 실행(RCE)이라고 한다.
취약성 유형
공격자가 임의 명령이나 코드를 실행할 수 있도록 하는 여러 종류의 취약성이 있다.예를 들면 다음과 같다.
방법들
임의 코드 실행은 일반적으로 실행 중인 프로세스의 명령 포인터(점프 또는 분기 등)에 대한 제어를 통해 이루어진다.명령 포인터는 실행될 프로세스의 다음 명령을 가리킨다.따라서 명령 포인터의 값에 대한 제어는 다음에 실행될 명령을 제어한다.임의 코드를 실행하기 위해, 많은 악용자들이 프로세스에 코드를 주입하고(예를 들어 RAM의 입력 버퍼에 저장되는 입력에 대한 전송) 취약성을 이용하여 명령 포인터를 변경하여 주입된 코드를 가리키도록 한다.그러면 주입된 코드가 자동으로 실행된다.이러한 유형의 공격은 (Von Neumann 아키텍처를 사용하는) 대부분의 컴퓨터가 코드와 데이터를 전반적으로 구분하지 않기 때문에 [6][7]악성 코드가 무해한 입력 데이터로 위장될 수 있다는 사실을 악용한다.많은 새로운 CPU들은 이것을 더 어렵게 만드는 메커니즘을 가지고 있다. 예를 들어 실행되지 않는 비트와 같은.[8][9]
권한 상승과 결합
그 자체로 임의 코드 실행 공격은 공격자에게 취약한 대상 프로세스와 동일한 권한을 부여한다.[10]예를 들어 웹 브라우저의 결함을 악용할 경우 공격자는 사용자 역할을 할 수 있어 개인 컴퓨터 파일 수정이나 은행 정보에 액세스하는 등의 작업을 수행할 수 있지만 시스템 수준 작업을 수행할 수는 없다(해당 사용자도 그러한 액세스 권한을 가지고 있지 않은 한).
이를 해결하기 위해 공격자가 대상에 임의 코드를 실행할 수 있게 되면 추가 제어를 얻기 위해 권한 상승 공격 시도가 종종 발생한다.여기에는 커널 자체 또는 관리자, 시스템 또는 루트 같은 계정이 포함될 수 있다.이러한 향상된 제어 기능이 있든 없든, 악용은 심각한 손상을 입히거나 컴퓨터를 좀비로 만들 잠재력을 가지고 있지만, 특권 상승은 시스템의 합법적인 관리자로부터 공격을 숨기는 데 도움이 된다.
예
레트로게이밍 취미 활동가들은 대개 도구 보조 슈퍼플레이에서 버튼 입력의 정확한 순서를 사용하여 버퍼 오버플로를 유발하여 보호된 메모리에 쓸 수 있도록 하는, 임의 코드를 실행할 수 있는 고전적인 비디오 게임에서 취약점을 가까스로 찾아냈다.퀵 2014 어썸게임즈에서 스피드런닝 열성팬들은 버퍼 오버플로를 활용해 메모리에 임의 코드를 쓰는 방식으로 슈퍼 마리오 월드의[11] 카피로 게임 Pong과 Snake 버전을 가까스로 코드화하고 실행했다.
2018년 6월 12일 모질라의 보안 연구원인 장 이브 에비나드는 윈도 10에서 ACE 취약점을 발견했다.[12]
2018년 5월 1일, 보안 연구원이 7-Zip 파일 보관기에서 ACE 취약성을 발견했다.[13]
PHP는 수많은 ACE 취약성의 대상이었다.[14][15][16]
2021년 12월 9일 인기 로깅 프레임워크 Log4j에서 "Log4Shell"이라는 RCE 취약성이 발견되어 iCloud, Minecraft: Java Edition, Steam을 비롯한 많은 서비스에 영향을 미쳤으며, "최근 10년간 가장 크고 중대한 취약성"으로 특징지어졌다.[17][18]
참고 항목
참조
- ^ Team, KernelCare. "Remote code execution attack: what it is, how to protect your systems". blog.kernelcare.com. Retrieved 2021-09-22.
- ^ "Deserialization of untrusted data". owasp.org.
- ^ "Understanding type confusion vulnerabilities: CVE-2015-0336". microsoft.com. 18 June 2015.
- ^ "Exploiting CVE-2018-19134: remote code execution through type confusion in Ghostscript". lgtm.com. 5 February 2019.
- ^ "LDD arbitrary code execution".
- ^ Gilreath, William F.; Laplante, Phillip A. (2003-03-31). Computer Architecture: A Minimalist Perspective. Springer Science & Business Media. ISBN 9781402074165.
- ^ Reilly, Edwin D. (2003). Milestones in Computer Science and Information Technology. Greenwood Publishing Group. p. 245. ISBN 9781573565219.
- ^ "Tech Insight: Execute Disable Bit (XD-Bit)" (PDF). toshiba.pl. 2005.
- ^ "AMD has you covered" (PDF). amd.com. 2012.
- ^ "Remote Code Execution - an overview ScienceDirect Topics". www.sciencedirect.com. Retrieved 2021-12-05.
- ^ Orland, Kyle (14 January 2014). "How an emulator-fueled robot reprogrammed Super Mario World on the fly". arstechnica.com. Retrieved 27 July 2016.
- ^ "Microsoft Windows CVE-2018-8213 Arbitrary Code Execution Vulnerability Symantec". www.symantec.com. Retrieved 2018-10-31.
- ^ "A Vulnerability in 7-Zip Could Allow for Arbitrary Code Execution". New York State Office of Information Technology Services. Archived from the original on 2021-08-15. Retrieved 2018-10-31.
- ^ "NVD - CVE-2017-12934". nvd.nist.gov. Retrieved 2018-10-31.
- ^ "File Operation Induced Unserialization via the "phar://" Stream Wrapper" (PDF). Secarma Labs. 2018.
- ^ "NVD - CVE-2017-12933". nvd.nist.gov. Retrieved 2018-10-31.
- ^ "Zeroday in ubiquitous Log4j tool poses a grave threat to the Internet". Ars Technica. December 9, 2021. Retrieved December 11, 2021.
- ^ "Recently uncovered software flaw 'most critical vulnerability of the last decade'". The Guardian. 11 December 2021. Retrieved December 11, 2021.