Oct 15, 2026BY leehojune
publicglitchingyubikey

Yubikey 5 Series 소개 및 voltage fault injection 가능성 분석

1. Introduction

지난 8월, OpenAI ChatGPT의 Daybreak Blue 모델이 Cyber 인증을 받은 사용자들에게 공개되었습니다. 이 때 OpenAI는 9월 1일부터 사이버 보안 모델에 접근하는 모든 개별 사용자들에게 고급 계정 보안 설정을 의무화하며, 물리적 FIDO2 하드웨어 보안키인 Yubikey를 등록해야만 Daybreak 모델을 사용할 수 있게 했습니다. 많은 해커들이 Yubikey를 구매하지 않고 뻐겨(?)봤지만, 결국 OpenAI의 상술에 굴복하고 Daybreak를 이용하기 위해 비싸게 Yubikey를 구매하게 되었습니다.
22849d6d-8eb5-42f1-9585-82a14e76d9cd.webp
cc730a32-891c-4cea-9b53-1dfb8de8f1c4.png
이번 글에서는 이렇게 2026년 해커들의 필수템이 된 Yubikey란 무엇인지와, Yubikey는 정말로 안전한지 간단하게 알아보겠습니다.

2. Yubikey란

YubiKey는 Yubico가 개발한 USB·NFC 방식의 하드웨어 보안 키로, 주로 웹사이트 로그인, 다중 인증(MFA), 패스키, 컴퓨터 로그인과 암호화 키 보호에 사용됩니다. OpenAI 번들에는 펌웨어 5.7.4가 설치된 YubiKey 5C Nano와 YubiKey 5C NFC가 포함되어 있습니다. 두 장치는 FIDO2, FIDO U2F, PIV, OpenPGP, YubiHSM Auth를 지원하지만, 일반 YubiKey 5와 달리 Yubico OTP와 OATH 기능은 제공하지 않는다고 합니다.
이전 글에서는 Trezor One의 STM32F205를 대상으로 한 voltage fault injection 프로젝트에 대해 소개했었습니다. Trezor One에서는 부팅 시점의 RDP 검사에 글리치를 주입해 디버그 보호 상태를 해제하는 방식으로 공격이 이루어졌었습니다. 그렇다면 Yubikey도 Trezor One과 마찬가지로 voltage fault injection 공격이나, 다른 하드웨어 공격이 가능할까요?
Yubikey도 USB에서 전원을 공급받는 작은 임베디드 장치이고, 내부에서 PIN을 검사하고 개인키로 서명하는 구조로 되어 있습니다. 이론적으로 fault injection이 가능할 것 같지만, fault를 발생시키는 것과 보안 속성을 깨트리는 것은 다른 문제입니다. Yubikey는 STM32같은 범용 MCU가 아니라 물리 공격을 고려해 설계된 Secure Element가 있기 때문에, Trezor One처럼 외부에 노출된 VCAP에 글리치를 주입해 RDP 검사를 건너뛰어 SWD로 메모리를 읽는 공격을 그대로 수행할 수는 없다고 합니다.

3. Yubikey 하드웨어 구조

Yubikey에는 여러 세대와 제품군이 있다고 합니다.
  • YubiKey Standard
  • YubiKey NEO
  • YubiKey 4 Series
  • YubiKey 5 Series
  • Security Key Series
  • YubiKey Bio Series
  • YubiKey 5 FIPS·CSPN Series
