Offcanvas

디지털 디바이스 / 소비자IT / 악성코드

“3대 바이오스 벤더 모두 허술, 수백 만 PC가 위험하다”··· 로고페일 공격 경보

2023.12.12 Lucian Constantin  |  CSO
BIOS 스플래시 화면 그래픽 기능을 활용해 PC의 UEFI로 악성 코드를 전달할 수 있음이 증명됐다.
 
한 보안 연구진이 UEFI 펌웨어 내 취약점을 악용하여 부팅 초기 단계에서 실행되는 루트키트 배포 공격을 고안했다. UEFI가 다수의 컴퓨터 회사가 사용된다는 점에서, 엔드포인트 보안 제품에 포착되지 않는다는 점에서 주의가 요구된다.

공격 기법은 악의적으로 제작된 이미지를 드라이브의 특수 파티션이나 펌웨어의 비보호 지역에 심는 것이다. 

보안 회사 바이날리(Binarly) 연구진은 보고서에서 “인텔(Intel), 에이서(Acer), 레노버(Lenovo) 등 다양한 업체의 소비자 장치 및 기업급 장치 수백 만 대가 잠재적으로 취약하다. 정확히 어떤 장치가 취약한지는 아직 파악 중이다. 그러나 주목할 점은 3대 독립 BIOS 업체(AMI, 인사이드(Insyde), 피닉스(Phoenix)) 모두 펌웨어의 일부로 출고하는 이미지 분석기와 관련된 여러 보안 문제에 취약하다는 사실이다”라고 밝혔다. 
 
Image Credit : Getty Images Bank

스플래시 화면을 통해 전달되는 악성 코드
대부분의 PC 제조업체는 독립 BIOS 업체가 개발한 통합 확장 가능 펌웨어 인터페이스(UEFI)를 사용한다. UEFI는 표준화된 컴퓨터 시스템 펌웨어 사양(예전 BIOS의 현대판)이다. 하드 드라이브에 설치된 운영 체제를 불러들이기 전에 컴퓨터 하드웨어 초기화를 담당하는 저수준 코드를 포함하어 있다.

여러 독립 BIOS 업체의 UEFI를 사용하는 컴퓨터 제조업체는 펌웨어를 맞춤화 할 수 있다. 예를 들면, 초기 부팅 단계가 진행되는 동안 컴퓨터 화면에 자사 로고를 비롯한 여러 브랜딩 요소를 표시할 수 있다. 이를 스플래시 화면(splash screen)이라고도 한다. 

스플래시 화면이 표시된 후에는 운영 체제 부트로더로 넘어가 OS 커널 초기화가 진행된다. 바이날리 연구진은 이 초기 부팅 과정의 꾸밈 기능을 악용할 가능성에 주목했다. 로고페일(LogoFAIL)이라는 별칭을 붙인 이유다.

컴퓨터 제조업체는 이미지를 제공해 스플래시 화면 그래픽을 구현한다. 이는 펌웨어에 스플래시 화면 그래픽을 표시하기 위한 이미지 분석 코드가 포함되어 있다는 의미다. 보안 분야에 익숙한 사람이라면 잘 알다시피, 파일 분석기(일명 디코더)는 심각한 취약점의 원천이다. 사용자가 제공한 입력 값을 파일 형태로 가져와 그 내용을 해석한 후 컴퓨터의 메모리 내부로 불러들이기 때문이다. 이 작업이 안전하게 수행되지 않으면 버퍼 초과 같은 메모리 손상 문제로 이어질 수 있다.

최신 UEFI 펌웨어에는 다양한 형식(BMP, GIF, JPEG, PCX, TGA)의 이미지를 처리하기 위해 복수의 이미지 분석기가 포함되어 있다. 그 결과, 공격 표면이 넓어진다. 실제로 바이날리 팀은 인사이드, AMI, 피닉스 펌웨어에 사용된 이미지 분석기에서 29개의 문제를 발견했으며 그중 15개는 임의적 코드 실행에 악용될 수 있었다.

바이날리 연구진은 기술 논평을 통해 다음과 같이 기술했다. 
 

