시스템 관리 모드
System Management Mode시리즈의 일부 |
x86 아키텍처용 마이크로프로세서 모드 |
---|
괄호 안에 표시된 첫 번째 지원 플랫폼 |
시스템 관리 모드(SMM, 보호 [1][2]링에 따라 링-2라고도 함)는 운영 체제를 포함한 모든 정상적인 실행이 중단되는 x86 중앙 프로세서 유닛(CPU)의 동작 모드입니다.일반적으로 컴퓨터의 펌웨어에 상주하는 대체 소프트웨어 시스템 또는 하드웨어 지원 디버거가 높은 특권으로 실행됩니다.
인텔 386SL과 [3]함께 처음 출시되었습니다.당초 SMM에는 특별한 SL 버전이 필요했지만 인텔은 1993년 메인라인 486 및 Pentium 프로세서에 SMM을 탑재했습니다.AMD는 1991년에 [4]Am386 프로세서를 탑재한 인텔의 SMM을 실장했습니다.이것은 x86 [citation needed]아키텍처의 이후 모든 마이크로프로세서에서 사용할 수 있습니다.
일부 ARM 프로세서에는 시스템 펌웨어(UEFI [5]등)의 관리 모드도 포함되어 있습니다.
작동
SMM은 전원 관리, 시스템 하드웨어 제어, 자체 OEM 설계 코드 등 시스템 전체의 기능을 처리하기 위해 제공되는 특수한 동작 모드입니다.시스템 펌웨어(BIOS 또는 UEFI)에서만 사용하도록 설계되어 있으며 애플리케이션 소프트웨어나 범용 시스템 소프트웨어에서는 사용할 수 없습니다.SMM의 주된 장점은 운영체제나 이그제큐티브 애플리케이션 및 [citation needed]소프트웨어 애플리케이션에 대해 투과적으로 동작하는 개별적이고 쉽게 격리된 프로세서 환경을 제공한다는 것입니다.
투명성을 달성하기 위해 SMM은 특정 규칙을 부과합니다.SMM은 SMI(System Management Interrupt)를 통해서만 입력할 수 있습니다.프로세서는,[6] 펌 웨어에 의해서 CPU 의 다른 동작 모드에 액세스 할 수 없게 할 필요가 있는 다른 주소 공간(SMRAM)에서 SMM 코드를 실행합니다.
시스템 관리 모드에서는 최대 4GB의 메모리를 대용량 리얼 모드로 지정할 수 있습니다.x86-64 프로세서에서는 SMM은 실제 주소 [7]모드로서4 GB 이상의 메모리를 주소 지정할 수 있습니다.
사용법
처음에 시스템 관리 모드는 전원 관리 및 Advanced Power Management(APM; 고급 전원 관리) 등의 하드웨어 제어 기능을 구현하기 위해 사용되었습니다.다만, BIOS 의 제조원이나 OEM 에서는, 고도의 구성이나 전원 인터페이스(ACPI)[8][9]등의 신기능을 SMM 에 의존하고 있습니다.
시스템 관리 모드는 다음과 같은 용도로 사용됩니다.
- 메모리 오류나 칩셋 오류 등의 시스템 이벤트 처리
- 높은 CPU 온도에서의 셧다운 등 시스템 안전 기능 관리
- 시스템 관리 BIOS(SMBIOS)
- 고급 구성 및 전원 인터페이스
- 전압 레귤레이터 모듈 및 LPCIO(슈퍼 I/O 또는 임베디드 컨트롤러) 관리 등 전원 관리 조작 제어
- USB 마우스/키보드를 PS/2 마우스/키보드로 에뮬레이트(종종 USB 레거시 [10]지원)
- Toshiba 및 IBM/Lenovo 노트북 컴퓨터 등 시스템 구성 일원화
- Trusted Platform Module(TPM)[11] 관리
- 운영체제[12] 런타임에 USB 핫스왑 및 Thunderbolt 핫스왑을 포함한 BIOS 전용 하드웨어 제어 프로그램
시스템 관리 모드는 Black Hat[13] 2008 및 2015에서 [14]입증되었듯이 고특권 루트킷을 실행하기 위해 악용될 수도 있습니다.
SMM 입력
SMM은 SMI(System Management Interrupt)를 통해 입력됩니다.SMI는 다음에 의해 호출됩니다.
- 프로세서 [15]칩의 지정 핀 SMI 번호에 의한 메인보드 하드웨어 또는 칩셋 시그널링.이 신호는 독립된 이벤트일 수 있습니다.
- 메인보드 로직(포트)에 의해 특별히 간주되는 장소에 대한 I/O 액세스를 통해 시스템 소프트웨어에 의해 트리거되는 소프트웨어 SMI0B2h가 일반).[16]
- 프로세서 칩이 동작하도록 펌웨어가 요구한 장소에 대한 I/O 쓰기.
SMM을 입력하면 프로세서는 레지스터 CS = 3000h 및 EIP = 8000h를 사용하여 주소 SMBASE(SMBASE 레지스터 콘텐츠) + 8000h(기본값 38000h)에서 첫 번째 명령을 찾습니다.CS 레지스터 값(3000h)은 SMM에 있을 때 프로세서가 리얼 모드메모리 주소를 사용하기 때문입니다.이 경우 CS의 가장 오른쪽 끝에0h 가 붙습니다
문제
디자인으로, 운영 체제 또는 해제하세요. 이 사실 때문에 악성 rootkits에, 이것은 목표 국가 안보국의"이식"[19]포함 in,[17][18] 있는 것은 SMI를 재정의할 수 없는 같은 company,[21]의 J-series 라우터를 위한 DSCHOOLMONTANA firewalls,[20]는 SOUFFLETROUGH 주니퍼 네트웍스의 특정 하드웨어에 대한 개별적인 코드 이름이 있EITYBOUNCE DELL,[22]에또는 HP Proliant [23]서버용 IROCHEF입니다.
부적절한 설계와 테스트가 불충분한 SMM BIOS 코드는 PAE나 64비트 롱 모드 등의 [24]다른 x86 동작 모드를 중단할 때 잘못된 가정을 하고 제대로 작동하지 않을 수 있습니다.Linux 커널의 설명서에 따르면 2004년경에는 인텔 E7505 [10]칩셋을 탑재한 메인보드 등 USB 레거시 지원 기능의 버그가 크래시의 일반적인 원인이었습니다.
SMM 코드(SMI 핸들러)는 시스템펌웨어(BIOS)에 의해 인스톨 되기 때문에 OS와 SMM 코드에 호환되지 않는 하드웨어 설정이 있는 경우가 있습니다.예를 들어 Advanced Programmable Interrupt Controller(APIC; Advanced Programmable Interrupt Controller)의 셋업 방법에 대한 의견이 다릅니다.
SMM 에서의 동작은, 애플리케이션, operating·시스템의 커널, 하이퍼바이저로부터 CPU 의 시간을 빼앗습니다.각 SMI 에서는 모든 코어가 모드를 [25]전환하기 때문에, 멀티 코어 프로세서의 효과가 확대됩니다.CPU 상태는 메모리(SMRAM)에 저장해야 하며 모든 라이트백캐시를 플래시해야 하기 때문에 SMM의 입출력 전환에도 약간의 오버헤드가 발생합니다.이로 인해 실시간 동작이 파괴되어 클럭틱이 손실될 수 있습니다.Windows 및 Linux 커널에서는 SMI 타임아웃 설정이 정의되어 있습니다.이 기간 동안 SMM 핸들러는 운영체제에 제어를 반환해야 합니다.그렇지 않으면 SMI가 정지하거나 크래쉬합니다.
SMM은 타이밍 요건이 제한된 실시간애플리케이션의 동작을 방해할 수 있습니다.
CPU가 SMM(CPU의 [15]SMIACT#핀의 상태를 확인하는 것)에 들어갔는지 아닌지를 판단하기 위해서 논리 분석기가 필요할 수 있습니다.SMI 핸들러 코드를 복구하여 버그, 취약성 및 비밀을 분석하려면 논리 분석기 또는 시스템 펌웨어 분해가 필요합니다.
「 」를 참조해 주세요.
- Coreboot – 일부 칩셋용 오픈 소스 SMM/SMI 핸들러 구현 포함
- 인텔 80486SL
- 로드
- MediaGX – SMM을 통해 존재하지 않는 하드웨어를 에뮬레이트하는 프로세서
- 링 -3
- Unified Extensible Firmware Interface(UEFI)
- 기본 입출력 시스템(BIOS)
레퍼런스
- ^ Domas, Christopher (2015-07-20). "The Memory Sinkhole" (PDF). Black Hat. Retrieved 2015-08-22.
- ^ Tereshkin, Alexander and Wojtczuk, Rafal (2009-07-29). "Introducing Ring -3 Rootkits" (PDF). Invisible Things Lab, Black Hat USA. p. 4. Retrieved 2015-08-22.
{{cite web}}
: CS1 maint: 작성자 파라미터 사용(링크) - ^ "SMIs Are EEEEVIL (Part 1)". msdn.com. Microsoft.
- ^ "AMD Am386SX/SXL/SXLV Datasheet" (PDF). AMD.
- ^ https://documentation-service.arm.com/static/5ed11e40ca06a95ce53f905c?token=[베어 URL PDF]
- ^ "Intel 64 and IA-32 Architectures Developer's Manual: Vol. 3B" (PDF). Intel.
- ^ 인텔 64 및 IA-32 소프트웨어 개발 매뉴얼, Vol. 3, 시스템 매니지먼트 모드
- ^ "SMIs Are EEEEVIL (Part 2)". msdn.com. Microsoft.
- ^ "System Management Mode - OSDev Wiki". wiki.osdev.org. Retrieved 2020-09-12.
- ^ a b Vojtech Pavlik (January 2004). "Linux kernel documentation: USB Legacy support". kernel.org. Retrieved 2013-10-06.
- ^ Google Tech Talks – Coreboot – 00:34:30.
- ^ UEFI 플랫폼 초기화 사양.
- ^ Robert McMillan (2008-05-10). "Hackers find a new place to hide rootkits". InfoWorld.
- ^ Rob Williams (2015-08-07). "Researchers Discover Rootkit Exploit In Intel Processors That Dates Back To 1997". HotHardware.com.
- ^ a b 인텔의 시스템 매니지먼트 모드 (Robert R).콜린스.
- ^ US 5963738, "I/O 명령을 사용하여 시스템 구성 읽기/쓰기용 컴퓨터 시스템"
- ^ Shawn Embleton; Sherri Sparks; Cliff Zou (September 2008). "SMM Rootkits: A New Breed of OS Independent Malware" (PDF). ACM. Retrieved 2013-10-06.
- ^ "Hackers Find a New Place to Hide Rootkits". PC World. 2008-05-09. Retrieved 2013-10-06.
- ^ #1 Source for Leaks Around the World! (2013-12-30). "NSA's ANT Division Catalog of Exploits for Nearly Every Major Software/Hardware/Firmware LeakSource". Leaksource.wordpress.com. Retrieved 2014-01-13.
- ^ "Schneier on Security: SOUFFLETROUGH: NSA Exploit of the Day". Schneier.com. 2013-12-30. Retrieved 2014-01-13.
- ^ "Schneier on Security: SCHOOLMONTANA: NSA Exploit of the Day". Schneier.com. 2008-05-30. Retrieved 2014-01-16.
- ^ "Schneier on Security". schneier.com.
- ^ "Schneier on Security: IRONCHEF: NSA Exploit of the Day". Schneier.com. 2014-01-03. Retrieved 2014-01-13.
- ^ http://images0.cnitblog.com/cnitblog_com/yuhensong/mode.JPG[베어 URL 이미지 파일]
- ^ Brian Delgado와 Karen L. Karavanic, "시스템 관리 모드의 성능 영향", 2013년 IEEE 워크로드 특성에 관한 국제 심포지엄, 9월 22-24일, 포틀랜드 또는 미국
추가 정보
- 미국 특허 5175853, James Kardach; Gregory Mathews & Cau Nguyen 외, 1992-12-29 발행, 1992-12-29 발행, Intel Corporation에 할당
- AMD Hammer BIOS 및 커널 개발자 가이드, 제6장 (2008년 12월 7일 원본에서 아카이브)
- 인텔 64 및 IA-32 아키텍처 개발자 매뉴얼, Volume 3C, 제34장