기출 소프트웨어(Software) 개발 보안

agnusdei·2025년 12월 23일

Information Security

목록 보기
86/96

1. 소프트웨어(Software, 이하 SW) 개발 보안의 거버넌스(Governance)적 정의

  • 정의: 소프트웨어(Software) 개발 전 과정(Software Development Life Cycle, 이하 SDLC)에서 발생할 수 있는 보안 약점을 사전에 제거하여 침해 사고를 원천적으로 방지하는 보안 내재화(Security by Design) 체계입니다.
  • 핵심 가치: 사후 패치(Patch) 비용 대비 최대 100배의 비용 절감 효과가 있으며, 데이터(Data) 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability)을 코드 레벨(Code Level)에서 보장합니다.

2. 소프트웨어(Software) 보안 약점 7가지 유형 및 기술적 상세 (101회·114회 공통)

행정안전부 가이드(Guide)에 따른 49개 항목의 핵심 체계입니다.

보안 약점 유형기술적 정의 및 상세 설명주요 점검 항목 (49개 중 핵심)
입력데이터 검증 및 표현프로그램 외부 입력값에 대한 유효성 검증 미비로 발생하는 취약점구조화된 질의 언어(Structured Query Language, 이하 SQL) 삽입, 크로스 사이트 스크립팅(Cross-Site Scripting, 이하 XSS), 경로 조작 및 자원 삽입
보안 기능인증, 인가, 암호화, 권한 관리 등 보안 기능의 부적절한 구현적절하지 않은 인증, 취약한 암호화 알고리즘(Algorithm) 사용, 중요 정보 평문 저장/전송
시간 및 상태동시 실행 환경에서 공유 자원 접근 순서 및 타이밍(Timing) 오류검사 시점과 사용 시점(Time of Check to Time of Use, 이하 TOCTOU) 경쟁 조건, 교착 상태
에러 처리오류 발생 시 시스템 내부 정보가 노출되거나 예외 상황을 악용오류 메시지(Message)를 통한 정보 노출, 부적절한 예외 처리
코드 오류개발자의 실수로 인한 자원 해제 미흡 및 타입(Type) 오인널 포인터(Null Pointer) 역참조, 부적절한 자원 해제, 스택(Stack) 오버플로우(Overflow)
캡슐화중요 데이터(Data)나 내부 구조가 불필요하게 외부에 노출되는 현상제거되지 않은 디버그(Debug) 코드, 시스템 데이터(Data) 정보 노출, 사적인 멤버(Member)에 공공적 접근 허용
API 오용보안에 취약하거나 권장되지 않는 응용 프로그램 프로그래밍 인터페이스(Application Programming Interface, 이하 API)의 잘못된 사용취약한 함수 사용(예: gets(), strcpy()), 질의 문자열(Query String) 내 개인정보 노출

3. 소프트웨어(Software) 개발 단계별(SDLC) 보안 기술 및 활동 (109회)

개발 단계에 보안 기술을 접목하여 취약점을 전이(Shift-Left)시키는 전략입니다.

  1. 요구사항 분석 단계:
  • 보안 요구사항 명세화: 기밀성, 무결성 등을 고려한 보안 기능 요구사항 정의.
  • 자산 식별: 보호해야 할 데이터(Data) 및 정보 자산의 가치 평가.
  1. 설계 단계:
  • 위협 모델링(Threat Modeling): STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) 기법을 활용한 위협 식별.
  • 보안 설계 검토: 공격 표면(Attack Surface) 최소화 및 계층별 방어 전략 수립.
  1. 구현(코딩) 단계:
  • 시큐어 코딩(Secure Coding): 정해진 가이드라인(Guideline)에 따른 소스 코드(Source Code) 작성.
  • 정적 분석 도구(Static Application Security Testing, 이하 SAST) 활용: 실시간 코드 분석.
  1. 테스트(Test) 단계:
  • 동적 분석 도구(Dynamic Application Security Testing, 이하 DAST) 활용: 실행 환경 취약점 진단.
  • 모의해킹(Penetration Testing): 전문가에 의한 침투 테스트를 통한 보안 완성도 검증.
  1. 운영 및 유지보수 단계:
  • 지속적 모니터링: 실시간 위협 감지 및 대응.
  • 보안 패치(Patch) 관리: 신규 취약점 발견 시 즉각적인 업데이트 체계 운영.

