이 말들, 현장에서 정말 자주 듣습니다. 그리고 질문 뒤에는 늘 이런 기대가 숨어 있습니다.
결론부터 말하겠습니다. 다 해야 합니다. 단, "어떻게 다 하느냐"가 문제입니다. 그리고 그게 현업의 전부입니다.
시큐어코딩은 "개발자가 조심해서 코딩하는 것"이 아닙니다. ISO/SAE 21434 체계에서 시큐어코딩은 보안 요구사항의 구현이고, 그 구현을 검증 가능하게 증명하는 것은 선택이 아니라 의무입니다.
왜 Rule이 수천~수만 개가 될까
혼자 ECU 코드 한 줄 짜는 게 아닙니다. 실제 ECU 프로젝트에는 이것들이 모두 들어옵니다.
MISRA C/C++ · CERT C/C++ · CWE 매핑 · ISO/SAE 21434 보안 요구사항
Static Analysis 결과 · Compiler Warning · OEM 자체 Coding Rule · 보안 사고 재발 방지 항목
문제는 이것들이 한꺼번에 오지 않는다는 점입니다. MISRA가 자리 잡으면 OEM 추가 Rule이 붙습니다. 21434 대응을 시작하면 CWE 매핑이 추가됩니다. 보안 이슈가 한 번 터지면 재발 방지 항목이 또 쌓입니다. 결국 수만 개가 됩니다.
그런데 여기서 숫자를 더 크게 만드는 주범이 따로 있습니다.
서드파티 코드가 숫자를 부풀린다
ECU 개발에는 MCU 제조사의 HAL Driver, RTOS, CMSIS 같은 벤더 코드가 반드시 들어갑니다. 이 코드들은 수천만 기기에서 이미 검증됐지만, MISRA 관점에서는 위반 덩어리일 수 있습니다.
"다 한다"는 게 무슨 의미인가
수만 건을 "다 한다"는 게 수만 건 전부 코드를 수정한다는 뜻이 아닙니다. 다 한다는 건 수만 건 각각에 대해 판단하고, 그 판단을 문서로 남긴다는 뜻입니다.
| 대응 방식 | 내용 | 주의점 |
|---|---|---|
| Fix | 코드를 실제로 수정한다 | 가장 깔끔하지만 항상 가능한 건 아니다 |
| Deviation | 이 케이스에서 Rule 적용 제외 선언 | 기술적 근거 문서화 필수. 건별로 필요하다 |
| False Positive | 실제 취약점이 아님을 분석·기록 | "왜 위험하지 않은가"까지 설명해야 한다 |
| Risk Acceptance | 잔존 위험을 인정하고 수용 | 승인자 서명 필요. 근거가 명확해야 한다 |
| Compensating Control | 직접 수정 대신 다른 방어 수단 제시 | 대안의 유효성을 별도로 증명해야 한다 |
Fix는 오히려 쉬운 편입니다. 진짜 어려운 건 Deviation과 False Positive 분석입니다. RTOS 내부 코드에서 나온 "Potential NULL Pointer Dereference" — 이게 실제 위험인지, 코드 구조상 도달 불가능한 경로인지 판단하고, 그 판단 근거를 문서로 남겨야 합니다.
분석, 판단, 문서화에서 소모됩니다.
MISRA Mandatory vs Required — 이 구분이 왜 중요한가
프로젝트 초기에 "어떤 Rule을 어느 수준으로 적용할 것인가"를 명확히 합의하지 않으면 후반에 일정이 터집니다.
이걸 다 하는 게 가능한 이유 — Traceability 체계
수만 건을 혼자 다 검토한다? 불가능합니다. 하지만 체계를 갖추면 가능합니다. ISO/SAE 21434가 요구하는 것도 결국 이 체계입니다.
Static Analysis 리포트는 목적이 아닙니다. Audit에서 "우리는 이걸 알고 있었고, 이렇게 판단했다"를 보여주는 수단입니다. 리포트를 내면 끝이 아니라, 리포트가 4번과 5번의 입력값이 됩니다.
수만 건 각각에 대해 판단하고 그 판단을 추적 가능하게 남기라는 뜻입니다.
그래서 현업은 어떻게 굴러가나
체계 없이 뛰어들면 이렇게 됩니다. Static Analysis 돌림 → 수만 건 나옴 → 멘붕 → 중요한 것과 안 중요한 것이 뒤섞임 → 일정 초과 → OEM Audit에서 Evidence 부족 지적.
체계가 있으면 다릅니다.
- 벤더 코드 스코프를 미리 정의해 제외하거나 일괄 Deviation 처리
- Mandatory 먼저, Required 중 ASIL 영향 높은 것 다음, Advisory는 정책에 따라
- False Positive는 패턴화해서 반복 처리 속도를 높인다
- CI/CD 파이프라인에 SAST 연계 — 코드가 올라올 때마다 자동 탐지
- Deviation 템플릿화 — 근거 작성 시간을 단축한다
SDV 시대에 수백만 라인으로 늘어나는 코드에서 수작업으로만 관리하는 건 구조적으로 한계가 옵니다. 자동화 없이는 "다 한다"는 게 불가능해지는 시점이 반드시 옵니다.
현업에서는 이렇게 느낀다
현업 경험 4가지
마무리
시큐어코딩 Rule 수천 개, 이걸 진짜 다 검증해야 합니다.
단, "다 검증한다"는 건 수만 건을 전부 Fix하는 게 아니라,
수만 건 각각에 대해 판단하고 그 판단을 추적 가능하게 남기는 것입니다.
MISRA, CWE, Static Analysis, ISO/SAE 21434. 이 모든 것들은 결국 "이 ECU가 신뢰할 수 있는가"를 증명하기 위한 과정입니다.
그 증명의 핵심은 "우리는 몰랐다"가 아니라 "우리는 알고 있었고, 이렇게 판단했다"를 Audit에서 보여주는 것입니다. 시큐어코딩 체계는 그것을 가능하게 만드는 구조입니다.
'차량 사이버보안 > V&V + 모의해킹' 카테고리의 다른 글
| 해커들은 올해 자동차에서 76개의 제로데이를 찾았다 — Pwn2Own Automotive 2026이 보여준 현실 (0) | 2026.06.16 |
|---|---|
| Verification와 Validation은 뭐가 다를까?— ISO/SAE 21434에서 가장 헷갈리는 두 개념 (1) | 2026.05.27 |
| 자동차 보안 테스트는 왜 ‘완벽할 수 없을까’— Residual Risk와 현실적인 보안의 한계 (0) | 2026.05.27 |
| 차량 Penetration Test는 왜 일반 IT 해킹과 다를까?— 자동차 보안 테스트가 어려운 진짜 이유 (0) | 2026.05.27 |
| 자동차 사이버보안 테스트는 실제로 무엇을 할까?— ISO/SAE 21434 Clause 11의 현실 (0) | 2026.05.27 |