Windows UEFI 펌웨어 업데이트 플랫폼 기능 유효성 검사

이 문서에는 Windows UEFI 펌웨어 업데이트 플랫폼 기능을 승인하기 전에 통과해야 하는 기본 유효성 검사 시나리오가 나열되어 있습니다.

필수 구성 요소

  • 각 EFI ESRT(시스템 리소스 테이블) 항목에 대해 최신 펌웨어 버전용 캡슐이 필요합니다. 시나리오에서는 최신 버전을 X라고 합니다. 각 ESRT 항목은 고유한 GUID를 사용하여 식별됩니다.
  • 노출된 각 ESRT 항목에 대해 1단계에서 만들어진 패키지보다 버전이 증가하는 캡슐 패키지를 만듭니다. 이 캡슐을 X+1이라고 합니다.
  • 페이로드가 유효하지 않은 PK로 서명되지 않았거나 서명되지 않은 캡슐과 같은 실패 조건을 시뮬레이션할 수 있도록 하는 캡슐입니다.
  • 사용할 모든 캡슐이 OS 관점에서 적절하게 서명되었는지, 카탈로그 서명 및 펌웨어 서명, PK 서명이 되어 있는지 확인합니다. 부정적인 PK 서명 사례를 구체적으로 테스트하지 않는 한. 캡슐 또는 펌웨어 드라이버 패키지에 서명하는 방법에 대한 자세한 내용은 사양의 "펌웨어 드라이버 패키지 서명"을 참조하세요.

방법

새 캡슐을 설치하거나 이전에 설치된 캡슐을 다시 설치합니다.

  1. 디바이스 관리자를 엽니다.
  2. 펌웨어를 나타내는 디바이스 노드를 찾습니다. 일반적으로 "펌웨어 디바이스 아래에 있습니다.
  3. 업데이트하려는 펌웨어 디바이스를 마우스 오른쪽 단추로 클릭합니다.
  4. 드라이버 소프트웨어 업데이트를 선택합니다. "드라이버 소프트웨어 업데이트 - <펌웨어>"라는 팝업이 표시됩니다.
  5. 컴퓨터에서 드라이버 소프트웨어 찾아보기를 선택합니다.
  6. 다음 창에서 내 컴퓨터의 디바이스 드라이버 목록에서 직접 선택을 선택합니다.
  7. 이전에 드라이버를 설치한 경우 호환 하드웨어 표시 상자에서 선택합니다. 디스크가 없으면 디스크 있음을 선택하고 계속 진행합니다. 그렇지 않으면 확인을 선택하고 시스템을 다시 부팅합니다.
  8. 디스크 있음을 선택하면 디스크에서 설치라는 팝업이 표시됩니다.
  9. 찾아보기를 사용하여 설치하려는 펌웨어 캡슐이 있는 디렉터리로 이동합니다.
  10. 해당 디렉터리에서 INF 파일을 선택하고 확인을 눌러 설치합니다.
  11. 설치하는 동안 드라이버가 서명되지 않았다는 팝업이 표시되면 이 드라이버를 수락합니다.
  12. 시스템에서 다시 부팅을 요청합니다.
  13. 펌웨어용 캡슐을 설치한 후 다시 부팅해야 합니다. 여러 캡슐 패키지를 설치하려면 모든 캡슐이 설치될 때까지 다시 부팅을 기다렸다가 최종 캡슐에서 다시 부팅합니다.

버전 및 상태 세부 정보 쿼리

스크립트를 실행하려면

  1. 관리자 권한으로 PowerShell을 실행합니다.
  2. Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force (이 작업은 한 번만 수행하면 됩니다.)
  3. 지정된 GUID의 버전 및 상태 세부 정보를 표시합니다. 예: .\QueryVersionAndStatus.ps1 6bd2efb9-23ab-4b4c-bc37-016517413e9a
  4. 펌웨어 업데이트가 성공했는지 유효성 검사: 사양 문서의 "펌웨어 업데이트 상태 유효성 검사" 섹션을 참조하세요. 마지막 시도 상태 및 현재 버전이 예상 버전과 일치하는지 확인합니다.
  5. 권장 사항: 업데이트 중인 디바이스도 여전히 작동하는지 확인합니다.
  6. 롤백 정책 설정: 일부 시나리오에서는 펌웨어 롤백이 필요할 수 있습니다. 롤백은 프로덕션 시나리오가 아닙니다. 롤백하려면 레지스트리 정책 키를 만들어야 합니다. "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FirmwareResources\{<GUID>} 노드 아래에 정책이라는 이름의 REG_DWORD 키를 만들고 정책 키 값을 1로 설정합니다. GUID는 ESRT의 실제 GUID로 바꿔야 합니다.

시나리오

S1: 각 ESRT 항목은 캡슐을 통해 성공적으로 업데이트할 수 있습니다.

플랫폼에서 지원하는 각 ESRT 항목에 대해 다음 단계를 완료해야 합니다. 즉, UpdateCapsule을 통해 펌웨어 업데이트를 지원하는 시스템 펌웨어 및 각 디바이스 펌웨어에 대한 것입니다.