세대에 따라 칩과 내부 구조가 다르지만, 이 글에서는 현재 OpenAI 번들에 포함된 YubiKey 5C Nano와 YubiKey 5C NFC에 대해 분석하겠습니다.
4463ed23-fb05-4d7e-a9a3-977eaa5c390e.webp
항목YubiKey 5C NanoYubiKey 5C NFC
펌웨어5.7.45.7.4
Form factorNano, USB-CKeychain, USB-C
USB interfaceFIDO, CCIDFIDO, CCID
NFC없음활성화
FIDO2·U2F지원USB·NFC 지원
PIV·OpenPGP·YubiHSM Auth지원USB·NFC 지원
Yubico OTP·OATH제공되지 않음제공되지 않음
YubiKey 5는 Infineon의 SLE78 계열 Secure Element를 사용합니다. 공개된 자료로 확인할 수 있는 구체적인 부품은 다음과 같습니다.
대상펌웨어공개 자료에서 확인되는 칩
YubiKey 5 FIPS5.4.2·5.4.3SLE78CLUFX3000PH, SLE78CLUFX5000PH
YubiKey 5 FIPS5.7.4SLE78CLUFX5000P
OpenAI YubiKey 5C Nano5.7.4SLE78 계열로 추정
OpenAI YubiKey 5C NFC5.7.4SLE78 계열로 추정
SLE78 Infineon이 스마트카드와 보안 토큰을 위해 설계한 Secure Element 계열로, CPU와 비휘발성 메모리, 암호 연산기, USB 인터페이스를 통합한 보안 칩입니다. 일반 MCU와 달리 전압 및 클럭 이상, 메모리 조작, 사이드채널 분석과 같은 물리 공격을 고려해 설계되었으며, Infineon의 Integrity Guard 기술을 통해 두 CPU의 연산 결과를 비교하고 비정상 동작을 감지해 단순한 전압 glitch가 발생하더라도 보안 검사를 우회하기보다 장치가 오류를 반환하거나 reset될 가능성이 크다고 합니다.
e20698bb-6479-4a7b-9830-a71f600f2a39.jpg

4. Yubikey 펌웨어

YubiKey 5의 전체 펌웨어 소스와 바이너리 이미지는 공개되어 있지 않습니다. Yubico는 YubiKey 하드웨어와 그 안의 통합 펌웨어를 오픈소스로 공개한 적이 없으며, 대신 호스트에서 사용하는 도구와 라이브러리, 통합용 SDK와 프로토콜 자료를 주로 공개하고 있습니다. 공개된 yubikey-manager 저장소를 분석하면 YubiKey에 어떤 명령을 보내고 응답을 어떻게 해석하는지는 알 수 있지만, Secure Element 안에서 그 명령을 처리하는 실제 펌웨어 코드를 볼 수는 없습니다
ykman의 management 명령은 설정 페이지와 capability를 읽고 쓰지만, 임의의 NVM 주소를 지정하는 flashread 명령을 제공하지 않습니다. FIDO HID, CCID APDU, OTP HID 인터페이스에도 펌웨어 덤프 명령은 없다고 합니다. 일반적인 IoT 기기는 제조사가 배포한 업데이트 파일에서 펌웨어를 구할 수 있거나, 파일이 암호화되어 있어도 버전 간 diff, 헤더와 서명 구조, 업데이트 프로토콜을 분석할 수 있습니다. 그러나 YubiKey는 이 경로를 의도적으로 제공하지 않고, 한번 공장에서 펌웨어가 기록된 Yubikey를 다른 펌웨어로 업데이트하거나, 펌웨어를 변경 또는 제거하는 기능을 전부 막아두었습니다.
SLE78에는 일반 사용자에게 공개된 JTAG나 SWD 포트가 없고, 제조 이후에는 펌웨어가 수정되지 않도록 잠기게 됩니다. 또한 NVM과 내부 데이터 경로 자체가 보호되기 때문에, fault injection으로 펌웨어를 추출하려면 여러 단계를 우회해야 합니다.
현재까지는 Yubikey 5 펌웨어를 덤프한 공개된 사례가 없는데, 아예 불가능하지는 않지만 공격 경로를 찾는 난이도가 아주 높을 것 같습니다. 펌웨어가 한번 쓰여지면 업데이트도 되지 않기 때문에, 보안 취약점이 탐지되면 펌웨어를 업데이트하는게 아니라 새 펌웨어가 탑재된 제품으로 교체해야 하고, 따라서 Yubikey 취약점은 파급력이 클 것 같습니다.

5. Yubikey voltage fault injection 가능성 분석

Yubikey의 동작과 특성을 생각해봤을때 공격자가 노릴 수 있는 자산들은 다음과 같고, 각각의 공격 목표에 따라 필요한 글리치 지점도 달라집니다.
  • FIDO credential private key 또는 이를 생성하고 보호하는 내부 키
  • PIV·OpenPGP private key
  • PIN과 PIN retry counter
  • attestation private key
  • firmware code와 보안 설정
  • 사용자 터치와 user verification 상태
