AOC55

Backend, Devops, Cloud, kubernetes

IT/IT Project Management

IT :: 개발 시 보안 관련하여 주의해야할 사항2 (시큐어코딩/Secure Coding)

aoc55.soft@gmail.com 2020. 7. 27. 17:41

사내 교육 시, 교육 받았던 내용에 대해서 간단히 정리한 내용임.

> 주의사항 1편

접근 제어 및 권한 관리

부적절한 인증/인가

정의/원인

- 인증(신원 식별)과 인가(자원 권한 확인)가 제대로 진행되지 않아 발생하는 취약점

- 접근 불가능한 시스템 자원, 권한 없는 메뉴, 결제 금액 변조 등 수행 가능

 

대응방안

- ACL(Access Control List)을 이용하여 권한에 따라 적절한 기능 사용

- 서버측에서 권한 체크

- 파라미터 최소화 및 세션 활용

- 중요 정보는 암호화

- 최종 단계에서 인증 및 권한 체크

-(결제 금액 등은 클라이언트 사용된 값이 아닌 서버측 값을 사용, 클라이언트 값 사용하려면 서버측에서 크로즈 검증)

 

 

쿠키 및 세션 관리

정의/원인

- 세션ID를 탈취하여, 공격자가 해당 세션ID를 사용하여 해당 시스템 서비스 사용 (세션 하이재킹)

- 쿠키 정보를 변조하여, 권한 상승을 통해 허용되지 않는 기능 접근 (권한 상승)

 

대응방안

- 추측 가능한 세션ID 생성 => WAS에서 생성하는 세션관리 기능활용

- 세션ID 훔치기 => XSS 취약점 제거 / 세션ID는 로그인마다 갱신 / 쿠키에 setScure, setHttpOnly 설정 / 세션ID와 로그인 IP주소 비교

- 세션ID 고정 => 세션ID는 (재)로그인한 후에, 세션ID값을 재할당(변경)하도록 한다 (로그인 이후 세션ID 계속 사용한다면 공격자가 악용가능)

- 세션관리정책 미비 => 로그아웃 시 세션 무효화 / 세션 타임아웃 기준 설정 / 다른 세션간 데이터 공유 금지

- 쿠키를 통한 정보 노출 => 중요/민감 정보를 쿠키에 저장하지 않는다

- 쿠키 변조 방지 => 인증 등 주요방식은 세션 방식을 사용하며, 쿠키 값을 암호화하여 변조 방지

- 그외 => 서버측에서 반드시 권한체크 로직 수행 / 단계별 인증 시 최종 단계 체크 / 과도한 시도시 계정 잠금 / 기능잠금 등 적용

 

 

정보노출 (오류메시지)

정의/원인

- 개발자가 생성된 오류메시지(ex printStackTrace())에 시스템 정보, 프로그램 구조 같은 민감정보 노출

 

대응방안

- 에러 메시지에 대해서 간단한 에러 상태, 문자열을 정의하여 지정된 로그파일에 로깅

- (사용자가 보는 페이지에는 간단한 에러내용만 출력, 시스템 버젼 등 노출방지)

- 에러 발생의 경우 공통의 하나 에러페이지에 표시하도록 함

 

정보노출 (시스템정보, 패스워드 등)

정의/원인

- HTML 소스 상에 IP/테이블정보/연동로직설명 등 주요 정보가 하드코딩/주석형태로 노출

- HTML 헤더에 버전 정보 등이 노출되거나 서버 requset/response 주요 정보가 노출

 

대응방안

- html 소스코드 .js파일에 주요 정보 삭제

- 디버깅 목적의 주석 삭제

- HTML헤더 등에 시스템 정보 노출 삭제

 

 

 

불필요한 METHOD

정의/원인

- PUT/DELETE 등의 허용되는 경우 악의적인 사용자가 인증 없이 파일업로드/삭제 등의 공격 가능

- HTML 헤더에 버전 정보 등이 노출되거나 서버 requset/response 주요 정보가 노출

 

대응방안

- GET/POST를 제외한 불필요한 메소드 제외 (환경설정에서)

- PUT/DELETE 등이 필요하다면, 접근 폴더 등에 대한 권한제어 등을 비롯한 추가 조치 필요