이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

[Fault Injection] SoK: Analysis of Fault Injection Attacks

  • 2026.01.08 15:29
  • 📚 공부
반응형

 

 

 

Fault Injection은 시스템이 예상하지 못한 에러 상황에서 어떻게 동작하는지 확인하기 위해 의도적으로 에러를 넣는 작업을 의미한다.

이게 뭐임? 싶은데 정말 간단한 예시를 들자면.. 오락실 딱딱이를 생각하면 됨.. 

 

 

딱딱이..

 

 

 

보통 딱딱이에서 발생하는 강한 신호로 동전 인식기 전선에 전류를 보내 CPU가 동전 넣을 때랑 같은 전기 신호가 들어왔다고 착각하게 만들어 coin++를 실행하는 방식을 사용하지만 다른 방식으로 사용할 수도 있음.

 

coin--;
if (coin == 0) {
  game_over();
}

 

 

오락실 기계에 저런 코드가 있다고 치자. CPU가 if (coin == 0) 조건을 확인하기 위해 레지스터 값을 비교하고 분기 태울 때 딱딱이 on 

이러면 전자기 신호로 비트가 튀어서 0이어야 할 값이 1로 바뀌고 if문을 통과할 수도 있고, 조건이 true여도 false 쪽으로 가도록 우회할 수도 있음.

 

요점은 하드웨어에 충격을 주고 그 위에서 돌아가던 소프트웨어에 논리적 오류를 발생시키는 것.. 

 

 

 

 

원래대로라면 공이 왼쪽이나 오른쪽으로 빠져야 함. 

그런데 딱딱이로 전압을 흔들어버리면 공이 꼭대기에 아슬아슬하게 걸쳐있는 상태가 된다. 

 

전기적으로는 0과 1을 판별하는 Threshold 사이의 어중간한 전압이 흐르는 상태고.. CPU는 이게 0인지 1인지 결정할 수 없다.

Glitching의 목적은 저 Metastability를 유도하는것.

 

흐름을 정리하면 다음과 같음.

 

1. Single Event Transient : 회로에 순간적인 전기적 노이즈가 발생한다.

2. Metastability : 노이즈가 CPU 내부의 Flip-Flop에 도달해 0인지 1인지 모르는 상태로 만들어버림.

3-1. Single Event Upset : 클럭이 지나갈 때 억지로 결정된 값 때문에 메모리나 레지스터에 저장된 비트 값이 바뀐다.

3-2. Instruction Skip : Program Counter에서 Metastability가 발생해 해당 명령어가 유효하지 않다고 판단하고 넘어가버린다.

 

SET가 발생한다고 무조건 Metastability가 생기는건 아님. 타이밍을 잘 잡아야 한다.

CPU는 클럭이 뛸 때만 데이터를 확인하는데, 그 직전에 전압이 흔들려야 Metastability를 유도할 수 있음.

 

Voltage, Clock, EMFI 모든 방법은 결국 Timing Constraint Violation을 유도한다.

즉, 세 가지 Glitching이 사실상 같은 공격이라는 것.. Setup Time을 지키지 못하게 해 Metastability를 유도하는게 목적임. 

 

Voltage Glitch

CPU 계산 결과를 확정짓는 순간 전압을 조작하는 방식이다.

전압이 충분하면 전기 신호가 제시간에 도착하는데, Voltage Glitch로 저전압으로 만들어버리면 제시간에 도착할 수 없음.

 

CPU가 if (password == correct) 구문을 계산할 때 전압이 부족해지면 제대로 계산하지 못하고 저 구문을 그냥 통과시켜버림.

구현하는 방법으로는 세 가지가 있다.

 

Underpowering : 전압을 계속 낮게 유지해서 속도를 전체적으로 낮춤

Negative Glitch : 계산하는 순간에만 전압을 조작함

Positive Glitch : 갑자기 전압을 많이 줘서 전압이 넘치도록 유도함 (결과는 저전압과 같다)

 

 

Clock Glitch

아까는 전압 자체를 조작했다면 여기서는 전기 신호의 도착 지점을 조작한다.

전기 신호가 전달될 때 클럭 신호를 강제로 발생시키면 마감 시간이 확 줄어들고, 신호가 도착하기 전에 문이 닫히면서 Setup Time이 위반됨.

 

Precisely Time Glitch : 공격할 명령어가 n번째 Clock에서 실행되는걸 알아내고 그 순간에 Glitch를 넣음

Fuzzy Glitch : 타이밍은 나도 모르겠고 그냥 무작위로 신호를 쏟아냄 

 

 

RowHammer

앞의 두 Glitch는 CPU를 대상으로 하는 공격이고, RowHammer는 DRAM을 대상으로 하는 공격이다. 

 

 

메모리는 좁은 공간에 수많은 Cell이 붙어있는 구조로 구성됨. 

특정 Row를 계속 계속 계속 읽어버리면 그 Row의 전압이 인접한 Row에 영향을 주게 되고 Bit-Flip이 발생한다.

즉, 장비로 전압을 깎아내는게 아니라 고속 메모리 접근으로 칩 내부의 전압 불안정을 유도한다. 

DRAM은 일정 시간마다 전기를 다시 채워줘야 데이터가 유지되는데, RowHammer는 리프레시 주기가 오기 전에 전하를 털어버림.

 

