개발 효율

정적 분석이 임베디드 소프트웨어의 품질과 보안을 향상시키는 방법

<span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" style="" data-hs-cos-general-type="meta_field" data-hs-cos-type="text" >정적 분석이 임베디드 소프트웨어의 품질과 보안을 향상시키는 방법</span>

정적 분석으로 임베디드 소프트웨어의 품질과 보안을 강화하는 방법

IAR은 최근 Arm용 임베디드 워크벤치, RISC-V 및 Renesas RL78의 기능 안전 업데이트 버전을 출시했습니다. 새로운 디바이스 및 코어 지원과 기타 장점 외에도 C-STAT 정적 분석기는 이제 기능 안전 프로젝트에 사용할 수 있도록 TÜV SÜD의 인증을 받았습니다. 그러나 정적 분석은 기능 안전 개발에만 유용한 것이 아니라 모든 임베디드 프로젝트에서 더 높은 소프트웨어 품질과 보안을 달성하는 데에도 도움이 될 수 있습니다.

임베디드 시스템에서 소프트웨어 품질과 보안의 중요성

안전, 보안, 규정 준수 등은 오늘날 임베디드 소프트웨어 개발자가 직면한 주요 과제 중 일부입니다. 의료 기기, 자동차 시스템, 산업 자동화 또는 IoT 애플리케이션용 소프트웨어를 개발하는 경우 코드의 안정성과 견고성, 공격에 대한 내성을 확보해야 합니다. 또한 해당 도메인에 적용되는 다양한 표준 및 규정의 요구 사항을 충족하면서 이를 수행해야 합니다.

임베디드 시스템용 소프트웨어로 작업하는 경우, 특히 MCU가 주를 이루는 보다 심층적인 임베디드 분야에서 C와 C++가 여전히 세계를 지배하고 있다는 것을 알고 있습니다. 하지만 각각의 언어 표준에 정의된 바와 같이 C와 C++는 무결성이 높은 소프트웨어를 개발하는 데 적합하지 않습니다. 이 언어들은 효율성, 유연성, 하드웨어에 직접 액세스할 수 있다는 점에서 탁월합니다. 하지만 이러한 언어에는 코드에 오류, 취약성 및 정의되지 않은 동작을 유발할 수 있는 몇 가지 기능과 구조가 있습니다. 이로 인해 시스템의 기능, 안전 및 보안이 손상될 수 있으며 관련 표준을 준수하기가 더 어려워질 수 있습니다.

기능 안전 및 사이버 보안에서 언어 하위 집합의 역할

따라서 IEC61508 또는 ISO26262와 같은 기능 안전 표준을 준수하려면 잘 정의된 언어 하위 집합을 사용하여 C와 C++의 약점을 전부는 아니더라도 대부분 제거할 것을 적극 권장하는 것은 우연이 아닙니다. C와 C++에 언어 하위 집합을 사용하는 것은 사이버 보안(예: IEC62443)에서도 모범 사례로 간주됩니다. 이는 우연이 아닙니다. 보안 또는 안전 관점과 무관하게 두 가지 맥락 모두에서 의미를 갖는 언어 문제가 많이 발견됩니다. 이에 대한 자세한 내용은 공통 취약점 열거의 지난 4년간 지속적인 문제 상위 목록을 참조하세요.

예를 들어 범위를 벗어난 읽기 및 쓰기를 생각해 볼 수 있습니다. 안전 측면에서 보면, 범위를 벗어난 읽기는 예기치 않은 입력 데이터로 인해 시스템 충돌 및 소손을 일으킬 수 있습니다. 반대로, 시스템에서 범위를 벗어난 쓰기를 강제로 수행하도록 하는 것은 시스템을 제어하기 위한 잘 알려진 공격 벡터입니다.

물론 언어 하위 집합을 사용하는 것만으로는 코드의 품질과 보안을 보장할 수 없습니다. 또한 코드가 하위 집합의 규칙을 준수하고 시스템에 영향을 줄 수 있는 다른 결함이나 취약점이 포함되어 있지 않은지 확인해야 합니다.

개발자로서 우리는 모두 실수로 반복되는 오류를 코드 베이스에 도입할 때가 있다는 것을 알고 있습니다. 수많은 조사와 연구를 수행한 NASA, 벨 연구소, MITRE와 같은 저명한 기관에서 수행한 연구가 이러한 사실을 뒷받침합니다. 이러한 연구를 통해 안전, 보안 또는 이식성 관점에서 문제가 될 수 있는 코딩 패턴을 정확히 찾아내어 프로그래밍의 모범 사례를 설명하는 가이드라인이 만들어졌습니다. 바로 이때 정적 분석이 등장합니다.

정적 분석의 힘

정적 분석은 소스 코드를 실행하지 않고 분석하여 잠재적인 오류, 버그 및 코딩 표준 위반을 감지하는 기술입니다. 이 기술을 사용하면 수정하는 데 많은 비용과 위험이 발생하기 전에 개발 주기 초기에 문제를 식별하고 수정할 수 있습니다. 또한 언어 하위 집합 및 기타 코딩 규칙을 준수한다는 증거를 제공하여 프로젝트에 적용되는 표준을 준수하고 있음을 입증하는 데 도움이 될 수 있습니다.

정적 분석에 가장 적합한 도구 중 하나는 IAR-Embedded Workbench에 원활하게 통합된 C-STAT입니다. C-STAT은 CWE 및 SEI CERT와 같은 다른 규칙 세트와 함께 MISRA C, MISRA C++, CERT C 및 CERT C++ 표준을 비롯한 다양한 산업 표준을 지원합니다. C-STAT는 특정 요구 사항과 선호도에 맞게 사용자 지정할 수 있어 사용자 친화적인 환경을 보장합니다. 또한 IAR 빌드 체인과 원활하게 작동하므로 분석 결과에 대한 명확하고 실행 가능한 보고서를 제공합니다. 기능 안전 프로젝트에 대한 TÜV SÜD의 인증을 받은 C-STAT은 품질과 신뢰성을 보장합니다.

결론 소프트웨어 자동화를 통한 품질, 안전 및 보안 강화

소프트웨어 품질, 안전 및 보안 시행을 자동화하는 것은 소프트웨어 품질과 보안을 강화하는 가장 효율적인 접근 방식입니다. 여기에는 자동화된 정적 분석 도구와 함께 고품질 컴파일러 및 링커(이상적으로는 기능 안전 인증을 받은 컴파일러 및 링커)를 활용하는 것이 포함됩니다.

정적 분석은 임베디드 소프트웨어의 품질과 보안을 개선하고 관련 표준 및 규정을 준수하는 데 도움이 되는 강력한 기술입니다. C 및 C++에 대해 잘 정의된 언어 하위 집합을 사용하고 C-STAT으로 코드를 검증하면 시스템을 손상시킬 수 있는 많은 일반적인 문제를 제거하고 개발 프로세스에서 시간과 비용을 절약할 수 있습니다. 기능 안전, 사이버 보안, 범용 임베디드 시스템 등 어떤 소프트웨어를 개발하든 C-STAT을 사용하면 더 나은 소프트웨어를 더 빠르게 제공할 수 있습니다.

코드 품질을 높이고 업계 코딩 표준을 준수하는 데 C-STAT이 어떻게 도움이 되는지 알아보세요.

Anders Holmberg CTO IAR
Anders Holmberg
Chief Technology Officer at IAR

Anders Holmberg has over 25 years of experience in the embedded industry. With a background in Scientific Computing, he started his career in parallel computing and high-performance computing in the early 1990s. Over the past ten years, Anders has focused on strategic business development of advanced tools for developing embedded systems.