정보처리기사 실기 — 09 소프트웨어 개발 보안 구축 정리
실기에서 “소프트웨어 개발 보안 구축/시큐어코딩”은 보통 소스코드 보안 약점(총 47개)을 7개 분류로 묶어 단답·서술로 출제됩니다. 아래는 시험용으로 개념 → 약점 분류 → 대표 공격/대응 순서로 압축 정리한 문서입니다.
1. 핵심 목표(시험용 한 줄)
- 기밀성(Confidentiality): 인가되지 않은 열람 방지(암호화/접근통제)
- 무결성(Integrity): 인가되지 않은 변경 방지(검증/서명/권한)
- 가용성(Availability): 서비스 지속 제공(자원관리/DoS 대응)
2. 소스코드 보안 약점 47개 — 7개 분류(암기용)
시험에서는 “( )은/는 7개로 분류된다” 류로 자주 나옵니다.
분류명만 정확히 쓰고, 대표 예시 1~2개를 붙이면 득점이 안정적입니다.
| 분류(7) | 요지(한 줄) | 대표 예시(키워드) |
|---|---|---|
| 입력데이터 검증 및 표현 | 외부 입력 검증/정규화 미흡 | SQL Injection, XSS, CSRF, 경로 조작, OS 명령 삽입 |
| 보안기능 | 인증·인가·암호화 등 보안기능 구현 부실 | 부적절한 인가, 평문 저장/전송, 하드코드 비밀번호/키 |
| 시간 및 상태 | 동시성/상태 관리 오류 | 경쟁조건(TOCTOU), 종료되지 않는 반복/재귀 |
| 에러 처리 | 예외/오류 처리 부실로 정보 노출 | 오류 메시지 정보 노출, 예외 미처리 |
| 코드 오류 | 개발 실수로 취약점 유발 | NPE, 초기화 누락, 자원 해제 오류 |
| 캡슐화 | 중요정보/기능 은닉 미흡 | 디버그 코드 잔존, private 데이터 노출 |
| API 오용 | 취약/부적절한 API 사용 | 취약한 API 사용, DNS lookup 의존 보안결정 |
3. 분류별 “대표 취약점 → 방지 포인트” (실기 서술 템플릿)
3.1 입력데이터 검증 및 표현
- SQL Injection
- 원인: 문자열 결합으로 쿼리 생성, 입력값 검증 미흡
- 대응: PreparedStatement/파라미터 바인딩, 화이트리스트 검증, 최소 권한 DB 계정
- XSS
- 원인: 출력 인코딩/필터링 미흡, 사용자 입력을 HTML에 그대로 반영
- 대응: 출력 시점 인코딩(escape), CSP, 입력 정규화(필요 시)
- CSRF
- 원인: 사용자의 세션을 악용한 위조 요청 방어 미흡
- 대응: CSRF 토큰, SameSite 쿠키, 중요 요청 재인증/재확인
- 경로 조작(Directory Traversal) / 자원 삽입
- 대응: 경로 화이트리스트, canonical path 비교, 업로드 파일명/확장자/MIME 검증
- OS 명령어 삽입
- 대응: 쉘 호출 최소화, API 기반 처리, 인자 분리/화이트리스트
3.2 보안기능
- 인증(Authentication)
- 대응: 강한 비밀번호 정책, 로그인 시도 제한(락/지연), MFA(가능 시)
- 인가(Authorization)
- 대응: “서버에서” 권한검사, 최소 권한, 객체/속성 수준 권한 분리
- 암호화/키 관리
- 대응: 검증된 알고리즘 사용, 충분한 키 길이, 키/비밀번호 하드코딩 금지, 키는 분리 보관 및 로테이션
- 중요정보 저장/전송
- 대응: 저장 시 암호화(필요 시), 전송은 TLS, 로그/에러에 민감정보 마스킹
3.3 시간 및 상태
- 경쟁조건(TOCTOU)
- 원인: 검사 시점과 사용 시점 사이에 상태가 바뀜
- 대응: 원자적 처리(락/트랜잭션), 재검증, 안전한 파일 생성/권한 설정
- 종료되지 않는 반복/재귀
- 대응: 종료 조건 보장, 타임아웃/상한(최대 반복/깊이), 자원 사용량 제한
3.4 에러 처리
- 오류 메시지 정보 노출
- 대응: 사용자에게는 일반 메시지(추적 ID), 상세 스택트레이스는 내부 로그로 분리
- 부적절한 예외 처리/오류 상황 대응 부재
- 대응: 예외 유형별 처리, 실패 시 안전한 기본값(fail-safe), 자원 정리
3.5 코드 오류
- Null Pointer 역참조 / 초기화되지 않은 변수
- 대응: 입력/상태 null 체크, 초기화 규칙 확립, 방어적 코딩
- 부적절한 자원 해제 / 해제된 자원 사용
- 대응: 자원 생명주기 일관화(try-with-resources 등), 이중 해제 방지
3.6 캡슐화
- 제거되지 않은 디버그 코드/시스템 정보 노출
- 대응: 배포 전 디버그 제거, 민감정보 출력 금지, 접근제어자/은닉 강화
- Private 데이터/배열의 외부 노출
- 대응: 방어적 복사(불변/복사본 반환), 외부에서 내부 상태 직접 변경 불가하게 설계
3.7 API 오용
- 취약한 API 사용
- 대응: 안전한 대체 API 사용, 보안 권고/패치 적용, 의존성 취약점 점검
- DNS lookup에 의존한 보안결정
- 대응: DNS 결과만 신뢰하지 않기, 추가 검증(IP/인증서/서명 등), 네트워크 경계 통제
4. 실기 단답·서술 “자주 나오는 문장” 모음
- “소스코드 보안 약점은 총 47개이며 7개 분류로 구분된다.”
- “SQL 삽입 공격은 PreparedStatement 등 파라미터 바인딩으로 방지한다.”
- “XSS는 출력 시점 인코딩(escape)으로 방지한다.”
- “CSRF는 CSRF 토큰, SameSite 쿠키로 방지한다.”
- “경쟁조건(TOCTOU)은 검사-사용 사이 상태 변경으로 발생하며 원자적 처리로 완화한다.”
- “오류 메시지는 사용자에게 최소 정보만 제공하고 상세는 내부 로그로 관리한다.”
5. 빠른 체크리스트(시험 직전 2분)
- 7개 분류명을 순서 상관 없이 정확히 쓸 수 있다
- 입력검증 분류에서 SQLi/XSS/CSRF를 예로 들 수 있다
- 보안기능 분류에서 인가/암호화/평문저장/하드코드를 예로 들 수 있다
- 시간 및 상태에서 TOCTOU를 한 줄로 설명할 수 있다
- 에러처리에서 오류 메시지 정보노출 대응을 말할 수 있다
- API 오용에서 취약한 API 사용/DNS 의존 결정을 예로 들 수 있다
'BackEnd > 정보처리기사' 카테고리의 다른 글
| #정보처리기사 실기 — 11 응용 SW 기초 기술 활용 정리 (0) | 2026.05.03 |
|---|---|
| 정보처리기사 실기 — 10 애플리케이션 테스트 관리 정리 (0) | 2026.04.28 |
| 정보처리기사 실기 — 08 서버 프로그램 구현 정리 (1) | 2026.04.26 |
| 정보처리기사 실기 - 07. SQL 응용 정리 (1) | 2026.04.25 |
| 정보처리기사 실기 — 06 프로그래밍 언어 활용 정리 (0) | 2026.04.24 |