기타

시큐어코딩 보안항목

야채곱창의축복 2020. 12. 30. 13:17

(내용 출처 : 한국인터넷진흥원 - 소프트웨어 개발보안 가이드 2019. 11 발간된 내용을 기준으로 간단하게 정리하였습니다.)

 

시큐어코딩에 대해서 스터디 중이다.

 

유형

보안약점

대책

입력데이터 검증 및 표현

SQL 삽입 (injection)

외부입력값 유효성 검증

입력데이터 검증 및 표현

경로 조작 및 자원 삽입

경로조작 문자열이 있는지 확인 후 파일 처리

입력데이터 검증 및 표현

크로스사이트 스크립트

외부 입력값을 필터링

입력데이터 검증 및 표현

운영체제 명령어 삽입

외부 입력값에 대해 정규식 등을 이용하여 검증

입력데이터 검증 및 표현

위험한 형식 파일 업로드

파일 타입과 크기를 제한

입력데이터 검증 및 표현

신뢰되지 않는 URL 주소로 자동접속 연결

외부 입력값이 로컬 URL 인지 확인

입력데이터 검증 및 표현

XQuery 삽입

문자열 필터링을 통해 위험한 문자열을 제거

입력데이터 검증 및 표현

XPath 삽입

입력데이터에 대하여 필터링 수행

입력데이터 검증 및 표현

LDAP 삽입

인증 후에 LDAP 쿼리 수행

입력데이터 검증 및 표현

크로스사이트 요청 위조

POST 방식을 사용

입력데이터 검증 및 표현

HTTP 응답분할

요청 파라미터의 값을 HTTP 응답헤더에 포함시킬 경우 개행문자를 제거

입력데이터 검증 및 표현

정수형 오버플로우

오버플로우의 발생 여부 및 크기 확인

입력데이터 검증 및 표현

보안기능 결정에 사용되는 부적절한 입력값

사용자의 인증정보를 세션에 저장

입력데이터 검증 및 표현

메모리 버퍼 오버플로우

적절한 버퍼의 크기를 설정

입력데이터 검증 및 표현

포맷 스트링 삽입

%s 포맷 문자열을 지정

보안기능

적절한 인증 없는 중요기능 허용

재인증 적용

보안기능

부적절한 인가

운영자 권한 검사 후 개별 액션에 접근

보안기능

중요한 자원에 대한 잘못된 권한 설정

중요자원은 SW 관리자에 의해서만 읽고 쓰기가 가능하도록 설정

보안기능

취약한 암호화 알고리즘 사용

검증된 표준화 알고리즘 사용

보안기능

중요정보 평문저장

중요정보 암호화 저장

보안기능

중요정보 평문전송

중요정보 암호화 전송

보안기능

하드코드된 비밀번호

암호화된 패스워드를 사용

보안기능

충분하지 않은 키 길이 사용

2048 비트 이상의 길이를 가진 키 사용

보안기능

적절하지 않은 난수값 사용

암호학적으로 보호된 SecureRandom 을 사용

보안기능

하드코드된 암호화 키

상수가 아닌 암호화 키를 사용

보안기능

취약한 비밀번호 허용

강한 조건 검증

보안기능

사용자 하드디스크에 저장되는 쿠키를 통한 정보노출

쿠키 만료시간 최소 설정

보안기능

주석문 안에 포함된 시스템 주요정보

주석에 주요 정보 기입하지 않음

보안기능

솔트 없이 일방향 해쉬함수 사용

해쉬에 솔트 적용

보안기능

무결성 검사 없는 코드 다운로드

해쉬 값 등을 사용하여 다운로드 받은 파일 무결성 검사

보안기능

반복된 인증시도 제한 기능 부재

연속적인 사용자 인증 시도에 대한 횟수를 제한

시간 및 상태

경쟁조건 : 검사시점과 사용시점(TOCTOU)

멀티쓰레드 환경에서 동시에 접근할 수 없도록 사용

시간 및 상태

종료되지 않는 반복문 또는 재귀함수

재귀 호출 횟수를 제한

에러처리

오류 메시지를 통한 정보노출

오류 메시지 최소한 정보만 포함

에러처리

오류 상황 대응 부재

적절한 예외 처리

에러처리

부적절한 예외 처리

구체적인 예외 처리

코드오류

Null Pointer 역참조

null 검사 수행

코드오류

부적절한 자원 해제

자원 해제 반환

코드오류

해제된 자원 사용

해제 후 null 할당

코드오류

초기화되지 않은 변수 사용

변수 사용 전 초기화

캡슐화

잘못된 세션에 의한 데이터 정보노출

변수 범위 주의

캡슐화

제거되지 않고 남은 디버그 코드

디버그 코드 삭제

캡슐화

시스템 데이터 정보노출

시스템 내부 정보가 출력되지 않도록 개발

캡슐화

Public 메소드부터 반환된 Private 배열

Private 를 반환하지 않도록 개발

캡슐화

Private 배열에 Public 데이터 할당

객체가 클래스의 private member 를 수정하지 않도록 개발

API 오용

DNS lookup에 의존한 보안결정

보안결정에서 도메인명을 이용한 DNS lookup 을 하지 않도록 함

API 오용

취약한 API 사용

취약한 API를 사용하지 않음