
가. 원인 - 입력된 데이터에 대한 유효성 검증을 하지 않고 DB 쿼리의 일부로 사용 - 입력값 필터링 없이 동적쿼리에 적용 후 사용 나. 영향 - 로그인 인증우회 - DB 데이터 유출/수정/삭제 - 시스템 명령어 실행 다. 보안대책 - 정적쿼리 사용 - 쿼리구조를 변경할 수 있는 문자열을 검사 후 쿼리문 생성에 사용 - PreparedStatement 객체 등을 이용하여 컴파일 된 쿼리문을 사용 - DB 사용자 권한 최소화 - 500 서버오류 정보 노출 제한 라. 안전한 코드 1. JDBC API 사용 String id = request.getParameter("id"); String sql = "select * from user_info where id = ?"; Connection con = db...

가. 취약점 개요 - 일정한 규칙을 갖는 세션ID가 발급되거나, 세션 타임아웃이 너무 길게 설정된 경우, 사용자 권한도용이 가능한 취약점 → (불충분한 세션관리) - 다중 스레드의 싱글톤 객체에서 멤버변수 등을 통해 서로 다른 세션 간 데이터를 공유로 인해 경쟁조건 발생하는 취약점 → 잘못된 세션에 의한 정보노출 나. 요구사항 1. 세션간 데이터가 공유되지 않도록 설계 2. 세션을 안전하게 관리 3. 세션ID를 안전하게 관리 다. 요구사항 별 고려사항 1. 세션간 데이터가 공유되지 않도록 설계 - 싱글톤 객체로 생성되는 서비스 컴포넌트 확인 - 해당 컴포넌트에 읽고 쓰기가 가능한 멤버변수, 클래스 변수를 사용하지 않도록 설계 2. 세션을 안전하게 관리 - 모든 페이지에서 로그아웃 가능하도록 UI 설계 -..

가. 취약점 개요 - 에러페이지를 설정하지 않아, 에러 메시지를 통해 서버 데이터 정보 등의 공격에 필요한 정보가 노출되는 취약점 → 오류 페이지를 통한 정보노출 - 에러를 통해 시스템의 내부 데이터가 공개되어, 또 다른 공격의 빌미를 제공하는 취약점 → 시스템 데이터 정보 노출 나. 요구사항 1. 명시적 예외에 대해 예외처리 블럭을 통해 예외처리 기능을 구현 2. 입력값 범위를 체크하여 정상동작을 보장 3. 상세한 에러정보를 노출하지 않도록 구현 다. 요구사항 별 고려사항 1. 명시적 예외에 대해 예외처리 블럭을 통해 예외처리 기능을 구현 - 언어별 예외처리 문법에 대한 안전한 사용방법을 기술 - 안전하게 예외처리 할 수 있도록 가이드 작성 2. 입력값 범위를 체크하여 정상동작을 보장 - 입력값에 따라..

가. 취약점 개요 - 민감 데이터를 평문으로 송/수신하여 스니핑을 통해 정보가 노출되는 취약점 → 중요정보 평문전송 나. 요구사항 1. 민감정보 전송 시 안전하게 암호화해서 전송 2. 쿠키에 포함된 중요정보는 암호화해서 전송 다. 요구사항 별 고려사항 1. 민감정보 전송 시 안전하게 암호화해서 전송 - 중요정보를 안전한 암호모듈로 암호화 후 전송하거나 안전한 통신채널을 이용하여 전송 - "암호연산" 여구항목을 충족하는 암호화 알고리즘 및 암호키를 사용 - 클라이언트와 서버 사이에 불필요한 데이터가 포함되어 전송되지 않도록 설계 2. 쿠키에 포함된 중요정보는 암호화해서 전송 - 쿠키에 중요정보가 포함되지 않도록 설계 - 부득이하게 포함되어야 할 경우, 반드시 세션쿠키로 설정 - 쿠키로 전달되는 중요정보는 ..

가. 취약점 개요 - 개인/인증/금융정보와 같은 중요정보를 평문으로 저장할 경우, 중요정보 및 민감정보가 노출되거나, 무결성을 잃을 수 있는 취약점 → 중요정보 평문저장 - 개인정보/인증정보 등이 영속적 쿠키에 저장될 경우, 많은 쿠키접근 기회를 통해 시스템을 취약하게 만드는 취약점 → 사용자 하드디스크에 저장된 쿠키를 통한 정보 노출 나. 요구사항 1. 중요정보 또는 개인정보는 암호화 후 저장 2. 불필요하거나, 사용하지 않는 중요정보는 메모리에서 삭제 다. 요구사항 별 고려사항 1. 중요정보 또는 개인정보는 암호화 후 저장 - 중요정보가 외부로 노출되지 않도록 설계 - DB나 파일에 중요정보를 저장 시 반드시 안전한 암호알고리즘와 암호키로 암호화 후 저장 - HTML5 로컬저장 소와 같은 클라이언트 ..