S1 단계

  1. 각 ESRT 항목에 대해 펌웨어 버전 X용 캡슐을 설치합니다.
  2. 다시 부팅하기 전에 위의 모든 캡슐이 설치되어 있는지 확인합니다.

S1 예상 결과

업데이트된 각 ESRT 항목에 대해 펌웨어 업데이트가 성공해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음을 유효성 검사합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X
  • 마지막 시도 상태 = 0(STATUS_SUCCESS)

S2: 최신 펌웨어 버전 X도 X+1로 업데이트할 수 있습니다.

플랫폼에서 지원하는 각 ESRT 항목에 대해 다음 단계를 완료해야 합니다. 즉, UpdateCapsule을 통해 펌웨어 업데이트를 지원하는 시스템 펌웨어 및 각 디바이스 펌웨어에 대한 것입니다.

시즌 2 단계

  1. 위의 시나리오 S1을 완료합니다.
  2. 각 ESRT 항목에 대해 펌웨어 버전 X+1용 캡슐을 설치합니다.

S2 예상 결과

업데이트된 각 ESRT 항목에 대해 펌웨어 업데이트가 성공해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음을 유효성 검사합니다.

  • 현재 펌웨어 버전 = X+1
  • 마지막 시도 버전 = X+1
  • 마지막 시도 상태 = 0(STATUS_SUCCESS)

S3: 실패 시 펌웨어 업데이트는 사양에 정의된 올바른 상태 코드를 반환합니다.

상태 코드는 "ESRT 마지막 시도 상태 필드 값"이라는 제목의 테이블에서 "UEFI 시스템 리소스 테이블 정의"라는 섹션에 정의되어 있습니다.

S3.1 배터리 부족 및 UEFI 시스템 펌웨어 업데이트

S3.1 단계

  1. 배터리 충전량을 25% 미만으로 낮추고 AC 전원을 연결합니다.
  2. UEFI 시스템 펌웨어 버전 X+1용 캡슐을 설치합니다. 현재 버전이 X라고 가정할 예정입니다.
  3. 다시 부팅하기 전에 배터리 충전량이 25% 미만인지 확인합니다.

S3.1 예상 결과

펌웨어 업데이트가 실패해야 합니다. 시스템 펌웨어에 해당하는 ESRT 항목의 경우 다음을 유효성 검사합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X+1
  • 마지막 시도 상태 = 0xc00002de(STATUS_INSUFFICIENT_POWER)

S3.2 배터리 부족 및 디바이스 펌웨어 업데이트

S3.2 단계

  1. 배터리 충전량을 25% 미만으로 낮추고 AC 전원을 연결합니다.
  2. 펌웨어 버전 X+1이 있는 시스템에서 지원되는 모든 디바이스에 대한 캡슐을 설치합니다. 주어진 디바이스의 현재 펌웨어 버전이 X라고 가정합니다.
  3. 다시 부팅하기 전에 배터리 충전량이 25% 미만인지 확인합니다.

S3.2 예상 결과

펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음을 유효성 검사합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X+1
  • 마지막 시도 상태 = 0xc00002de(STATUS_INSUFFICIENT_POWER)

S3.3 배터리 부족, UEFI 시스템 및 디바이스 펌웨어 동시 업데이트

S3.3 Steps

  1. 배터리 충전량을 25% 미만으로 낮추고 AC 전원을 연결합니다.
  2. UEFI 시스템 펌웨어용 캡슐 및 버전 X+1의 모든 디바이스 펌웨어를 설치합니다.
  3. 다시 부팅하기 전에 배터리 충전량이 25% 미만인지 확인합니다.

S3.3 예상 결과

시스템 펌웨어 및 업데이트가 시도된 모든 디바이스 펌웨어에 대한 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음을 유효성 검사합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X+1
  • 마지막 시도 상태 = 0xc00002de(STATUS_INSUFFICIENT_POWER)

캡슐이 PK 서명되지 않은 경우 S3.4 펌웨어 업데이트가 실패해야 합니다.

플랫폼에서 지원하는 각 ESRT 항목에 대해 다음 단계를 완료해야 합니다. 즉, UpdateCapsule을 통해 펌웨어 업데이트를 지원하는 시스템 펌웨어 및 각 디바이스 펌웨어에 대한 것입니다.

S3.4 단계

  1. 각 ESRT 항목에 대해 서명되지 않은 페이로드인 캡슐 X+2를 만듭니다.
  2. 캡슐 X+2를 설치합니다. 현재 버전이 X라고 가정할 예정입니다.

S3.4 예상 결과

업데이트가 시도된 모든 ESRT 항목에 대해 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음을 유효성 검사합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X+2
  • 마지막 시도 상태 = 0xC0000022(STATUS_ACCESS_DENIED)

캡슐이 잘못된 PK 인증서로 서명되면 S3.5 펌웨어 업데이트가 실패해야 합니다.

