250x250
Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

개린이 개발노트

인증 취약점 조치방법 본문

개발자 중얼중얼

인증 취약점 조치방법

개린이9999 2023. 5. 23. 16:04
728x90

인증 취약점 조치방

 

 

인증 취약점 조치방법

 
 

 

<다음의 취약점 조치방법 안내>

URL/ 파라미터 변조, 불충분한 세션 관리, 쿠키 변조, 디폴트/ 취약한 계정사용 

 

[각 취약점 내용 및 대응방법은 '홈페이지 취약점 심층점검 가이드' 에 나온 내용]

 

취약한 인증

인증 및 세션 관리와 관련된 애플리케이션 기능의 구현 상 결함에 의해 발생되는 보안 약점

암호, 키, 세션 토큰 등이 노출되어 공격자가 사용자의 권한을 탈취

주요 취약점

3.1 URL/ 파라미터 변조3.2 불충분한 세션 관리3.3 쿠키 변조

3.4 디폴트/ 취약한 계정사용 

 

1 URL/파라미터 변조
내용 웹 서버에 전송되는 모든 HTTP 요청 값(URL 파라미터, Form 변수 등)을 조작하여 접근 권한이 없는 정보를 조회, 변경하고 인가 받지 않은 기밀정보를 유출하거나 악용
점검 내용 파라미터를 변조하여 인가 받지 않은 기밀정보를 유출하거나 악용하는 것을 방지
è  파라미터 변조를 통한 권한 상승이 가능한지 여부 확인
대응 방법 홈페이지 개발 보안 조치
가)   홈페이지 중 중요한 정보가 있는 페이지는 재 인증(2차 인증) 적용
 
나)   안전하다고 확인된 라이브러리나 프레임워크 (OpenSSL이나 ESAPI의 보안 기능 등)를 사용
 
다)   상태정보나 민감한 데이터(사용자 세션정보와 같이 중요한 정보)는 서버에 저장하고 보안확인 절차도 서버에서 실행
 
라)   인증이 필요한 모든 페이지에 대해 유효 세션임을 확인하는 프로세스 및 주요 정보 페이지에 접근 요청자의 권한 검증 로직을 적용
 
마)   사용자의 권한에 따른 ACL(Access Control List) 관리
 
바)   응용프로그램이 제공하는 정보와 기능을 역할에 따라 배분함으로써 공격자에게 노출되는 공격 노출면(attack surface) 최소화
 
사)   사용자 권한, 인증 여부 등 보안 결정에 사용하는 값은 사용자 입력 값을 사용하지 않고 서버 내부의 값을 활용하며, 사용자 입력에 의존해야하는 값을 제외하고는 서버가 보유하고 있는 정보를 이용하여 처리하도록 코딩

 

 

2 불충분한 세션 관리
내용 웹 애플리케이션에 사용자가 로그인할 때 매번 같은 세션ID를 발급하거나 세션 타임아웃을 너무 길게 설정하였을 경우 공격자가 만료되지 않은 세션을 재사용하여 해당 사용자의 권한을 탈취
점검 내용 로그인 할 때마다 새로운 세션 ID를 발행하고 세션 타임아웃을 설정하여 공격자가 만료되지 않은 세션을 악용하는 것을 방지
è  사용자 로그인 시 일정하게 고정된 세션 ID값을 발행하는지 점검
è  세션의 만료 시간 설정 여부 점검
è  로그아웃 후 세션 폐기를 정상적으로 수행하는지 여부 점검
대응 방법 1) 웹 서버 내에서의 조치
세션 연결 후 일정 시간동안 반응이 없을 경우 세션이 끊어지도록 설정
 
Tomcat 조치 방법
web.xml 파일에서 <session-config> 태그를 사용하여 타임아웃을 지정 web.xml, Weblogic.xml 중 한 곳에만 설정
(두 곳 모두 설정 시 우선순위에 의해 web.xml의 설정이 적용됨)
 