공격자가 글리치를 주입할 수 있는 경로는 먼저 USB 5V VBUS가 있습니다. 하지만 VBUS를 떨어뜨렸다고 내부 CPU 코어 전압이 같은 모양으로 떨어지는 것은 아닙니다. 패키지와 PCB의 디커플링, 내부 레귤레이터, brownout detector가 펄스를 필터링하거나 장치 전체를 리셋시킬 수 있다고 합니다.
NIST의 YubiKey 5 펌웨어 5.7.4 Security Policy에는 환경 실패 보호(EFP) 대신 환경 실패 시험(EFT)을 수행했으며, 정적 저전압 시험의 1.85 V 조건에서 모듈이 종료된다고 합니다. 그런데 이 수치가 글리치 파라미터는 아니라 실제 글리치를 시도해 본다면 글리치를 안정적으로 넣을 수 있는 글리치 깊이와 폭을 직접 찾아봐야 할 것 같습니다.
VBUS 글리칭이 칩 내부 연산에 충분히 전달되지 않을 수도 있는데, 이때는 Trezor One 글리칭처럼 IC의 실제 전원 핀과 디커플링 캐퍼시터를 찾아 글리치를 주입해야 합니다. SLE78은 일반 보드처럼 메인 MCU와 Secure Element 사이의 전원 라인이 드러나지 않을 수 있습니다. 내부 노드들이 패키지 밖으로 나오지 않으면 외부 voltage glitch만으로는 선택적인 폴트를 만들기 어려워지고, EMFI fault injection 등 다른 fault injection 방법을 시도해야 할 것 같습니다.
YubiKey의 전압 결함 주입에서 고려할 수 있는 공격 목표는 PIN 검증 우회, PIN 재시도 횟수 갱신 우회, 터치 확인 우회, 서명 연산 우회, 펌웨어 읽기 등이 있습니다. 이때 Yubikey는 일반 MCU와 다르게 Secure Element로 되어 있기 때문에 dual-CPU 실행 결과 비교, fault 발생 시 세션 상태 폐기 등 여러 보호 기법이 적용되어 있을 수 있습니다. 정확히 어떤 보호 기법이 적용되었는지는 펌웨어를 뜯어봐야 확실하지만, 펌웨어가 없는 상태에서 글리치를 시도한다면 정확한 시점에 글리치를 넣으면서 내부 검사도 통과할 수 있는 글리치를 찾는 것이 상당히 어려울 것 같습니다.
기존 Trezor One 실험에서는 리셋 해제 이후 부트 ROM이 RDP를 검사하는 시점을 예측해 글리치를 주입하고, SWD 연결 성공 여부로 결과를 즉시 판정할 수 있었습니다. 반면 Yubikey에는 성공을 판정할 수 있는 오라클이라고 할만한 것들이 명확하지 않기 때문에, 전압과 주입 시점에 따른 오류 응답을 체계적으로 수집해 재현 가능한 fault window를 찾는 것과 결과를 정확히 판별할 수 있는 방법을 찾는 것이 중요할 것 같습니다.

6. 공개된 Yubikey 취약점과 공격