“이러한 결과를 통해 로고페일이 미치는 파급 범위를 알 수 있다. 독립 BIOS 업체마다 분석기 내부에 악용 가능한 버그가 적어도 하나 있으며 모든 분석기에 버그가 있다. 유일한 예외는 인사이드의 PNG 분석기였다. 이 분석기는 오픈소스 프로젝트 기반으로 이미 커뮤니티에서 충분히 테스트를 거쳤을 가능성이 높다. CWE 칼럼에서 확인할 수 있는 바와 같이, 우리는 0으로 나누기 예외부터 널 포인터 역참조, 배열 경계를 벗어난 읽기에서부터 힙 오버플로까지 등 다양한 버그 유형을 많이 발견했다.”


바이날리 팀은 이들 취약점을 퍼즈 테스트(퍼징 ; fuzzing))를 통해 발견했다. 퍼징이란 자동으로 기형적이거나 예상 밖의 입력값을 생성하여 이를 대상 애플리케이션에 공급한 후 해당 애플리케이션의 행동을 관찰하는 것이다. 애플리케이션에 오류가 발생한다면 대개 메모리 손상이 발생했다는 뜻이므로 근본 원인을 조사하여 해당 손상을 통제된 방식으로 촉발하고 악용할 수 있는지, 따라서 보안에 활용할 수 있는지 여부를 확인한다.

퍼징은 여러 해를 거쳐 표준 프로세스로 자리잡았고 이제 조직에서 개발 단계에 사용하는 대부분의 코드 보안 테스트 도구에 통합되어 있다. 바이날리 팀이 펌웨어에서 악용 가능한 오류를 그토록 많이 발견한 것에 놀란 이유다. 

연구진은 “퍼징에 이어 버그 분류 작업을 실시한 결과, 이들 이미지 분석기 중 독립 BIOS 업체나 OEM에 의해 테스트를 거친 것은 아무것도 없음이 명백하게 입증됐다”라고 결론지었다. 

이어 “그렇다고 자신 있게 말할 수 있는 이유는 우리가 테스트한 거의 모든 분석기에서 오류를 발견했기 때문이다. 또한, 퍼징 실행기는 불과 몇 초 만에 첫 오류를 발견할 수 있었고 더 심한 경우 특정 분석기는 인터넷에서 발견된 유효한 이미지에서도 오류를 일으켰다”라고 말했다.

펌웨어 보안 기능 우회
악성 코드를 초기에 컴퓨터의 부트로더나 BIOS/UEFI 펌웨어 자체에 심는 것은 새로운 기법이 아니다. 이러한 부트 수준 루트키트(부트키트) 프로그램 기법은 공격자에게 엄청나게 유리하다. 코드가 운영 체제 시작 전에 실행되므로 OS 자체 내부에 설치된 모든 종단 보안 제품의 눈에 띄지 않기 때문이다.

저수준 부트키트 코드는 대개 부팅 단계에서 로딩될 때 OS 커널에 악성 코드를 주입한다. 주입된 코드는 사용자가 설치한 프로그램의 눈에 띄지 않기 위해 커널의 기능을 사용한다. 이처럼 스스로를 감추며 루트(커널) 권한으로 실행되는 맬웨어가 루트키트의 일반적인 개념이다. 

최신 UEFI 펌웨어는 이런 공격에 대비한 여러 방어책이 함께 제공된다(컴퓨터 제조업체에서 설정한 경우). 예를 들어, UEFI 시큐어 부트(UEFI Secure Boot)는 부팅 과정에서 불러온 코드가 신뢰할 수 있는 키로 암호화 서명되었는지 여부를 확인하는 기능이다. 

여기에는 OS로 넘어가기 전에 다양한 하드웨어 구성요소를 초기화하는 데 필요한 펌웨어 드라이버(일명 옵션 ROM), 펌웨어 자체 내에서 실행되는 EFI 애플리케이션, 운영 체제 부트로더, 기타 구성요소가 포함되어 있다. 인텔 부트 가드(Intel Boot Guard)는 OEM 키 저장 암호화 신뢰 루트를 확립할 하드웨어 방식을 제공한다.