플랫폼에서 지원하는 각 ESRT 항목에 대해 다음 단계를 완료해야 합니다. 즉, UpdateCapsule을 통해 펌웨어 업데이트를 지원하는 시스템 펌웨어 및 각 디바이스 펌웨어에 대한 것입니다.

S3.5 단계

  1. 각 ESRT 항목에 대해 캡슐 X+2를 만들고 잘못된 키 또는 인증서로 페이로드에 서명합니다(예: 프로덕션 디바이스에서 디버그 서명 캡슐 사용).
  2. 캡슐 X+2를 설치합니다. 현재 버전이 X라고 가정할 예정입니다.

S3.5 예상 결과

업데이트가 시도된 모든 ESRT 항목에 대해 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음을 유효성 검사합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X+2
  • 마지막 시도 상태 = 0xC0000022(STATUS_ACCESS_DENIED)

캡슐 페이로드가 변조되면 S3.6 펌웨어 업데이트가 실패해야 합니다.

플랫폼에서 지원하는 각 ESRT 항목에 대해 다음 단계를 완료해야 합니다. 즉, UpdateCapsule을 통해 펌웨어 업데이트를 지원하는 시스템 펌웨어 및 각 디바이스 펌웨어에 대한 것입니다.

S3.6 단계

  1. 각 ESRT 항목에 대해 캡슐 X+2를 만들고 올바른 키 또는 인증서로 페이로드에 서명합니다. 그런 다음 펌웨어 bin 파일을 열고 파일에서 1비트 이상을 뒤집고 파일을 다시 저장합니다.
  2. bin 파일 및 INF 파일에 대한 카탈로그를 재생성합니다.
  3. 캡슐 X+2를 설치합니다. 현재 버전이 X라고 가정할 예정입니다.

S3.6 예상 결과

업데이트가 시도된 모든 ESRT 항목에 대해 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음을 유효성 검사합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X+2
  • 마지막 시도 상태 = 0xC0000022(STATUS_ACCESS_DENIED) 또는 0xC000007B(STATUS_INVALID_IMAGE_FORMAT)

S3.7: 펌웨어가 LowestSupportedFirmwareVersion 이상의 롤백을 허용하지 않습니다.

다른 디바이스 펌웨어(낮은 우선 순위)에 대해서도 다음 단계를 수행해야 합니다.

S3.7 단계

  1. UEFI 시스템 펌웨어의 경우 시스템 펌웨어에 대한 ESRT 항목의 "LowestSupportedFirmwareVersion"이 X+1로 설정되도록 캡슐 X+1을 만듭니다.
  2. 캡슐 X+1을 설치하고 업데이트가 성공하는지 확인합니다.
  3. INF의 버전은 X+2이지만 실제 펌웨어 이진 파일은 버전 X가 되도록 UEFI 시스템 펌웨어 업데이트 캡슐을 만듭니다.
  4. 캡슐 X+2를 설치하고 시스템을 다시 부팅합니다.

S3.7 예상 결과

펌웨어 업데이트가 실패해야 합니다. 시스템 펌웨어에 해당하는 ESRT 항목의 경우 다음을 유효성 검사합니다.

  • 현재 펌웨어 버전 = X+1
  • 마지막 시도 버전 = X+2
  • 마지막 시도 상태 = 0xC0000059(STATUS_REVISION_MISMATCH)

S4: 원활한 복구 및 펌웨어 업데이트(구현된 경우)

이 시나리오는 원활한 복구 구현에 따라 플랫폼마다 다릅니다. 구현에 따라 유효성 검사를 수행하려면 시스템을 강제로 복구하는 불량 캡슐을 만들거나 업데이트 도중 또는 복구 흐름을 실행하는 다른 수단을 통해 전원을 차단해야 할 수 있습니다.

S4 예상 결과

시스템이 OS로 부팅되어야 하고 펌웨어 업데이트가 실패로 표시되어야 합니다. UEFI 펌웨어 리소스 디바이스에서 보고한 버전은 변경되지 않아야 합니다.

S5: 펌웨어 업데이트는 사용자 환경(UX) 요구 사항을 준수합니다.

S5 단계

  • 이 시나리오는 성공적인 펌웨어 업데이트로 이어지는 위의 시나리오를 실행하는 동안 유효성 검사될 수 있습니다.

S5 예상 결과

사용자 환경은 사양에 따릅니다. "사용자 환경" 섹션을 참조하세요.

  • 화면에 표시되는 유일한 텍스트는 "시스템 업데이트를 설치하는 동안 잠시만 기다려 주세요. 텍스트는 사양에 명시된 대로 화면의 오른쪽 좌표에 표시됩니다.
  • 사양에 설명된 대로 OEM 로고가 표시됩니다.

Windows UEFI 펌웨어 업데이트 플랫폼

UEFI 유효성 검사 옵션 ROM 유효성 검사 지침

QueryVersionAndStatus.ps1 PowerShell(PS) 스크립트