4. 소프트웨어(Software) 보안 약점 진단 방법 및 기준 (101회)

(1) 진단 방법의 비교 분석

구분정적 분석 (SAST)동적 분석 (DAST)상호작용 분석 (IAST)
분석 대상소스 코드(Source Code), 바이너리(Binary)실행 중인 애플리케이션(Application)런타임(Runtime) 시 에이전트(Agent) 분석
장점초기 발견, 논리 오류 탐지런타임 오류, 구성 오류 탐지높은 정확도, 실시간 분석
단점오탐(False Positive) 발생 빈도모든 경로 테스트(Test) 불가시스템 부하 발생 가능성

(2) 적용 대상 및 기준 (법적·행정적 준거성)

  • 적용 대상: 행정기관 및 공공기관이 추진하는 모든 정보화 사업.
  • 의무 범위: 총 사업비 5억 원 이상 또는 소프트웨어(Software) 개발비 2억 원 이상인 사업 (중요도에 따라 확대 적용).
  • 진단 시점: 소프트웨어(Software) 개발 완료 전(설계 단계 및 구현 단계 필수).
  • 진단 성과지표: 보안 약점 제거율(진단 발견 개수 대비 조치 완료 개수) 100% 달성 필수.

5. 대표적인 웹(Web) 공격 방지 기술 (114회)

보안 약점을 악용한 웹(Web) 공격에 대한 구체적인 대응 기술입니다.

  • SQL 삽입(SQL Injection) 방지:
  • 정적 쿼리 사용: PreparedStatement 등 매개변수화된 질의를 사용하여 입력값의 코드 실행 방지.
  • 입력값 검증: 세미콜론(;), 주석(--) 등 특수문자 차단 필터링(Filtering) 적용.
  • 크로스 사이트 스크립팅(XSS) 방지:
  • 입출력 인코딩(Encoding): HTML 엔티티(Entity) 변환(예: <&lt;).
  • 보안 헤더(Header) 설정: Content-Security-Policy(이하 CSP)를 설정하여 비정상적인 스크립트(Script) 실행 차단.
  • 크로스 사이트 요청 위조(Cross-Site Request Forgery, 이하 CSRF) 방지:
  • CSRF 토큰(Token): 세션(Session)별 고유한 토큰(Token)을 검증하여 정상적인 요청 여부 확인.

6. 결론: 기술사로서의 제언 (Professional Insight)

소프트웨어(Software) 개발 보안은 단순히 기술적인 코딩(Coding) 문제를 넘어 DevSecOps공급망 보안으로 확장되어야 합니다.

  1. DevSecOps 내재화: 지속적 통합/배포(Continuous Integration/Continuous Deployment, 이하 CI/CD) 파이프라인(Pipeline)에 자동화된 보안 진단 도구를 결합하여 배포 속도와 보안성을 동시에 확보해야 합니다.
  2. 공급망 보안(Supply Chain Security): 오픈 소스(Open Source Software, 이하 OSS) 사용 증가에 따라 소프트웨어 자재 명세서(Software Bill of Materials, 이하 SBOM)를 관리하여 라이브러리(Library) 취약점에 대응해야 합니다.
  3. AI 기반 보안 진단: 인공지능(Artificial Intelligence, 이하 AI)을 활용하여 오탐을 줄이고 지능화된 공격 코드를 탐지하는 고도화된 진단 체계 도입이 필요합니다.
profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글