가. 취약점 개요 사례1 : 불충분한 세션관리 인증시 일정한 규칙이 존재하는 세션ID가 발급되거나 세션 타임아웃을 너무 길게 설정한 경우 공격자에 의해 사용자 권한이 도용될 수 있는 취약점이다. 사례2 : 잘못된 세션에 의한 정보노출 다중 스레드 환경에서는 싱글톤(Singleton)객체 필드에 경쟁조건(Race Condition) 발생할 수 있다. 따라서, 다중 스레드 환경인 java의 서블릿(servlet) 등에서는 정보를 저장하는 멤버변수가 포함되지 않도록 하여, 서로 다른 세션 간에 데이터를 공유하지 않도록 해야 한다. 나. 설계 시 고려사항 ① 세션 간 데이터가 공유되지 않도록 설계해야 한다. 스레드로 동작하는 웹애플리케이션의 컨트롤러 컴포넌트나, 싱글톤 객체로 생성되는 서비스 컴포넌트..
가. 취약점 개요 사례1 : 오류 메시지 정보노출 웹 서버에 별도의 에러페이지를 설정하지 않은 경우, 에러 메시지로 서버 데이터 정보 등 공격에 필요 한 정보가 노출되는 취약점이다. 사례2 : 시스템 정보노출시스템, 관리자, DB정보 등 시스템의 내부 데이터가 공개되면, 공격자에게 또 다른 공격의 빌미를 제공하게 된다. 나. 설계시 고려사항 ① 명시적인 예외의 경우 예외처리 블럭을 이용하여 예외 발생시 수행해야 하는 기능이 구현 되도록 해야 한다. 각 프로그래밍 언어별 예외처리 문법에 대한 안전한 사용방법을 기술하고, 모든 개발자가 구현 단계에서 안전하게 예외처리를 할 수 있도록 시큐어코딩 규칙을 정의한다. [예시] 자바 플랫폼 사용시프로그램에서 발생된 에러 정보를 로깅하는 Logger AP..
가. 취약점 개요 프로그램이 보안과 관련된 민감한 데이터를 평문으로 송·수신할 경우, 통신채널 스니핑으로 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있다. 나. 설계시 고려사항 ① 인증정보와 같은 민감한 정보 전송 시 안전하게 암호화해서 전송해야 한다. 분석단계에서 정의된 중요정보를 네트워크로 전송해야 하는 경우 안전한 암호모듈로 암호화한 뒤 전송하거나 안전한 통신 채널을 사용하도록 설계한다. 안전한 암호화는 “암호연산” 설계항목을 충족시 키는 암호화 알고리즘이나 암호키를 사용한다. ② 쿠키에 포함되는 중요정보는 암호화해서 전송해야 한다. 쿠키에는 중요정보가 포함되지 않도록 설계해야 하지만 부득이 쿠키에 중요정보가 포함되어야 하는 경우 반드시 세션쿠키로 설정되어야 하며, 전달되는 중요정..
가. 취약점 개요 사례1 : 중요정보 평문저장메모리나 디스크에서 처리하는 중요데이터(개인정보, 인증정보, 금융정보)가 제대로 보호되지 않을 경우, 보안이나 데이터의 무결성이 훼손될 수 있다. 특히 프로그램이 개인정보, 인증정보 등의 사용자 중요정보 및 시스템 중요정보를 처리하는 과정에서 이를 평문으로 저장할 경우 공격자에게 민감한 정보가 노출될 수 있는 취약점이다. 사례2 : 사용자 하드디스크에 저장된 쿠키를 통한 정보노출 개인정보, 인증정보 등이 영속적인 쿠키(Persistent Cookie)에 저장된다면, 공격자는 쿠키에 접근할 수 있는 보다 많은 기회를 가지게 되며, 이는 시스템을 취약하게 만든다. 나. 설계시 고려사항 ① 중요정보 또는 개인정보는 암호화해서 저장해야 한다. 중요정보가 ..
가. 취약점 개요 사례1 : 취약한 암호알고리즘 사용 소프트웨어 개발자들은 환경설정 파일에 저장된 비밀번호를 보호하기 위하여 간단한 인코딩 함수를 이용하여 비밀번호를 감추는 방법을 사용하기도 한다. 그렇지만 base64와 같은 지나치게 간단한 인코딩 함수를 사용하면 비밀번호를 안전하게 보호할 수 없다. 사례2 : 충분하지 않은 키 길이 사용 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있고 이를 이용해 공격자가 암호화된 데이터나 비밀번호를 복호화 할 수 있게 된다. 사례3 : 적절하지 않은 난수 값 사용 예측 가능한 난수를 사용하는 것은 시스템의 보안약점을 유발한다. 예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격..
가. 취약점 개요 사례1 : 취약한 비밀번호 사용 회원가입 시 안전한 비밀번호 생성규칙이 적용되지 않아서 취약한 비밀번호로 회원가입이 가능할 경우 무차별 대입 공격으로 비밀번호가 누출될 수 있다. 사례2 : 취약한 비밀번호 복구 비밀번호 복구 메커니즘(아이디/비밀번호 찾기 등)이 취약한 경우 공격자가 불법적으로 다른 사용자의 비밀번호를 획득, 변경, 복구할 수 있다. 사례3: 하드코드된 중요정보 프로그램 코드 내부에 비밀번호를 하드 코딩하여 내부 인증에 사용하거나 외부 컴포넌트와 통신을 하는 경우, 관리자용 계정 정보가 노출될 수 있어 위험하다. 또한, 코드 내부에 하드코드된 비밀번호가 인증실패를 발생시키는 경우, 시스템 관리자가 그 실패의 원인을 파악하기 쉽지 않다. 나. 설계시 고려사..