본문 바로가기

구현단계 보안약점 기준49

구현단계 보안약점 기준 - 오류 메시지 정보노출 유형 에러처리 보안약점 오류 메시지 정보노출 개요응용프로그램이 실행환경, 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우, 공격자의 악성 행위를 도울 수 있다.예외발생 시 예외이름이나 스택 트레이스를 출력하는 경우, 프로그램 내부구조를 쉽게 파악할 수 있기 때문이다.보안대책오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 한다. 소스코드에서 예외상황은 내부적으로 처리하고 사용자에게 민감한 정보를 포함하는 오류를 출력하지 않도록 미리 정의된 메시지를 제공하도록 설정한다.진단방법해당 취약점에서 시스템 환경, 유저정보, 민감한 정보 등에 대한 기준을 정적도구가 판단하기 어려움에 따라 진단원이 출력함수 등으로 외부에 출력되는 값 중 민감한 정보 .. 2025. 6. 4.
구현단계 보안약점 기준 - 종료되지 않는 반복문 또는 재귀 함수 유형 시간 및 상태 보안약점 종료되지 않는 반복문 또는 재귀 함수 개요재귀의 순환횟수를 제어하지 못하여 할당된 메모리나 프로그램 스택 등의 자원을 과다하게 사용하면 위험하다. 대부분의 경우, 귀납 조건(Base Case)이 없는 재귀함수는 무한 루프에 빠져 들게 되고 자원 고갈을 유발함으로써 시스템의 정상적인 서비스를 제공할 수 없게 한다.보안대책모든 재귀 호출시, 재귀 호출 횟수를 제한하거나, 초기값을 설정(상수)하여 재귀 호출을 제한해야 한다.진단방법자신을 호출하는 재귀함수나 메소드가 존재하는지 식별하고, 해당 함수 내에 제어문으로 해당 함수에서 리턴될 수 있는지 확인한다.제어문으로 재귀함수를 빠져나올 수 있으면 안전하다.연관된 설계단계 기준- 코드예제 ● 안전하지 않은 코드 예 (C)#include.. 2025. 6. 4.
구현단계 보안약점 기준 - 경쟁조건: 검사시점과 사용시점(TOCTOU) 유형 시간 및 상태 보안약점 경쟁조건: 검사시점과 사용시점(TOCTOU) 개요병렬시스템(멀티프로세스로 구현한 응용프로그램)에서는 자원(파일, 소켓 등)을 사용하기에 앞서 자원의 상태를 검사한다.하지만, 자원을 사용하는 시점과 검사하는 시점이 다르기 때문에, 검사하는 시점(Time Of Check)에 존재하던 자원이 사용하던 시점(Time Of Use)에 사라지는 등 자원의 상태가 변하는 경우가 발생한다. 예를 들어, 프로세스 A와 B가 존재하는 병렬시스템 환경에서 프로세스 A는 자원사용(파일 읽기)에 앞서 해당 자원(파일)의 존재 여부를 검사(TOC) 한다.이때는 프로세스 B가 해당 자원(파일)을 아직 사용(삭제)하지 않았기 때문에, 프로세스 A는 해당 자원(파일)이 존재한다고 판단한다.그러나 프로세스 .. 2025. 6. 4.
구현단계 보안약점 기준 - 신뢰할 수 없는 데이터의 역직렬화 유형 코드오류 보안약점 신뢰할 수 없는 데이터의 역직렬화 개요직렬화(Serialization)는 프로그램에서 특정 클래스의 현재 인스턴스 상태를 다른 서버로 전달하기 위해 클래스의 인스턴스 정보를 바이트 스트림으로 복사하는 작업으로, 메모리 상에서 실행되고 있는 객체의 상태를 그대로 복제하여 파일로 저장하거나 수신측에 전달하게 된다. 역직렬화(Deserialization)는 반대 연산으로 바이너리 파일이나 바이트 스트림으로부터 객체 구조로 복원하게 된다. 이때, 송신자가 네트워크를 이용하여 직렬화된 정보를 수신자에게 전달하는 과정에서 공격자가 전송 또는 저장된 스트림을 조작할 수 있는 경우에는 신뢰할 수 없는 역직렬화를 이용하여 무결성 침해, 원격 코드 실행, 서비스 거부 공격 등이 발생할 수 있는 보안.. 2025. 6. 4.
구현단계 보안약점 기준 - 반복된 인증시도 제한 기능 부재 유형보안기능보안약점 반복된 인증시도 제한 기능 부재 개요일정 시간 내에 여러 번의 인증을 시도하여도 계정잠금 또는 추가 인증 방법 등의 충분한 조치가 수행되지 않는 경우, 공격자는 예상 ID와 비밀번호들을 사전(Dictionary)으로 만들고 무차별 대입(bruteforce)하여 로그인 성공 및 권한획득이 가능하다.보안대책인증시도 횟수를 적절한 횟수로 제한하고 설정된 인증실패 횟수를 초과했을 경우 계정을 잠금하거나 추가적인 인증과정을 거쳐서 시스템에 접근이 가능하도록 한다.진단방법인증을 위한 함수를 호출하는 경우, 이 함수의 호출 횟수를 확인하고 함수의 호출을 제한하는 코드가 존재하는지 확인한다. 그렇지 않은 경우는 취약하다고 판단한다.연관된 설계단계 기준 인증 수행 제한 코드예제 ● 안전하지 않은 코드.. 2025. 6. 4.
구현단계 보안약점 기준 - 무결성 검사 없는 코드 다운로드 유형보안기능보안약점 무결성 검사 없는 코드 다운로드 개요원격으로부터 소스코드 또는 실행파일을 무결성 검사 없이 다운로드 받고, 이를 실행하는 제품들이 종종 존재한다. 이는 호스트 서버의 변조, DNS 스푸핑 (Spoofing) 또는 전송 시의 코드 변조 등의 방법을 이용하여 공격자가 악의적인 코드를 실행할 수 있도록 한다.보안대책DNS 스푸핑(Spoofing)을 방어할 수 있는 DNS lookup을 수행하고 코드 전송 시 신뢰할 수 있는 암호 기법을 이용하여 코드를 암호화한다. 또한 다운로드한 코드는 작업 수행을 위해 필요한 최소한의 권한으로 실행하도록 한다.진단방법 클래스를 로드하기 위한 코드를 확인하고 클래스를 로드하기 전에 체크섬을 실행 및 비교하여 로드하려는 코드가 변조되지 않았음을 확인하다. 연.. 2025. 6. 4.