도요타 급발진 사건 개요
2009년 8월 28일 샌디에고에서 고속도로 순찰대원 Mark Saylor를 포함하여 일가족 넷을 태운 렉서스 ES350이 가드레일을 넘어 추락, 일가족 4명이 사망한 사건이다.
도요타 리콜 사태
- 2009년 11월 플로어 매트 리콜
- 잘못 설계된 매트로 인해 악셀 페달이 매트에 끼어버리는 문제
- Deadly Floor Mats
- 2010년 1월 악셀 페달 리콜
- 액셀러레이터 페달이 밟힌 상태에서 회복이 안 되는 문제
- Sticking Accelerator Pedal
- 총 900만 대 가까이 리콜하게 되었다.
도요타의 주장과 대응
도요타는 잘못 설계된 매트가 액셀러레이터를 물어서 생기는 현상이라고 발표했다.
- Saylor는 2010년 12월 $10 million로 합의되었다.
기술적 결함 분석
NHTSA-NANA 조사 결과 (2011)
- NHTSA(미국 도로교통안전국)와 NANA(미국 항공우주국)의 공동 조사 결과 전자적 결함을 찾지 못하였다.
Bookout (2007)
- 2007년 9월 오클라호마에서 급발진(Unintended Acceleration) 추정 사고가 발생했다.
- 원고측 Barr 그룹의 Michael Barr이 ECM SW 코드 분석 결과 등으로 토요타에게 배상 책임이 있음을 주장했다.
- 원고측 Philip Koopman 교수는 전자적 제어 문제로 인한 급발진이 있을수 있음을 입증하고 있다.
도요타 ETCS (Electronic Throttle Control System) 결함
ETCS
- 차량의 가속 페달 입력을 전자적으로 처리하는 시스템으로, 전자 제어 장치(ECU)를 통해 엔진의 스로틀을 제어하는 방식
- 전통적인 케이블 방식과 달리, ETCS는 가속 페달과 엔진 사이에 물리적 연결이 없고, 대신 센서와 전자 신호를 사용해 가속 명령을 전달한다.
- 가속 페달 센서: 운전자가 페달을 밟는 정도를 전기 신호로 변환한다.
- 전자 제어 장치(ECU): 가속 페달 센서로부터 입력된 신호를 처리하여, 스로틀을 얼마나 열고 닫을지 결정한다.
- 스로틀 밸브: ECU의 명령에 따라 실제로 엔진의 공기 유입량을 제어하는 밸브
- 이 시스템은 연비를 최적화하고 배기가스 배출을 줄이는데 유리하지만, 전자적 결함이 발생할 경우 급발진이나 스로틀 제어 오류와 같은 문제가 생길 수 있다.
Failsafe Architecture
- 도요타 ETCS ECU에는 Monitoring Chip에 fail detection SW가 내장되어 있다.
- ETCS는 전자적 결함을 방지하기 위해 Failsafe 아키텍처를 포함하지만, 도요타의 사례에서는 단일 장애점(Single Point of Failure)과 같은 결함이 문제로 지적되었다.
- Monitor에서 ADC 역할을 하면 monitoring의 의미가 무색해진다.
- 잘못된 Failsafe 구조 (Task X Death)
- 특정 작업(Task X)이 제대로 처리되지 못하거나 종료(Death)될 때 시스템이 제대로 대응하지 못하는 구조적 문제
- Task X가 중단될 경우 시스템이 이를 감지하고 다른 안전 메커니즘을 작동해야 하지만, 이러한 상황에 적절히 대처하지 못하여 단일 장애점(Single Point of Failure)이 발생하게 된다.
- Brake echo check
- 차량의 제동 시스템에서 브레이크 입력을 확인하고 피드백을 통해 제어 동작을 검증하는 과정
- 이 기능은 운전자가 브레이크를 밟았을 때, 해당 입력이 정확하게 시스템에 전달되고, 시스템이 올바르게 응답하는지를 확인하는 안전 메커니즘이다.
- 도요타의 경우 브레이크 입력에 대한 피드백을 정확하게 확인하지 못하거나, 문제가 발생했을 때 이를 적절히 처리하지 못하는 결함이 있었다.
소스코드 품질 및 코딩 가이드라인 문제
- Michael Barr의 증언 내용
- Failsafe 아키텍처 결함
- 하나의 오류로 failure가 발생하는 Single point of failure 존재
- 잘못된 모니터링 구조
- 소스코드 품질이 아주 낮음
- 11,000개 이상의 전역변수, Cyclomatic Complexity Measure 50 이상인 함수 67개
- 미흡한 코딩 가이드라인
- 자동차 코딩 가이드라인 MISRA-C 미적용
- Stack Overflow 위험이 있는 재귀함수 사용 등
- cf) 자동차는 재귀함수 사용이 금지된다.
- 전세계 표준이 OSEK 운영체제 미사용
- Single bit flip으로 잘못된 throttle position sensor 값 유발 실험
- Bit 하나 바꾸어서 실험했을 때 Brake overriding 동작하지 않음
사건 결과
Bookout vs. Toyota 판결과 합의
- 2013년 10월 징벌적 손해배상 판결 직전 알려지지 않은 금액에 합의되었다.
안전한 소프트웨어 개발을 위한 필요 노력
- 법정에서 급발진이 증명된 것은 아니지만 안전한 소프트웨어 개발을 위한 노력이 부족했다.
- 안전한 전지전자 시스템 개발을 위한 standard가 만들어졌다.
- Pedal misapplication 방지
- Pedal 입력에서 throttle 출력까지 길고 복잡한 일련의 과정에서 입력이 온전히 전달되어야 한다.
- 이를 위해 이중하, integrity 보장 등이 필요하다.
- 자동차 안전 평가 프로그램 Euro NCAP에서 차량 안전성 평가에 적용 예정이다.