본문 바로가기
카테고리 없음

정보처리기사 실기 - 9장 소프트웨어 개발 보안 구축

by kik328288 2026. 5. 3.

SW 개발 보안 7개 분류와 시큐어 코딩

정보처리기사 실기 9장 소프트웨어 개발 보안 구축은 안전한 소프트웨어를 만들기 위한 개발 단계의 보안 활동을 다루는 영역이다. 보안은 개발이 끝난 뒤에 추가로 입히는 보호막이 아니라, 요구사항 분석부터 운영에 이르는 전 생명주기에 걸쳐 통합적으로 적용되어야 한다는 것이 현대 보안 공학의 기본 명제이다. 시험에서는 보안 개발 방법론, SW 개발 보안 가이드의 7개 분류, 그리고 시스템 인증과 보안 솔루션이 매회 출제된다. 본 글은 한 글에 1~2개 핵심 원칙에 따라 이 세 영역을 시험 답안에 직접 활용 가능한 정형화된 형태로 정리한다.

 

소프트웨어 개발 보안의 개요와 보안 개발 방법론

소프트웨어 개발 보안(Secure Software Development)이란 보안 위협 요소를 사전에 식별하고 제거하면서, 잠재적인 보안 약점을 최소화하는 형태로 안전한 소프트웨어를 만드는 일련의 활동을 의미한다. 보안 사고는 대부분 코드의 결함이나 설계의 허점에서 비롯되기 때문에, 운영 단계에서 사후적으로 패치하는 것보다 개발 단계에서 사전에 차단하는 것이 훨씬 효율적이고 비용 효과적이다. 이러한 사고의 전환에서 등장한 것이 바로 보안 개발 방법론이며, 시험에서 자주 출제되는 세 가지 대표 방법론이 있다.

첫째, MS SDL(Microsoft Security Development Lifecycle)은 마이크로소프트가 자체 개발 경험을 바탕으로 수립한 가장 체계적인 보안 개발 방법론이다. 7단계로 구성된 보안 활동을 SDLC 전 과정에 통합시키며, 각 단계마다 보안 교육·위협 모델링·정적 분석·동적 분석·침투 테스트 같은 구체적인 활동을 정의한다. 둘째, OWASP CLASP(Comprehensive, Lightweight Application Security Process)는 OWASP가 제안한 활동 중심·역할 기반의 보안 프레임워크이다. 비순차적이고 유연하게 적용할 수 있어, 이미 진행 중인 프로젝트에도 점진적으로 도입할 수 있다는 강점이 있다. 셋째, Seven Touchpoints(7 터치포인트)는 게리 맥그로(Gary McGraw)가 제안한 모델로, 코드 리뷰·아키텍처 분석·침투 테스트·위험 기반 보안 테스트·악용 사례·보안 요구·보안 운영이라는 일곱 가지 보안 모범 사례를 SDLC의 각 단계에 통합시킨다.

이러한 방법론을 실제 코드 작성 단계에 적용한 결과물이 바로 시큐어 코딩(Secure Coding)이다. 시큐어 코딩이란 잠재적 보안 약점을 유발할 수 있는 코딩 관행을 사전에 차단하기 위한 표준화된 코딩 규칙이다. 한국에서는 한국인터넷진흥원(KISA)이 행정안전부와 함께 공공기관 SW 보안 강화를 위해 SW 개발 보안 가이드를 제정해 배포하고 있으며, 이 가이드는 다음 섹션에서 다룰 7개 분류 체계를 기반으로 보안 약점을 식별하고 대응 방안을 제시한다. 시큐어 코딩의 핵심은 입력값 검증, 안전한 함수 사용, 적절한 에러 처리, 권한 최소화 같은 기본 원칙을 일관되게 적용하는 것이며, 정적 분석 도구와 코드 리뷰를 통해 그 준수 여부를 지속적으로 확인하는 체계가 함께 갖춰져야 한다.

SW 개발 보안 가이드의 7개 분류

행정안전부와 한국인터넷진흥원이 제시하는 SW 개발 보안 가이드는 보안 약점을 일곱 가지 카테고리로 분류한다. 이 7개 분류는 시험 답안에서 가장 자주 묻는 항목으로, 각 분류의 명칭과 대표 보안 약점을 정확히 외워두어야 한다. 카테고리 이름의 영문 첫 글자를 따 "입보시에코캡API"라는 식으로 외우는 방식이 시험 준비에 널리 활용된다.

첫째 분류는 입력 데이터 검증 및 표현(Input Validation)으로, 사용자 입력값을 신뢰하지 않고 검증하는 영역이다. SQL 인젝션·크로스사이트 스크립팅(XSS)·경로 조작·운영체제 명령어 삽입이 모두 이 분류에 속하며, 입력값을 화이트리스트 기반으로 검증하고 출력 시 이스케이프 처리하는 것이 핵심 대응 방법이다. 둘째 분류는 보안 기능(Security Features)으로, 인증·접근 제어·기밀성·암호화·권한 관리 같은 보안 기능 자체에 결함이 있는 경우를 다룬다. 약한 비밀번호 정책, 부적절한 인가, 평문 저장 같은 사례가 이 분류에 포함된다.

셋째 분류는 시간 및 상태(Time and State)로, 동시성 처리와 상태 관리에서 발생하는 결함을 다룬다. 경쟁 조건(Race Condition), 종료되지 않는 반복문, 자원 고갈이 대표적이다. 넷째 분류는 에러 처리(Error Handling)로, 부적절한 예외 처리로 인해 시스템 정보가 노출되거나 비정상적인 종료가 발생하는 경우를 다룬다. 스택 트레이스 노출, 에러 메시지에 포함된 SQL 구문 같은 사례가 흔하다. 다섯째 분류는 코드 오류(Code Quality)로, 코드의 품질에서 비롯되는 결함을 다룬다. NULL 포인터 역참조, 부적절한 자원 해제, 정수 오버플로우 같은 사례가 포함된다.

