Notice
Recent Posts
Recent Comments
Link
IgnatiusHeo
구현단계 보안약점 제거 기준-사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출 본문
작성일: 230706
※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다.
정리 내용: 소프트웨어 보안약점 진단 가이드(382~385p)
구분 | - 보안기능 |
설계단계 | - 중요정보 저장 https://cryptocurrencyclub.tistory.com/106 |
개요 | 대부분의 웹 응용프로그램에서 쿠키는 메모리에 상주하며, 브라우저의 실행이 종료되면 사라진다. 프로그래머가 원하는 경우, 쿠키를 디스크에 저장할 수 있으며, 다음 브라우저 세션이 시작되었을 때 메모리에 로드된다. 개인정보, 인증정보 등이 이와 같은 영속적인 쿠키(Persistent Cookie)에 저장 된다면, 공격자는 쿠키에 접근할 수 있는 보다 많은 기회를 가지게 되어 시스템을 취약하게 만든다. |
진단 세부사항 (설계단계) |
① 중요정보, 개인정보는 암호화해서 저장해야 한다. 중요정보와 개인정보에 대해 암호화하도록 명시하고, 암호화 대상 정보와 암호화 구현 방법을 명시하고 있는지 확인한다. ㅇ 암호화하여 저장되어야 하는 중요정보 또는 개인정보가 분류되어 있는지 확인 - 암호화 대상 중요 정보(개인/신용/인증정보 등) - 개인정보보호법: 고유식별정보(주민/운전면허/여권), 바이오정보, 비밀번호 - 정보통신망법: 주민등록번호, 신용카드번호, 계좌번호 - 위치정보법: 위치정보 - 시스템 중요정보: 데이터베이스 및 연동시스템 계정 정보, 주요 설정 정보 - 기타 관련 법률 및 서비스 특성에 따른 주요 정보 ㅇ 안전한 암호화 기능을 구현하는 프로그램이 설계되어 있거나 안전한 외부 암호 라이브러리를 사용하도록 설계되어 있는지 확인 ㅇ 프로그램 내 암호화 대상 정보를 암복호화 하는 경우 암복호화 코딩 규칙의 정의 설계 여부 확인 ② 불필요하거나 사용하지 않는 중요정보가 메모리에 남지 않도록 해야 한다. 중요정보 사용 후 메모리에 존재하지 않도록 설계되어 있는지 확인한다. ㅇ 중요정보 사용 후 메모리 초기화를 수행하여 중요 정보가 메모리에 남지 않도록 개발가이드에 코딩 규칙을 정의하고 있는지 확인 ㅇ 중요정보가 포함된 페이지는 사용자 측에 캐싱되지 않도록 개발가이드 코딩 규칙을 정의하고 있는지 확인 |
보안대책 (구현단계) |
쿠키의 만료시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정하고 영속적인 쿠키에는 사용자 권한 등급, 세션ID 등 중요정보가 포함되지 않도록 한다. |
진단방법 (구현단계) |
① 사용자 브라우저로 쿠키를 전송하는지 확인하고 ② 쿠키 유효기간 확인한다. ③ 쿠키 설정 값에 id 정보 등 중요 정보 포함 여부를 확인한다 |
다. 코드예제
ㅇ 분석
1: Cookie loginCookie = new Cookie("rememberme", "YES");
//쿠키의 만료시간을 1년으로 과도하게 길게 설정하고 있어 안전하지 않다.
2: loginCookie.setMaxAge(60*60*24*365);
3: response.addCookie(loginCookie);
ㅇ 내용
1. setMaxAge는 초단위로 설정되며, 현재 코드에서 만료시간 설정은 365일로 설정됨. 너무 김
2. 용도에 따라 기간을 설정해야함
ㅇ 수정
1: Cookie loginCookie = new Cookie("rememberme", "YES");
//쿠키의 만료시간은 해당 기능에 맞춰 최소로 사용한다.
2: loginCookie.setMaxAge(60*60*24);
3: response.addCookie(loginCookie);
ㅇ 내용
1. 1일도 긴거같은데 ..
ㅇ 분석
1: HttpCookie cookie = Request.Cookies.Get(“ExampleCookie”);
//쿠키의 만료시간을 1년으로 과도하게 길게 설정하고 있어 안전하지 않다.
2: cookie.Expires = DateTime.Now.AddMinutes(60.0*24.0*365.0);
3: Response.Cookies.Add(cookie);
ㅇ 내용
1. C#에서는 분단위로 설정되는듯
ㅇ 수정
1: HttpCookie cookie = Request.Cookies.Get(“ExampleCookie”);
//쿠키의 만료시간은 해당 기능에 맞춰 최소로 사용한다.
2: cookie.Expires = DateTime.Now.AddMinutes(10d);
3: Response.Cookies.Add(cookie);
ㅇ 내용
1. 10일로 설정함.
끝.
'자격 > SW보안약점진단원' 카테고리의 다른 글
구현단계 보안약점 제거 기준-솔트 없이 일방향 해쉬 함수 사용 (0) | 2023.07.06 |
---|---|
구현단계 보안약점 제거 기준-주석문 안에 포함된 시스템 주요정보 (0) | 2023.07.06 |
구현단계 보안약점 제거 기준-부적절한 인증서 유효성 검증 (0) | 2023.07.04 |
구현단계 보안약점 제거 기준-부적절한 전자서명 확인 (0) | 2023.07.04 |
구현단계 보안약점 제거 기준-취약한 비밀번호 허용 (0) | 2023.07.04 |