2026/08/01 16

Exceptional Conditions Secure Coding: Fail Closed·Rollback·안전한 오류 응답

정상 경로가 안전하다는 사실만으로 시스템이 안전해지지는 않습니다. Database Timeout, 권한 Service 장애, 예상하지 못한 Status Code, Disk 부족과 Null 값처럼 정상 전제를 깨는 상황에서 시스템이 어떤 상태를 남기고 무엇을 허용하는지가 실제 보안 경계를 결정합니다.이 글은 2026년 8월 기준 OWASP(Open Worldwide Application Security Project, 오픈 월드와이드 애플리케이션 보안 프로젝트) Top 10:2025 A10 Mishandling of Exceptional Conditions를 바탕으로 Java 21·Spring Boot 3 환경의 합성 예제를 설명합니다. 실제 고객, 계정, 거래, 내부 URL, 운영 임계값과 장애 기록은 ..

보안 2026.08.01

Security Logging & Alerting Secure Coding: Log Forging·민감정보·탐지

공격을 차단하는 코드가 있어도 우회 시도를 기록하지 않으면 다음 공격을 알아채기 어렵습니다. Log를 남겨도 아무도 보지 않거나 Alert가 담당자에게 도착하지 않으면 대응은 시작되지 않습니다. Alert가 도착해도 무엇을 확인하고 차단해야 하는지 Playbook이 없으면 중요한 시간이 다시 사라집니다.이 글은 2026년 8월 기준 OWASP(Open Worldwide Application Security Project, 오픈 월드와이드 애플리케이션 보안 프로젝트) Top 10:2025 A09 Security Logging and Alerting Failures와 OWASP Logging Cheat Sheet, NIST(National Institute of Standards and Technology,..

보안 2026.08.01

Software or Data Integrity Secure Coding: 역직렬화·Update·Artifact 무결성

무결성(Integrity)은 데이터가 깨지지 않았다는 뜻만이 아닙니다. 시스템이 사용하는 Software, Configuration, Update와 업무 데이터가 기대한 출처에서 왔고, 승인된 내용이며, 전달 과정에서 바뀌지 않았고, 지금 사용해도 되는 상태임을 확인하는 성질입니다.파일의 Hash가 일치해도 공격자가 그 Hash까지 바꿀 수 있다면 신뢰할 수 없습니다. Digital Signature가 유효해도 오래된 취약 Version을 재전송한 것이라면 안전한 Update가 아닙니다. JSON 문법이 올바르더라도 Client가 role=ADMIN을 넣을 수 있다면 중요한 데이터의 의미적 무결성이 깨집니다.이 글은 2026년 8월 기준 OWASP(Open Worldwide Application Secu..

보안 2026.08.01

Authentication Failures Secure Coding: Brute Force·MFA·Session

인증(Authentication)은 로그인 화면 하나가 아닙니다. 계정 등록부터 비밀번호 변경, 다중 요소 인증(Multi-Factor Authentication, MFA) 등록과 복구, 세션(Session) 생성·갱신·폐기까지 이어지는 신원 수명주기입니다.로그인 요청에 Rate Limit을 추가했어도 다음 중 하나가 열려 있으면 계정은 탈취될 수 있습니다.존재하는 계정만 다른 오류 메시지나 응답 시간을 반환합니다.하나의 IP만 제한해 분산 Credential Stuffing을 놓칩니다.MFA를 켰지만 분실 복구 절차가 비밀번호만 요구합니다.로그인 후에도 인증 전 Session ID를 그대로 사용합니다.Logout은 Cookie만 지우고 Server Session을 폐기하지 않습니다.비밀번호를 바꿔도 기..

보안 2026.08.01

Insecure Design Secure Coding: Abuse Case·Rate Limit·업무 흐름 우회

Insecure Design은 보안 Header 하나를 빠뜨리거나 조건문 하나를 잘못 작성한 문제와 다릅니다. 필요한 통제 자체가 요구사항과 설계에 없으면 코드를 정확히 구현해도 시스템은 안전하지 않습니다.예를 들어 다음 코드는 모두 정상 동작할 수 있습니다.결제 완료 API가 요청되면 주문을 완료 상태로 바꿉니다.쿠폰 적용 API가 유효한 쿠폰의 할인액을 반환합니다.초대 API가 입력된 주소로 초대장을 보냅니다.보고서 API가 요청된 기간의 데이터를 집계합니다.하지만 결제 증명 없이 완료 API를 호출할 수 있고, 같은 쿠폰을 동시에 두 번 쓸 수 있고, 초대 횟수와 보고서 범위에 한도가 없다면 문제는 구현 Bug 이전에 누락된 보안 요구사항과 업무 불변식입니다.이 글은 2026년 8월 기준 OWASP..

보안 2026.08.01

Injection Secure Coding 심화: SQL·NoSQL·Command·Template Injection

Injection은 특수문자 몇 개를 막는 문제가 아닙니다. 외부에서 온 Data가 Database, Shell, Template Engine 같은 Interpreter의 구조나 명령으로 재해석되는 경로가 생기면 발생합니다.같은 입력도 어디에 도달하느냐에 따라 위험이 달라집니다.검색어가 Prepared Statement의 값으로 Bind되면 SQL Data입니다.같은 검색어가 Column 이름이나 ORDER BY 문자열에 연결되면 SQL 구조가 됩니다.JSON Object를 그대로 MongoDB Filter로 넘기면 Client가 Query Operator를 선택할 수 있습니다.문자열 배열로 Process를 실행해도 공격자가 Option을 추가할 수 있으면 Argument Injection이 남습니다.안..

보안 2026.08.01

Cryptographic Failures Secure Coding: Password Hash·Token·Key 관리

강한 Algorithm 이름을 하나 선택했다고 암호 설계가 끝나는 것은 아닙니다. Password를 AES로 암호화하거나, JWT Signature만 확인하고 Audience를 검증하지 않거나, AES-GCM에서 같은 Key와 IV를 재사용하면 표면적으로는 암호화를 사용해도 보호 목표를 달성하지 못합니다.Cryptographic Failures는 다음과 같은 설계·구현·운영 실패를 함께 포함합니다.민감정보를 평문으로 저장하거나 전송합니다.Password에 SHA-256 같은 빠른 Hash를 사용합니다.JWT Algorithm, Issuer, Audience와 만료를 정확히 검증하지 않습니다.암호 Key를 Source, Image, 환경 공용 설정이나 Log에 노출합니다.AES-GCM의 같은 Key·IV ..

보안 2026.08.01

Software Supply Chain Secure Coding: 의존성·SBOM·서명·배포 Gate

우리 코드가 안전해도 빌드에 들어온 라이브러리, Plugin, Base Image 또는 CI Action이 바뀌면 최종 Artifact는 달라집니다. 배포 파일이 정상적인 Source와 승인된 Build에서 만들어졌는지 확인하지 않으면, 취약한 의존성뿐 아니라 변조된 Build 과정도 운영에 들어갈 수 있습니다.Software Supply Chain 보안은 CVE Scan을 통과했는가라는 한 가지 질문으로 끝나지 않습니다.어떤 직접·전이 의존성이 실제로 포함됐는가?의존성을 어느 Repository에서 어떤 Byte로 받았는가?누가 어떤 Source Revision과 Build Workflow로 Artifact를 만들었는가?SBOM과 서명이 지금 배포하려는 Artifact Digest에 연결돼 있는가?운영..

보안 2026.08.01

Security Misconfiguration Secure Coding: CORS·Debug·기본 계정·보안 Header

애플리케이션 코드에 SQL Injection이 없어도 운영 설정 하나로 내부 정보가 외부에 노출될 수 있습니다. 개발 편의를 위해 열어 둔 CORS, 상세 오류, Actuator Endpoint와 기본 계정은 배포 환경이 바뀌는 순간 공격 표면이 됩니다.Security Misconfiguration은 특정 코드 한 줄의 결함이라기보다 안전한 기본값, 환경별 차이, 배포 검증이 함께 무너진 상태입니다.모든 Origin을 허용하면서 Cookie 인증도 사용합니다.운영 API가 Stack Trace, SQL 문장과 파일 경로를 반환합니다./actuator/env, /heapdump 또는 관리 Console이 외부에 열려 있습니다.설치 직후의 관리자 계정과 Password가 그대로 남아 있습니다.Gateway에..

보안 2026.08.01

Broken Access Control Secure Coding: IDOR·권한 우회·Tenant 격리

인증에 성공했다는 사실은 모든 데이터와 기능을 사용할 수 있다는 뜻이 아닙니다. 인증(Authentication)은 요청자가 누구인지 확인하고, 인가(Authorization)는 그 주체가 이 리소스에 이 동작을 수행해도 되는지 판단합니다.Broken Access Control은 이 두 번째 판단이 빠지거나 서로 다른 경로에서 일관되지 않을 때 발생합니다.URL의 주문 ID를 다른 값으로 바꿨더니 다른 고객의 주문이 보입니다.일반 사용자가 관리자 Endpoint를 직접 호출할 수 있습니다.Tenant A 사용자가 Tenant B의 파일이나 Export 결과를 내려받습니다.수정 DTO에 role, ownerId, tenantId를 추가했더니 보호 필드가 바뀝니다.단건 조회는 막았지만 목록, 검색, 캐시와 ..

보안 2026.08.01