Skip to main content
QUICK REVIEW

[논문 리뷰] Coding Guidelines and Undecidability

Espinha Gasiba, Tiago, Oguzhan, Kaan|arXiv (Cornell University)|2022. 12. 28.
Software Reliability and Analysis Research인용 수 3
한 줄 요약

이 논문은 C/C++ 코딩 지침서, 특히 MISRA C:2012에서의 결정 불가능성의 영향을 조사하고 정적 분석 도구에서의 혼동과 잘못된 경고를 줄이기 위한 실용적인 개선 사항을 제안한다. 결정 불가능한 지침은 안전이 핵심인 시스템에서는 피할 수 없지만, 안정적이고 결정 가능한 근사치 및 더 명확하고 실용적인 지침—예를 들어 정당화되지 않은 효과가 없는 코드를 최소화하는 것—을 통해 이를 완화할 수 있으며, 이는 안전성과 개발자의 실용성 사이의 균형을 맞추는 데 기여한다.

ABSTRACT

Software security is an important topic that is gaining more and more attention due to the rising number of publicly known cybersecurity incidents. Previous research has shown that one way to address software security is by means of a serious game, the CyberSecurity Challenges, which are designed to raise awareness of software developers of secure coding guidelines. This game, which has been proven to be very successful in the industry, makes use of an artificial intelligence technique (laddering technique) to implement a chatbot for human-machine interaction. Recent advances in machine learning led to a breakthrough, with the implementation of ChatGPT by OpenAI. This algorithm has been trained in a large amount of data and is capable of analysing and interpreting not only natural language, but also small code snippets containing source code in different programming languages. With the advent of ChatGPT, and previous state-of-the-art research in secure software development, a natural question arises: to which extent can ChatGPT aid software developers in writing secure software?. In this paper, we draw on our experience in the industry, and also on extensive previous work to analyse and reflect on how to use ChatGPT to aid secure software development. Towards this, we run a small experiment using five different vulnerable code snippets. Our interactions with ChatGPT allow us to conclude on advantages, disadvantages and limitations of the usage of this new technology.

연구 동기 및 목표

  • 결정 불가능성으로 인해 발생하는 C/C++ 코딩 지침서의 개념적·실용적 과제를 명확히 하기 위해, 특히 안전이 핵심인 시스템에서의 영향을 분석한다.
  • 실행 불가능하거나 효과가 없는 코드와 관련된 결정 불가능한 지침이 왜 개발자와 도구에서 혼동을 일으키는지 분석한다.
  • 안전성과 보안 보장을 유지하면서도 실용성과 잘못된 경고의 가능성을 줄일 수 있는 개선된 지침을 제안한다.
  • 진짜 위반이나 '모르겠다'는 경우를 구분할 수 있는 도구 지원을 적극적으로 권장하여, 잘못된 경고와 잘못된 부정의 가능성을 줄인다.

제안 방법

  • 실행 시간 동작 및 제어 흐름 도달 가능성과 같은 결정 불가능한 성질에 기반하여, MISRA C:2012의 모든 결정 불가능 지침을 체계적으로 분류한다.
  • 효과가 없는 코드, 도달 불가능한 코드, 측면 효과가 없는 표현과 관련된 결정 불가능성의 근본 원인을 분석한다.
  • 효과가 없는 코드에 대한 절대적 금지보다 더 실용적인 대안으로 '정당화되지 않은 효과가 없는 코드는 최소화되어야 한다'는 새로운 지침을 제안한다.
  • 결정 불가능한 지침에 대해 결정 가능한 근사치를 설계할 수 있는지 평가하며, 완전성보다는 타당성과 실용성에 중점을 둔다.
  • 새로운 더 영리한 지침을 이행하는 데 지원하기 위해 설계 기준, 테스트 계획, 코드 리뷰 체크리스트 통합을 권장한다.
  • Rust와 같은 현대 언어의 트렌드와 유사성을 제시하여, 더 엄격하면서도 유지보수가 쉬운 코딩 관행으로의 전환을 뒷받침한다.

실험 결과

연구 질문

  • RQ1왜 결정 불가능한 코딩 지침서, 예를 들어 MISRA C:2012 룰 2.2는 정적 분석 도구와 개발자 모두에게 혼동을 일으키는가?
  • RQ2일반적인 알고리즘이 검증할 수 없는 상황에서 결정 불가능한 지침을 강제로 이행할 경우 실질적인 결과는 무엇인가?
  • RQ3결정 불가능한 지침에 대해 과도하게 코드 품질이나 표현력을 제한하지 않으면서도 결정 가능한 근사치를 설계할 수 있는가?
  • RQ4안전성과 보안을 유지하면서도 잘못된 경고를 줄일 수 있도록 지침을 어떻게 재구성할 수 있는가?
  • RQ5도구의 한계—예를 들어 잘못된 부정과 잘못된 경고—는 안전 중심 시스템에서 정적 분석에 대한 신뢰를 어떻게 약화시키는가?

주요 결과

  • 많은 MISRA C:2012 지침서는 실행 시간 성질, 예를 들어 제어 흐름 도달 가능성과 변수 값에 의존하기 때문에 결정 불가능하다. 이러한 성질은 정적 분석으로는 확인할 수 없다.
  • 정적 분석 도구는 결정 불가능한 성질에 대해 반드시 '모르겠다'를 반환하게 되며, 고도의 근사 기법을 사용하지 않는 한 잘못된 경고나 잘못된 부정이 발생한다.
  • 효과가 없는 코드에 대한 절대적 금지(예: MISRA C:2012 룰 2.2)는 실질적으로 이행할 수 없으며, 고품질 프로젝트에서도 피할 수 없는 이탈을 초래한다.
  • 제안된 대안 지침인 '정당화되지 않은 효과가 없는 코드는 최소화되어야 한다'는 지침은 절대적 제거가 아니라 코드 품질과 의도에 초점을 맞추므로 더 현실적이고 유지보수가 쉬운 접근이다.
  • 많은 결정 불가능한 지침에 대해 결정 가능한 근사치를 적용할 수 있으며, 동료 검토, 테스트, 문서화와 결합하면 도구의 신뢰성을 높일 수 있다. 이는 안전성을 희생하지 않으면서도 가능하다.
  • 리눅스 커널 커뮤니티가 점점 더 엄격한 코딩 규칙을 수용하고 있는 것은, 규제가 덜한 환경에서도 더 체계적이고 안전 중심의 관행으로의 전환을 시사한다.

더 나은 연구,지금 바로 시작하세요

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.