2013년 Ruhr University Bochum 연구진은 YubiKey 2 펌웨어 2.2.3이 Yubico OTP를 생성할 때 발생하는 소비 전력과 전자기 방사를 반복 측정해 전체 AES-128 key를 복구했습니다. 해당 공격은 디캡슐레이션 없이 수행할 수 있고 눈에 띄는 물리적 흔적도 남기지 않아, 복구한 key로 장치를 돌려준 이후에도 유효한 OTP를 생성할 수 있었습니다. Yubico는 부채널 대응이 추가된 펌웨어 2.4를 2013년부터 배포해 해당 취약점을 패치했습니다.
2024년 NinjaLab이 공개한 EUCLEAK은 Yubikey 5 Series에서의 대표적인 하드웨어 공격입니다. 연구진은 Infineon SLE78 계열의 ECDSA 구현에서 modular inversion이 상수 시간으로 동작하지 않는 문제를 발견해 YubiKey 5Ci의 ECDSA 연산 중 전자기 누설을 측정해 nonce에 관한 정보를 얻고, FIDO credential private key를 복구하는 공격을 보였습니다. 해당 공격의 영향을 받는 펌웨어는 Yubikey 5 Series 5.7 미만으로, OpenAI 번들에 포함된 Yubikey는 패치가 적용된 버전이라고 합니다.
492ee6d7-b9ed-458a-9403-b7d65918574a.jpg
물리적 부채널 외에도 다음과 같은 YubiKey 내부 구현 취약점이 공개되었습니다.
연도사례공격 결과 또는 영향영향 대상
2015OpenPGP PIN 검증 논리 오류일부 상태에서 PIN 없이 서명·복호화·인증 수행YubiKey NEO OpenPGP applet 1.0.9 이하
2017ROCA, CVE-2017-15361공개 RSA key로부터 private key 계산 비용 감소YubiKey 4 펌웨어 4.2.6~4.3.4에서 내부 생성한 PIV·OpenPGP RSA key
2018OATH applet 암호 제거물리적으로 장치를 가진 공격자가 OATH 암호를 제거하고 OTP code 열람구형 YubiKey NEO, applet 1.0.1 미만
2019FIPS 초기 난수 약화전원 인가 직후 일부 ECDSA signature·인증 값의 예측 가능성 증가YubiKey FIPS 펌웨어 4.4.2·4.4.4
2020NFC NDEF access code 미검사, CVE-2020-15001설정에 따라 NFC에 허용하지 않은 OTP·static password 노출 가능YubiKey 5 NFC 5.0.05.2.6·5.3.05.3.1
2024FIDO RP enumeration, CVE-2024-35311PIN prompt 없이 일부 discoverable credential의 등록 서비스 열람YubiKey 5 Series 5.4.3 이하
2025PIN/UV Auth Protocol 2 검증 길이 오류, CVE-2025-2999132-byte HMAC 중 16 byte만 검증YubiKey 5 Series 5.4.1~5.7.3
2015년 OpenPGP 사례는 PIN 우회가 실제로 발생할 수 있음을 보여 주지만 fault injection이 아니라 조건문 오류였습니다. ROCA도 Secure Element를 물리적으로 공격한 것이 아니라 Infineon RSA key 생성 알고리즘의 수학적 구조를 이용했습니다. 2019년 FIPS 사례는 전원 인가 직후의 상태가 암호 연산의 안전성에 영향을 주었다는 점에서 fault injection 연구와 연결되지만, 공격자가 글리치를 주입해 만든 현상은 아니었다고 합니다. FIDO RP enumeration은 private key나 credential을 추출하지 않고 등록된 서비스의 일부를 알아내는 privacy 문제였습니다. PIN/UV Auth Protocol 2 문제도 인증 태그가 완전히 무력화된 것이 아니라 원래 요구되는 길이보다 짧은 128-bit 부분만 검증한 문제였습니다. 두 취약점 모두 이 글의 대상인 펌웨어 5.7.4에는 적용되지 않습니다.
Yubico의 호스트 소프트웨어에서도 여러 취약점이 공개됐습니다. 예를 들어 2021년 pam-u2f 1.1.0의 NULL PIN 처리 오류는 설정에 따라 로컬 PIN 요구를 우회할 수 있었고, 2025년 pam-u2f 1.3.1 미만에서는 PAM_IGNORE·nouserok 처리 때문에 일부 구성에서 인증이 생략될 수 있었습니다. 2024년 YubiKey Manager GUI에서는 Windows 권한 상승 문제가, 2026년에는 libfido2·python-fido2·YubiKey Manager의 DLL search path 문제와 webauthn-server-core의 사용자 사칭 문제가 공개됐습니다.

7. Conclusion

Yubikey는 Secure Element를 중심으로 설계되었지만, 공격이 아예 불가능한 것은 아닙니다. 구현상의 취약점이 존재할 수도 있고, EUCLEAK과 같이 Yubikey 5에서도 하드웨어 공격이 가능하다는 것이 입증되었습니다. 그렇지만 Yubikey는 Trezor One처럼 voltage glitching을 쉽게 할 수 있는 대상도 아닐 것으로 보입니다. Trezor One은 하드웨어와 펌웨어 모두 오픈소스로 구현되어 있는 데다가, STM32F205의 전원 및 부트 관련 회로에 물리적으로 접근할 수 있 공격 환경을 구성하는데에도 용이했습니다. Yubikey는 펌웨어 전체와 Secure Element의 상세한 내부 구현이 공개되어 있지 않아 공격 지점과 실행 흐름을 분석하기가 상대적으로 어려울 것 같습니다. 언젠가는(?) Yubikey를 뜯어서 실제 회로를 확인하며 글리칭 시도를 해보고 성과를 내서 글을 쓸 날이 오면 좋겠습니다.

참고 자료

Comments (0)

Loading comments...

Please log in to leave a comment.

Log In