ENGLISH
A.8.28

시큐어 코딩

기술적 통제확인사항 6증적 6사례 5

통제 목적

소프트웨어를 개발하거나 도입하는 과정에서 코드 수준의 보안 취약점이 유입되는 것을 예방하기 위해, 조직이 사용하는 언어 및 프레임워크에 맞는 시큐어 코딩 원칙과 표준을 정의하고 실제 개발 활동에 적용하도록 요구합니다. 입력값 검증 미흡, 인증/인가 처리 오류, 안전하지 않은 라이브러리 사용, 자격증명 하드코딩 등 코딩 단계의 결함은 배포 이후 공격 표면이 되므로, 설계부터 유지보수까지 코드 품질을 보안 관점에서 통제하는 것이 핵심입니다. 이렇게 하여 사고 발생 가능성과 사후 조치 비용을 낮추고 개발 산출물의 신뢰성을 확보하는 것이 목적입니다.

주요 확인사항

  1. 조직이 사용하는 프로그래밍 언어/프레임워크별 시큐어 코딩 표준 또는 가이드를 수립하고 개발자에게 공유하고 있는가?
  2. 코딩 및 빌드 단계에서 정적분석(SAST) 등 자동화 도구로 취약점을 탐지하고 조치하는 절차가 마련되어 있는가?
  3. 외부 라이브러리/오픈소스 구성요소의 취약점과 라이선스를 식별하고 최신성을 관리하고 있는가?
  4. 개발자를 대상으로 시큐어 코딩 교육을 정기적으로 실시하고 이수 현황을 관리하는가?
  5. 코드 리뷰 및 병합/배포 승인 절차에 보안 점검 항목이 포함되어 있는가?
  6. 발견된 취약점의 심각도 분류, 조치 기한, 재발 방지가 추적 관리되는가?

이행 지침

  • 언어/프레임워크 특성을 반영한 시큐어 코딩 표준을 문서화하고 입력값 검증, 출력 인코딩, 인증/세션 관리, 오류 처리, 안전한 로깅 원칙을 포함합니다.
  • 개발 파이프라인(CI/CD)에 SAST/SCA/시크릿 스캐닝을 통합하여 커밋/빌드 시점에 자동 점검하고, 심각도 기준에 따라 빌드 차단 또는 예외 승인 정책을 적용합니다.
  • SBOM을 관리하고 알려진 취약점이 실제 사용 버전/기능에 적용되는지 확인합니다. 노출, 악용 정황과 보완통제에 따라 갱신/대체/완화의 우선순위와 기한을 정하고, 예외는 승인과 만료 기준으로 관리합니다.
  • 소스코드에 자격증명/암호키를 하드코딩하지 않고, 비밀정보는 시크릿 관리 솔루션으로 분리하여 보관합니다.
  • 보안 관점의 코드 리뷰 체크리스트를 운영하고, 위험도가 높은 변경은 동료 검토 및 승인 없이 병합되지 않도록 통제합니다.
  • 개발자 대상 시큐어 코딩 교육 및 실습을 정기적으로 실시하고, 신규 위협/취약점 유형을 교육 내용에 지속 반영합니다.

증적자료

  • 시큐어 코딩 표준/가이드 문서 및 개정 이력
  • SAST/SCA 도구 스캔 결과 및 취약점 조치 내역
  • 코드 리뷰 기록 및 병합/배포 승인 로그(PR 승인 이력)
  • 개발자 시큐어 코딩 교육 계획 및 이수 현황
  • SBOM 및 오픈소스 취약점 관리 대장
  • 취약점 조치 추적 티켓/이슈 기록 및 예외 승인 근거

부적합 사례

  • 시큐어 코딩 표준은 수립되어 있으나 실제 개발 및 파이프라인에 적용되지 않고 형식 문서로만 존재하는 경우
  • SAST 결과로 확인된 상/중 위험 취약점이 장기간 미조치 상태로 방치되고 예외 승인 근거도 확인되지 않는 경우
  • 알려진 취약점의 영향을 받는 구성요소를 위험 평가, 필요한 완화 또는 승인된 조치 계획 없이 운영에 배포한 경우
  • 소스코드에 API 키 및 데이터베이스 비밀번호가 하드코딩되어 형상관리 저장소에 커밋된 경우
  • 코드 리뷰 절차가 규정되어 있으나 보안 점검 항목 없이 기능 검토 위주로만 수행되는 경우

출처 근거

출처/한계: 통제 번호/명칭/테마 분류는 ISO/IEC 27001:2022 Annex A의 공개된 목록에 근거합니다. 통제 목적/주요 확인사항/이행 지침/증적자료/부적합 사례 등 설명 본문과 속성 분류는 본 자료집이 실무 참고용으로 새로 작성한 원저작이며, ISO/IEC 27001:2022 및 27002:2022 표준 원문의 규범 텍스트가 아닙니다. 인증 대응 시 정본은 라이선스된 표준 원문으로 확인하십시오.
이 항목
항목 정보
구분A.8
주요 확인사항6
증적자료6
사례5