시큐어코딩을 시작하기 전에 참고용으로 한번 보면 도움이 되지 않을까

중요성

CISA 피셜 대부분의 소프트웨어 보안 문제의 90%는 coding errors/design로부터 발생한다고 합니다. 🔗

SDLC을 위해 고려해야 하고, 사람에게 가장 큰 영향을 줄 수 있는 임베디드 기기의 시큐어코딩 또한 중요하다.

 

정의

  • secure coding : 보안 표준과 모범 사례를 준수하는 코드 설계 원리 / 취약점으로부터 보호되는 소프트웨어를 작성
  • secure software : malicious attacks로부터 안전하게 개발된 소프트웨어 / secure coding 된 소프트웨어
  • practice : 원칙, 방침 / 개인이 지키도록 attempt 하려는 행동
  • CWE(Common Weakness Enumeration) : 아키텍처, 설계, 코딩 등 개발 과정에서 발생 가능한 소스코드적인 취약점
  • CVE(Common Vulnerabilities and Exposures) : 공개적으로 알려진 보안취약점 (vulnerability)

References

CWE 🔗

MITER에서 관리되는 공통 취약점 목록이다. CWE에서는 Software Development, Hardware Design, Research Concepts에 분류하여 일어날 수 있는 취약점을 공개한다. 

 

만약 CWE를 준수하지 않으면 될까?

 

CVE-2022-32257 - https://nvd.nist.gov/vuln/detail/CVE-2022-32257

CWE에 명시된 보안을 따르지 않아 취약점이 발생한 프로그램은 그대로 CVE에 올라가기도 한다. 

이런 사례를 쉽게 찾아볼 수 있다.

 

SEI CERT Coding Standards 🔗

카네기 멜론 대학(CMU)에서 운영하는 소프트웨어 공학회(SEI)가 유지보수되는 국제 코딩 표준 

당연히 CWE와 MISRA와 같이 여러 다른 표준들을 참조한다.

 

정리가 잘 되어있어서 C, C++, Java와 같은 언어 배울 때 참조하길 바라는 곳이다. 

 

MISRA 🔗

차량용 소프트웨어에 집중된 가이드라인이다.

현재는 자동차, 철도, 의료 등 다양한 산업에서 쓰이고 있다.

 

OWASP 🔗

웹에 집중된 시큐어코딩 가이드라인이다.

 

OWASP Top 10과 같이 나중에 보면 Top 25 등등 Top 붙은 애들을 많이 보게 되는데, 이는 해당 단체에서 제공하는 취약점들 중 가장 발생 빈도 또는 영향 높은 순으로 정렬된 목록이다.

PA-DSS 🔗

결제 application 데이터 보안의 세계적 표준이다.  카드의 데이터를 저장, 처리, 전송하는 기업들의 표준인 PCI DSS와 별개이다.

 

IEC 62443 🔗

산업 통신망 위험 완화를 위한 국제 표준, 여기도 시큐어코딩이 들어갈 수밖에 없다.

 

 


리뷰

이렇게 시큐어코딩을 제공하는 단체들은 매우 많다.

 

CWE, CERT 등이 좀 크게 와닿고 나머지는 표준 또는 분야에 따라 따로 제공되기도 한다는걸 느낄 수 있다.

이것도 알려지지 않은 취약점이나 특정 단체의 엠바고가 있을 수 있고, CVE로 공개되기도 한다.

-> 즉, 모든 방면에서 모두 완벽하게 시큐어코딩을 100% 제공되는 서비스는 없다고 볼 수 있다.

 

단체에 따라서 -> OWASP, CERT 등

국가에 따라서 -> DHS, NVD(미국), KISA, NIS NCSC(한국) 

표준에 따라서 -> IEEE, ISO/IEC 등

교육에 따라서 -> SANS Institute, SAFECode 등

때론 기업에 따라서 시큐어코딩은 각각 다르게 제공될 수 있다.

 

 

 

그러면 우리는 도대체 뭘 기준으로 배우고 해야합니까?

 

MISRA와 같이 자기 분야에 중요한 시큐어코딩을 이미 실무로 하신 분들이 아닌 우리 학생 여러분들은 카네기 멜론 대학을 생각하며 공부하는걸 추천합니다.

-> https://wiki.sei.cmu.edu/confluence/display/c/Introduction

Pwnable 문제 제작하는 분들이 많이 참고하는걸 보기도 했고, 볼 때 스트레스가 덜 합니다.

다같이 어려운 길을 걸어가요.

 

끝~