앞의 두 방식은 하드웨어 공격인데 RowHammer는 소프트웨어로 구현된 공격이다. 

 

 

Laser Fault Attack 

반도체 칩에서 실리콘 쪽에다 특정 레이저를 쏘면 순간적으로 Photoelectric Current가 흐른다.

이 전류가 전압을 낮추고 논리게이트의 값을 조작하게 됨. 

 

 

 

Controllable Laser : 뚜따하고 현미경으로 보면서 특정 레지스터나 특정 명령어 하나만 찝어서 바꿔버림 

Low-Cost Laser : 정밀 저격은 안되는데 무작위성 결함을 발생시키는건 충분함

 

특정 지점만 조격하니 시스템 부하 패턴 변화가 거의 없어 탐지하기도 힘들다. 

일반적인 OS 지표로는 잡아내기 힘들고.. 하드웨어 수준에서 세부적인 모니터링으로 겨우 잡을 수 있음.

 

 

Electromagnetic Fault Injection

오락실 딱딱이의 본체... 장치가 타버리지 않을 정도로만 강하고 짧게 쏘는 방식이다. 

뚜따 할 필요도 없음.. 칩 가까이에 대고 강한 전류를 흘려보내면 전자기유도 법칙으로 내부 회로에 Transient Voltage가 발생함.

 

레이저보다 훨씬 저렴하면서 Glitch보다 훨씬 정교한 공격이 가능함.

 

칩 내부에 유도 전류가 흐르고, CPU는 연산 오류를 복구하기 위해 뭔가 추가 작업을 수행할 수 있음.

커널 예외처리나 파이프라인 중단 기록이 남으니 소프트웨어 수준에서 잡아낼 수 있을듯.. 

 

 

 

 

 

공격 기법들을 정리하면 위의 표가 완성됨.

앞서 말했듯 모든 문제의 시작은 하드웨어의 Metastability이고, 모든 문제의 목표는 SEU를 발생시키는 것. 

 

Glitching 공격들은 성공률은 낮아도 대충 50달러정도만 있으면 트라이 할 수 있으니.. 이걸 소프트웨어로 탐지하는게 중요할듯.. 

 

 

 

 


 

 

 

 

Glitch 공격으로 실제로 닌텐도 스위치, SpaceX 터미널을 뚫을 수 있고 딱딱이로 자동차를 제어하는 MCU를 뚫을 수 있음.

Laser 공격으로는 암호화폐를 저장하는 지갑을 해킹해 비밀번호 확인 절차를 통과하기도 했음. 

 

요즘은 해커들도 그냥 아무 생각 없이 딱딱이 난사하는게 아니고 AI를 사용해서 스마트하게 공격한다.

Glitch를 넣을 최적의 타이밍을 찾기 위해 머신러닝 알고리즘을 사용하고.. 딱딱이를 어느 위치에 대야 가장 효과적일지 탐색함.

 

소프트웨어만 분석하는 도구는 하드웨어가 어떻게 돌아가는지 제대로 모르니 실제로 공격 불가능한 곳까지 전부 위험하다고 경고한다.

그러니 하드웨어와 소프트웨어를 동시에 고려해야 실제 취약점을 찾을 수 있다.

 

공격자들이 머신러닝으로 글리치 타이밍을 찾는 것 처럼.. 방어하는 입장에서도 머신러닝을 사용하면 좋을듯..

기존 하드웨어 센서 방식은 전압이 Threshold 보다 떨어지면 경고하는 방식이니까. AI로 패턴을 감지하도록 해서 공격을 인지하도록 하면..

 

TinyML으로도 가능하고, 필요하다면 외부 llm으로 데이터를 보내서 정밀 분석을 시키는것도 좋아보임.

 

 

 

 

참고

1. SoK: A Beginner-Friendly Introduction to Fault Injection Attacks (Systemization of Knowledge)

https://arxiv.org/abs/2509.18341

 

 

 

 

 

 

반응형
저작자표시 (새창열림)

'📚 공부' 카테고리의 다른 글

[Fault Injection] A Micro Architectural Events Aware Real-Time Embedded System Fault Injector  (0) 2026.01.11
[Transformer] Attention is all you need  (0) 2026.01.02
[HOBBIT] A Mixed Precision Expert OffloadingSystem for Fast MoE Inference  (1) 2025.12.28
[MoE] Mixture Of Experts  (1) 2025.12.25

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Fault Injection] A Micro Architectural Events Aware Real-Time Embedded System Fault Injector

    [Fault Injection] A Micro Architectural Events Aware Real-Time Embedded System Fault Injector

    2026.01.11
  • [Transformer] Attention is all you need

    [Transformer] Attention is all you need

    2026.01.02
  • [HOBBIT] A Mixed Precision Expert OffloadingSystem for Fast MoE Inference

    [HOBBIT] A Mixed Precision Expert OffloadingSystem for Fast MoE Inference

    2025.12.28
  • [MoE] Mixture Of Experts

    [MoE] Mixture Of Experts

    2025.12.25
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (674)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (142)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (17)
    • 👥 모각코 (8)
    • 💬 기록 (6)
    • 📚 공부 (5)
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바