여섯째 분류는 캡슐화(Encapsulation)로, 객체와 데이터의 적절한 보호 범위 설정에서 발생하는 결함을 다룬다. 잘못된 세션 관리, 디버그 코드 제거 미흡, 시스템 정보 노출이 대표적이다. 일곱째 분류는 API 오용(API Abuse)으로, 보안에 취약한 API의 사용 또는 표준 API의 부적절한 사용에서 발생하는 결함을 다룬다. DNS lookup에 의존한 보안 결정, 취약한 암호 알고리즘 사용, 안전하지 않은 함수 호출이 대표적이다. 이 일곱 가지 분류는 단순히 외우는 것에 그치지 않고, 실제 코드 리뷰와 보안 점검 시 체크리스트로 활용해 한 항목씩 검증하는 것이 가장 실용적인 활용법이다.

시스템 인증과 보안 솔루션

소프트웨어 보안의 또 다른 핵심 축은 사용자가 시스템에 접근할 때 본인 여부를 확인하는 인증(Authentication)과 외부 위협으로부터 시스템을 보호하는 보안 솔루션(Security Solution)이다. 시험에서는 인증의 다섯 가지 유형과 주요 보안 솔루션의 명칭이 자주 출제된다.

시스템 인증은 사용자가 무엇을 알고 있고, 무엇을 가지고 있고, 누구이며, 어떻게 행동하고, 어디에 있는지를 기준으로 다섯 가지 유형으로 분류된다. 첫째, 지식 기반 인증(Knowledge-based)은 사용자가 알고 있는 정보를 활용하는 방식으로, 비밀번호와 PIN이 대표적이다. 가장 보편적이지만 추측·유출에 취약하다는 한계가 있다. 둘째, 소유 기반 인증(Possession-based)은 사용자가 가지고 있는 물리적 매체를 활용하며, 보안 카드·OTP 토큰·스마트카드·인증서가 여기에 속한다. 셋째, 생체 기반 인증(Biometric)은 사용자의 신체적 특성을 활용하는 방식으로 지문·홍채·얼굴·음성 인식이 포함된다. 위조가 어려우면서 편의성이 높아 모바일 환경에서 빠르게 확산되고 있다. 넷째, 행위 기반 인증(Behavior-based)은 사용자의 행동 패턴을 활용하며 서명 패턴·키 입력 리듬·마우스 움직임이 대표적이다. 다섯째, 위치 기반 인증(Location-based)은 사용자의 물리적 위치를 활용하며 GPS·IP 주소·근거리 무선 통신이 사용된다. 최근에는 보안 강화를 위해 두 가지 이상의 유형을 결합하는 다중 인증(MFA)이 표준으로 자리 잡고 있으며, 비밀번호와 OTP를 함께 사용하는 방식이 가장 널리 활용된다.

보안 솔루션은 외부 위협으로부터 시스템을 보호하기 위한 기술과 도구를 의미하며, 시험에서 자주 출제되는 주요 솔루션은 여섯 가지로 정리된다. 첫째, 방화벽(Firewall)은 네트워크 트래픽을 출발지·목적지·포트를 기준으로 통제하는 가장 기본적인 보안 장비이다. 둘째, IDS(Intrusion Detection System)는 침입 탐지 시스템으로, 비정상적인 패턴이나 알려진 공격 시그니처를 탐지해 관리자에게 알린다. 셋째, IPS(Intrusion Prevention System)는 침입 방지 시스템으로, 탐지에 그치지 않고 공격을 자동으로 차단하는 능동적인 솔루션이다.

넷째, WAF(Web Application Firewall)는 웹 애플리케이션 방화벽으로, HTTP/HTTPS 트래픽을 분석해 SQL 인젝션·XSS 같은 웹 특화 공격을 차단한다. 일반 방화벽이 네트워크 계층에서 동작한다면 WAF는 애플리케이션 계층에서 동작한다는 차이가 있다. 다섯째, DLP(Data Loss Prevention)는 데이터 유출 방지 솔루션으로, 기밀 데이터가 외부로 전송되거나 복사되는 것을 탐지하고 차단한다. 여섯째, SIEM(Security Information and Event Management)은 보안 정보·이벤트 통합 관리 솔루션으로, 다양한 보안 장비에서 발생하는 로그를 한 곳에 수집·분석해 위협 상황을 종합적으로 인지한다. 그 밖에 가상 사설망(VPN), 안티바이러스, 무결성 검증 도구가 보조적으로 활용된다. 결국 견고한 보안 시스템이란 어느 한 솔루션에 의존하는 것이 아니라, 7대 분류의 시큐어 코딩·다중 인증·다층 보안 솔루션이 결합된 심층 방어(Defense in Depth) 구조로 구축되는 것이라는 사실을 기억해야 한다.


메타 디스크립션: 정보처리기사 실기 9장 소프트웨어 개발 보안 구축의 핵심인 보안 개발 방법론(MS SDL·CLASP·Seven Touchpoints), SW 개발 보안 가이드 7개 분류, 그리고 시스템 인증 5종(지식·소유·생체·행위·위치)과 보안 솔루션(방화벽·IDS·IPS·WAF·DLP·SIEM)을 시험 답안 기준에 맞춰 정리합니다.


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 블로그 이름