Application & Data Security
소프트웨어 코드와 저장된 데이터의 생애 주기 전반을 보호하기 위한 보안 코딩, 취약점 진단 및 데이터 암호화 물리와 전략을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
애플리케이션 및 데이터 보안(Application & Data Security, ADS)은 실질적으로 가치가 담긴 소프트웨어 로직과 그 데이터를 지키는 세밀한 방어 기법을 다룹니다.
인프라가 성벽이라면, 애플리케이션은 보안의 '최종 성소'입니다. 학습자는 웹 애플리케이션의 10대 취약점인 OWASP Top 10을 물리적으로 분석하고, 개발 단계에서 결함을 예방하는 보안 코딩(Secure Coding) 원칙을 배웁니다. 또한, 휴면 데이터(At-rest)와 전송 중인 데이터(In-transit)의 암호화 물리, 그리고 개인정보 보호를 위한 비식별화 기술을 학습하여 데이터 주권을 기술적으로 보장하는 역량을 갖춥니다.
2. Scope & Boundaries
In-Scope
- Secure Development: 보안 코딩 가이드라인, 정적/동적 보안 분석(SAST/DAST) 물리
- Web Security: SQL injection, XSS, CSRF 등 주요 웹 취약점 대응 역학
- Data Protection: DB 암호화, 토큰화(Tokenization), 데이터 마스킹 물리
- Privacy Tech: 개인정보 생애 주기 관리 및 비식별화(K-Anonymity 등) 논리
Out-of-Scope
- 상세한 네트워크 방화벽 아키텍처 설계 (10-02 IPS 영역으로 위임)
- 암호학적 알고리즘의 수학적 증명 (10-01 SFC 영역으로 위임)
Boundaries
- ADS vs. Software Testing: 09-02 노드가 '기능의 무결성'을 검증한다면, ADS는 '기술적 약점을 이용한 악의적 침입의 불가능성'을 증명하는 데 집중합니다.
3. Counterexample
- 단순히 취약점 스캐닝 도구를 돌려보고 리포트를 뽑는 것은 ADS 학습이 아닙니다. 왜 사용자 입력값의 **검증(Validation)**이 누락되면 데이터베이스의 논리 구조가 붕괴(SQLi)되는지 그 컨텍스트 혼동(Context Confusion) 물리적 원리를 설명하고, 암호화 키를 코드 내부에 하드코딩하는 것이 왜 데이터 보안의 근본적인 실패 사례가 되는지 키 관리 관점에서 논증할 수 있어야 합니다.
4. Prerequisites
- 보안 기초 및 암호학 (Basic): 암호화/해시의 기본 기능과 용도 이해가 필요합니다. (10. SFC)
- 웹 프로토콜 및 API 패러다임 (Recommended): HTTP 헤더와 요청/응답 구조에 대한 지식이 권장됩니다. (08. WAP)
5. Learning Map
- Threat Perception: 코드를 통해 발생할 수 있는 사고의 유형(OWASP 등)을 익힙니다.
- Coding Guardrails: 설계와 개발 단계에서 취약점을 원천 태단하는 규칙을 배웁니다.
- Data Fortress: 데이터가 저장될 때와 흐를 때 각각 어떤 물리적 보호 장치를 갖추어야 하는지 학습합니다.
- Assessment Flow: 완성된 시스템을 공격자의 관점에서 진단하고 개선하는 절차를 탐구합니다.
6. Learning Topics
Basic
Core: 웹 보안과 취약점의 물리 (Web Vulnerabilities)
- Why to Learn: 가장 흔한 공격 경로인 웹 인터페이스의 구멍을 파악하여 기초적인 외부 방어선을 구축하기 위함입니다.
- What to Learn:
- OWASP Top 10 항목별 기술적 정의와 발생 물리
- SQL 인젝션: 쿼리 문법의 논리적 변조 역학
- XSS(교차 사이트 스크립팅): 브라우저 내 스크립트 강제 주입 물리
- How to Learn:
- DVWA(Damn Vulnerable Web App)와 같은 도구에서 의도된 취약점을 직접 공격하며 원리 파악
- 입력값에 특수 문자(예:
',<)를 넣어 시스템이 어떻게 반응하는지 관측
- Implement: 주요 취약점별 공격 시나리오와 이를 수동으로 검증하는 체크리스트
Recommended
Core: 보안 코딩 원칙과 자동화 진단 (Secure Coding & Analysis)
- Why to Learn: 개발자가 실수를 하더라도 시스템이 안전하게 유지되도록 설계 및 구현 가이드를 적용하기 위해서입니다.
- What to Learn:
- 입력값 검증과 출력 필터링의 시스템적 강제 물리
- 정적 분석(SAST): 소스 코드 패턴 기반의 취약점 탐지 역학
- 동적 분석(DAST): 구동 중인 앱에 변조된 데이터를 넣어 응답을 확인하는 물리
- How to Learn:
- SonarQube와 같은 도구를 프로젝트에 연동하여 보안 취약 경고를 해결하는 실습
- 파라미터화된 쿼리(Prepared Statement)를 적용하여 SQLi가 물리적으로 차단되는 과정 분석
- Implement: 팀 내에서 준수해야 할 필수 보안 코딩 가이드라인 문서
Practical
Core: 데이터 암호화 및 비식별화 실무 (Data Safeguards)
- Why to Learn: 혹시 서버가 뚫리더라도 원본 데이터는 유출되지 않게 하는 '최후의 보루'를 구축하기 위함입니다.
- What to Learn:
- 정형/비정형 데이터의 컬럼 단위 암호화 구성 물리
- 데이터의 휴면(At-rest), 이동(In-transit), 사용(In-use) 중 보호 전략
- 개인정보 보호를 위한 마스킹, 가명화, 익명화 기술의 차이
- How to Learn:
- DB 수준에서 암호화 기능을 활성화하고, 실제 데이터 파일 내의 값이 어떻게 비가독적으로 변하는지 확인
- TLS 1.3 설정을 통해 평문 패킷이 암호화되어 전송되는 과정을 캡처 및 분석
- Implement: 민감 정보 생애 주기에 따른 단계별 암호화 및 접근 제어 설계도
Advanced
Core: DevSecOps와 애플리케이션 자가 보호 (Advanced AppSec)
- Why to Learn: 고속 배포 환경에서도 보안 품질을 균일하게 유지하고 지능형 공격에 자동 대응하기 위해서입니다.
- What to Learn:
- DevSecOps 파이프라인: 빌드/배포 시 보안 검사 자동화 시퀀스
- RASP(Runtime Application Self-Protection): 앱 내부에서 이상 행위를 실시간 감시하는 역학
- 공급망 보안(Supply Chain Security): 오픈소스 라이브러리와 의존성 취약점 관리 물리
- How to Learn:
- CI/CD 파이프라인에 의존성 스캔 도구(Snyk 등)를 추가하여 취약한 라이브러리 사용 시 빌드를 중단시키는 실습
- API 게이트웨이와 연동된 트래픽 분석 기반의 악성 요청 차단 시뮬레이션
- Implement: 소프트웨어 공급망 보안을 포함한 전사적 DevSecOps 전략 로드맵
7. Terminology
8. References
Primary References
- [P3] CyBOK - Software Security / Privacy & Online Rights — Application-level standards.
- [P2] SWEBOK v4.0 - Software Construction / Quality — Secure implementation foundations.
Secondary References
- [OWASP Top 10 Project] — The standard for web application risk assessment.
- [The Web Application Hacker's Handbook] Dafydd Stuttard — Deep dive into web attacks.
Industry References
- [Google - Secure Software Development Framework (SSDF)] — Industry process standard.
- [GDPR Articles] — Privacy and data protection regulations for software.
9. Final Checklist
Primary Checklist
- 사용자 입력값이 비즈니스 로직에 전달되기 전, 서버 측(Server-side)에서 검증되어야 하는 물리적 보안 필연성을 기술할 수 있는가? (P2)
- 데이터베이스 통신 시 '동적 SQL'이 '정적 SQL(Parametrized)'보다 보안상 취약한 이유를 데이터 처리 역학 관점에서 설명 가능한가? (P3)
Secondary Checklist
- 암호화된 데이터를 전송할 때, 데이터의 무결성과 기밀성을 동시에 보장하기 위한 암호화 모드(예: GCM)의 이점을 이해하는가?
- 소스 코드에 포함된 민감 정보를 탐지(Secret Scanning)하고, 이를 외부 관리 도구로 전환하는 자동화 환경을 구축할 수 있는가?
Industry Checklist
- 실무 서비스의 개인정보 처리 방침에 따라, 데이터 보존 기간이 만료된 데이터를 물리적으로 안전하게 파기하는 절차를 설계할 수 있는는가? (SFIA)
- 외부 라이브러리(NPM, Maven 등)의 CVE 취약점 공시를 모니터링하고, 패치 수준에 따른 시스템 영향도를 평가할 수 있는가?