부트 가드와 시큐어 부트가 설정된 시스템에서는 로고페일 취약점의 악용이 미연에 방지되어야 마땅하지만 안타깝게도 항상 그렇지는 않다. 그 이유는 독립 BIOS 업체가 컴퓨터 제조 업체에게 로고 맞춤화 수단을 제공할 때 부트 가드 서명 실행은 적용되지 않은 경우가 있기 때문이다.

예를 들어, 일부는 EFI 시스템 파티션(ESP)에서 업체가 제공한 이미지를 검색한다. ESP란 EFI가 OS 부트로더 코드를 비롯한 다양한 애플리케이션을 검색하는 하드 디스크 드라이브 내 특수 파티션이다. 이 경우 공격자는 OS 상에 관리자 권한만 있으면 ESP 파티션에 악성 로고를 넣은 후 NVRAM 변수를 변경하여 강제로 시스템을 재부팅 할 수 있게 된다.

이렇게 되면 UEFI 펌웨어는 악성 로고를 불러들이게 된다. 그 결과, 식별된 취약점 가운데 하나가 악용되어 악성 코드가 실행되고 정상적인 실행 흐름을 탈취한다. 이는 드라이버 실행 환경(DXE)이라는 부팅 과정의 필수 단계에서 발생하게 된다. 

OEM에서 로고 맞춤화를 위해 독립 BIOS 업체들이 제공하는 도구가 악용될 수도 있다. 패칭 펌웨어 캡슐로 로고를 추가한 뒤 플래시 ROM에 캡슐을 플래시 하는 도구다. 공격자는 동일한 펌웨어 플래시 도구를 사용하여 악성 로고를 주입할 수 있다. 단, 로고가 디지털 서명된 펌웨어 코드 블록의 일부가 아닌 경우에 한해서다. 

펌웨어에 저장된 로고가 인텔 부트 가드나 이에 준하는 AMD의 하드웨어 검증 부트(HVB)가 적용되는 영역에 있지 않는 경우라면, 또 공격자가 만일 공급망 또는 유통망 내 어떤 곳에서 물리적으로 장치에 접근할 수 있다면 SPI 플래시 프로그래머 도구를 사용하여 펌웨어를 저장하는 플래시 칩을 다시 프로그래밍할 수 있다.

델(Dell)과 같은 일부 컴퓨터 업체는 인텔 부트 가드가 적용되는 펌웨어 블록 내부에 로고를 배포하며 ESP에 저장되는 이미지 같은 추가적인 로고 사용자화 수단을 제공하지 않는다. 따라서 로고페일 공격에 취약하지 않다. 

연구진은 “그러나, 이들 장치가 당장 위험에 처한 것은 아니지만 포함된 이미지 분석기에는 여전히 심각성 높은 취약점이 있으며 이는 자칫하면 보안 문제로 변할 위험이 있으므로 해결해야 한다”라고 강조했다.

로고페일 취약점 완화하기
현재 취약한 독립 BIOS 업체(인사이드, AMI, 피닉스)는 모두 보안 경고를 발표했으며 업데이트된 펌웨어 이미지를 공개하기 위해 OEM과 협력 중이다. 최종 사용자는 최대한 빨리 각자 해당 컴퓨터 제조업체의 웹사이트에서 취약 모델에 맞는 UEFI 업데이트를 확인한 후 적용해야 한다.

연구진은 “어떤 방식으로든 이들 업체가 구동하는 거의 모든 장치에 로고페일이 영향을 미치는 것으로 추정하고 있다. 또한, 이는 특정 하드웨어에 국한되지 않으며 x86 또는 ARM 기반 장치에서 성공적으로 악용될 수 있다”라고 말했다. 

이들 취약점은 피닉스 펌웨어의 경우 CVE-2023-5058로, AMI 펌웨어는 CVE-2023-39538 및 CVE-2023-39539로, 인사이드 펌웨어는 CVE-2023-40238 로 각각 추적된다. 취약 PC 업체 중 한 곳인 레노버는 자체 보안 고지와 함께 취약 모델 및 지금까지 이용 가능한 업데이트가 기재된 목록을 공개했다. ciokr@idg.co.kr
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
Sponsored
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.