- Web.xml : “분”단위
<session-config>
<session-timeout>10</session-timeout>
</session-config>
 
- Weblogic.xml: “초”단위
<session-descriptor>
<timeout-secs>600</timeout-secs>
</session-descriptor>
 또는
<session-param>
<param-name>TimeoutSecs</param-name>
<param-value>600</param-value>
</session-param>
 
2) 홈페이지 개발 보안 조치
가)   로그인 할 때마다 예측 불가능한 새로운 세션 ID를 발급받도록 설계하고 기존 세션 ID는 파기
 
나)   세션 종료 시간 설정 또는 자동 로그아웃 기능 구현(세션 종료 시간은 사이트 특성에 따라 달라질 수 있으므로 사이트의 특성에 맞게 시간 설정)
 
다)   단순 조합 보다는 상용 웹 서버나 웹 애플리케이션 플랫폼에서 제공하는 세션 ID를 사용하고, 가능하다면 맞춤형 세션 관리 체계를 권고

 

 

3 쿠키 변조
내용 사용자 인증 방식중 하나인 쿠키를 변조하여 다른 사용자로 전환하거나 권한 상승
*쿠키(cookie) : 인터넷 사용자가 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버에서 인터넷 사용자의 컴퓨터에 저장하는 기록 정보 파일
점검 내용 쿠키를 사용하는 경우 안전한 알고리즘으로 암호화하여 쿠키 값 변조를 통한 다른 사용자로의 위장 및 권한 변경을 방지
è  쿠키 값(인증을 위한 ID, 권한을 위한 구분자 등) 변조를 통한 권한 상승 가능 여부 점검
대응 방법 홈페이지 개발 보안 조치
가)   사용자 인증 등 중요기능 구현 시 가급적 Cookie 대신 Session 방식 사용
 
나)   사용자 인증 등 중요기능 구현 시 안전한 알고리즘을 사용
 
다)   세션 정보와 같은 중요한 정보는 서버에 저장하고 보안 확인 절차도 서버에서 실행

 

 

4 디폴트/취약한 계정사용
내용 회원가입 시 취약한 패스워드로 회원 가입이 가능한 경우, 개발 시 사용된 테스트 계정, 웹 애플리케이션 서버의 default 계정 등이 무차별 대입 공격을 통해 패스워드가 누출 될 수 있음
점검 내용 default 계정사용 및 유추 가능한 취약한 계정 사용을 제한
è  테스트 계정, default 계정 등 취약한 계정 사용 여부 확인
대응 방법 1) 홈페이지 개발 보안 조치
가)   사용자가 취약한 패스워드를 사용할 수 없도록 패스워드 생성 규칙을 강제 할 수 있는 로직을 적용
 
나)   개발용으로 사용된 계정은 삭제 하거나 안전한 패스워드로 생성
 
다)   디폴트 계정 존재 시 패스워드 정보 변경

 

 

취약점 관련 추가 내용들

1. 입력값 검증 부재 관련 취약점 조치방법

1.1 SQL Injection, 1.2 SSI Injection, 1.3 LDAP Injection, 1.4 XPath Injection

1.5 XSS, 1.6 CSRF, 1.7 검증되지 않은 리다이렉트 및 포워드, 1.8 파일 업로드

2. 취약한 접근 통제 취약점 조치방법

2.1 관리자 페이지 노출, 2.2 경로추적 및 파일 다운로드, 2.3 자동화 공격

4. 민감한 데이터 노출 취약점 조치방법

4.1 부적절한 에러메시지 노출, 4.2 소스코드 내 중요 정보 노출, 4.3 중요 정보 비 암호화 통신

5. 잘못된 보안 구성

5.1 디렉터리 인덱싱, 5.2 불필요한 Method 지원, 5.3 취약한 파일 존재, 

 

5.4 히든필드 조작, 5.5 알려진 취약점이 있는 구성요소 사용

 

참조 : '교육기관 홈페이지 취약점 심층점검 가이드' 

728x90