가. 취약점 개요 - 간단한 인코딩 등을 통해 암호화를 할 경우, 패스워드 등을 안전하게 보호할 수 없는 취약점 → 취약한 암호알고리즘 사용 - 키 길이를 충분히 사용하지 않을 경우, 검증된 암호화 알고리즘을 사용하더라도 짧은 시간에 크래킹이 가능한 취약점 → 충분하지 않은 키 길이 사용 - 예측 가능한 난수를 사용 시 다음 숫자를 예상하여 시스템을 공격할 수 있는 취약점 → 적절하지 않은 난수 사용 - 일방향 해쉬함수 사용 시 솔트없이 해쉬할 경우, 레인보우 테이블 등을 통해 해쉬값을 미리 계산이 가능한 취약점 → 솔트없이 사용하는 일방향 해쉬함수 나. 요구사항 1. KISA 암호이용안내서에서 정의하고 있는 암호화 알고리즘과 안정성이 보장되는 암호화 키 길이를 사용 2. 솔트값을 적용한 안전한 해쉬 알..

가. 취약점 개요 - 코드 내부에 하드코드된 암호화 키를 사용하여 암/복호화에 사용할 경우 암호키 노출이 가능한 취약점 → 하드코드된 암호키 - 주석문 안에 암호키 정보가 작성되어, 소스코드에 접근한 사용자에게 암호키가 노출되는 취약점 → 주석문 안에 포함된 시스템 주요정보 (암호키) 나. 요구사항 1. 암호키는 KISA 암호이용안내서에 정의하고 있는 암호화 가이드를 적용 2. 중요정보는 암호화하여 설정파일에 저장 후 암호키는 별도의 디렉터리에서 보관 및 관리 다. 요구사항 별 고려사항 1. 암호키는 KISA 암호이용안내서에 정의하고 있는 암호화 가이드를 적용 (1) 생성 시 고려사항 - 암호키는 DB와 물리적으로 분리된 장소에 별도 보관 - 암호키의 생명주기를 관리정책 적용 - 패스워드와 암호키는 메모..

가. 취약점 개요 - 관리자 페이지가 인터넷에 접근 가능할 경우, 다양한 형태의 공격의 빌미를 제공하는 취약점 → (관리자 페이지 노출) - HTML 문서 내 변수값으로 입력된 값이 인젝션 명령문으로 수행되어 서버 데이터 정보를 누출하는 취약점 → (SSI) - 모든 실행경로의 접근제어 부재 및 미흡으로 실행경로를 통해 정보를 유출하는 취약점 → 부적절한 인가 - 중요한 보안관련 자원의 읽기/수정 권한을 의도하지 않게 허가하여, 권한없는 사용자가 사용할 수 있는 취약점 → 중요자원에 대한 잘못된 권한 설정 나. 요구사항 1. 중요자원에 대한 접근통제 정책을 수립 2. 중요기능에 대한 접근통제 정책을 수립 3. 관리자 페이지에 대한 접근통제 정책을 수립 다. 요구사항 별 고려사항 1. 중요자원에 대한 접근..

가. 취약점 개요 - 취약한 패스워드를 사용할 수 있을 경우, 무차별 대입공격을 통해 패스워드가 누출될 수 있는 취약점 → 취약한 비밀번호 허용 - 패스워드 복구 메커니즘이 취약 시, 다른 사용자의 패스워드를 획득/변경/복구가 가능한 취약점 → (취약한 비밀번호 복구) - 하드코드된 패스워드로 내부인증을 하거나, 통신할 경우, 관리자 정보가 노출될 수 있는 취약점 → 하드코드된 비밀번호 나. 요구사항 1. KISA 암호화 정책수립기준의 패스워드 설정 규칙을 적용 2. 패스워드 전송 시 암호화처리 또는 암호화 통신 이용 3. 패스워드 저장 시 솔트가 적용된 안전한 해쉬함수 사용 4. 패스워드 재설정/변경 시 안전하게 변경할 수 있는 규칙 정의 5. 패스워드 관리규칙을 정의 다. 요구사항 별 고려사항 1. ..

가. 취약점 개요 - 로그인 시도 횟수 초과 시 계정 보호조치가 설정되지 않을 경우 패스워드 무작위 대입공격이 시도될 수 있는 취약점 → 반복된 인증시도 제한 기능 부재 나. 요구사항 1. 제한된 로그인 인증시도 초과 시 인증제한 정책 적용 2. 실패한 인증시도에 대한 정보를 로깅 다. 요구사항 별 고려사항 1. 제한된 로그인 인증시도 초과 시 인증제한 정책 적용 - 로그인 인증시도 횟수를 3~5회 이내로 제한 - 인증시도 초과 시 추가 입력값, 자동입력방지 문자(CAPTCHA) 요청 또는 계정잠금 2. 실패한 인증시도에 대한 정보를 로깅 - 반복된 로그인 실패에 대한 로깅정책 설정 - 로그 기록을 통해 로그인 시도를 분석할 수 있도록 설계 - 사용자 DB테이블에 실패횟수, 잠금상태, 마지막 성공/실패 ..
- Total
- Today
- Yesterday