[프로세스 검증 누락]▶
O 중요정보 및 민감정보가 포함된 페이지에 대한 인증 절차 및 권한 검증, 접근 통제 미흡 등 웹 어플리케이션의 정상적인 프로세스를 악의적인 사용자가 강제로 우회하여 악의적인 행위를 할 수 있는 취약점
O 근거 자료
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.704)
☞ OWASP TOP10 2021
O 판단 기준
양호
| 권한이 없거나 인증 후 접근 가능한 페이지 등에 인증 절차를 우회해 접근 또는 데이터 열람 및 변조 등이 불가능한 경우 |
취약
| 권한이 없거나 인증 후 접근 가능한 페이지 등에 인증 절차를 우회해 접근 또는 데이터 열람 및 변조 등이 가능한 경우
|
O 점검 방법
- 인증이 필요한 페이지에 대해 충분한 검증 절차의 존재 여부 점검
O 조치 방법
- 우회될 수 있는 플로우 차단
- 페이지별 권한 매트릭스 작성 후 페이지에 부여된 권한 타당성 체크
- 인증이 필요한 모든 페이지에 대해 유효 세션 확인 프로세스 적용
- 중요 정보(회원정보 변경 등) 페이지와 같은 중요 정보를 표시하는 페이지의 경우 본인 여부 재인증 로직 구현
- 유효 세션 검증 및 페이지에 대한 접근권한은 클라이언트 사이드 스크립트가 아닌 서버 사이드 스크립트를 통해 인증 및 필터링 수행
- 스트리밍 서비스를 제공하는 경우 다음과 같은 보안 조치 적용
: M3U8 파일 및 미디어 콘텐츠에 대한 접근 제어 적용
: TS 파일 암호화
: M3U8 플레이 리스트 생성 시 암호화된 TS 파일 사용
O 시큐어 코딩(Secure Coding) 예시
# ASP ▶
<%
// 인증 성공 시 세션값 세팅
Session("sessionChk") = True
Session("UserID") = userID
Session("UserGrp") = userGrp
Session("UserIP") = Request.Servervariables("REMOTE_ADDR")
··· 중략 ···
// 사용자 그룹 리턴 함수
··· 중략 ···
Fuction GetUserGroup(strUserID)
End function
··· 중략 ···
// 페이지에 접근 가능한 UserGroup 설정 값이 '100' 가정 시
ChkUserGrp = GetUserGroup(userID)
// 세션 userID값을 통해 DB에 저장된 사용자 그룹 리턴
··· 중략 ···
If Session_Check and Session("UserGrp") = ChkUserGrp Then
If Session("UserGrp") <> 100 Then
Response.Write("권한이 없습니다.")
Response.End
End
Else
Response.Redirect "Login.asp"
Response.End
End if
··· 중략 ···
%>
# JSP ▶
// 인증이 필요한 페이지 소스 코드
<%
··· 중략 ···
PortalSessionManager sessionMgr = (PortalSessionManager) session.getAttribute("sessionMgr")'
if(sessionMgr == null || sessionMgr.getUserId() == null) {
(new FailToAuthenticateCmd()).execute(request,response);
}
··· 중략 ···
String usrGrp = session.getAttribute("Usrgrp") == null ? "" : (String) session.getAttribute("Usrgrp");
if (!usrGrp.equals("") || !userGrp.equals(Code.getMarket())) {
// 접근 권한을 인가할 수 없음.
(new FailToPermissionCmd()).execute(request,response);
}
··· 중략 ···
%>
# M3U8 플레이 리스트 ▶
// (1)
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="https://A_Company.com/key/123456789"
#EXTINF:10.008778,
sq00.ts
#EXTINF:10.008778,
sq01.ts
#EXTINF:9.985556,
sq02.ts
#EXTINF:10.008778,
sq03.ts
··· 중략 ···
#EXT-X-ENDLIST
// (2)
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="https://B_Company.com/key/[KEY-Value]/0",IV=0x0000
#EXTINF:10.008778,
sq00.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://B_Company.com/key/[KEY-Value]/1",IV=0x0001
#EXTINF:10.008778,
sq01.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://B_Company.com/key/[KEY-Value]/2",IV=0x0002
#EXTINF:8.333333,
sq02.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://B_Company.com/key/[KEY-Value]/3",IV=0x0003
#EXTINF:10.008778,
sq03.ts
··· 중략 ···
#EXT-X-END
[불충분한 인가]▶
O 소스코드 내 노출되거나 유추하기 쉬운 URL, 파일 경로 등의 사용 및 접근 통제 미흡으로 인가되지 않은 관리자 페이지, 중요 페이지, 민감 데이터, 기능 등에 접근 가능한 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제6조(접근통제)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.696)
☞ OWASP TOP10 2021
O 판단 기준
양호
| 유추하기 쉬운 URL, 또는 파라미터 값 변조 등을 통해 관리자 페이지, 중요페이지 등 비인가 페이지 및 기능에 접근이 불가능한 경우 |
취약
| 유추하기 쉬운 URL, 또는 파라미터 값 변조 등을 통해 관리자 페이지, 중요페이지 등 비인가 페이지 및 기능에 접근이 가능한 경우 |
O 점검 방법
- admin, master, administrator, root 등을 입력하여 관리자 페이지 접근 시도
- 관리자 전용 포트(8000, 8888 등)로 접속 시도
- 소스코드 내 노출되거나 주석처리 되어 있는 페이지나 파일경로 또는 기능(버튼, 함수 등) 확인 후 직접 접근 및 주석해제 후 활용 시도
- URL 파라미터 값을 변조해 비인가 페이지에 접근 시도
O 조치 방법
- 관리자 페이지는 유추하기 어려운 주소로 변경
- 특정 사용자만 접근 가능하도록 IP주소 제한 등 접근제어 실시
- 중요페이지 각각에 대해 접근 권한 검증을 위한 세션 관리 구현
- 소스코드 내 주석 등으로 불필요한 URL 및 기타 정보 노출 제한
- URL 변경이 어려운 경우 HTTP header내 추가 식별값(Referer Value 등) 추가 및 검증
[프로세스 검증 누락]▶
O 중요정보 및 민감정보가 포함된 페이지에 대한 인증 절차 및 권한 검증, 접근 통제 미흡 등 웹 어플리케이션의 정상적인 프로세스를 악의적인 사용자가 강제로 우회하여 악의적인 행위를 할 수 있는 취약점
O 근거 자료
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.704)
☞ OWASP TOP10 2021
O 판단 기준
O 점검 방법
- 인증이 필요한 페이지에 대해 충분한 검증 절차의 존재 여부 점검
O 조치 방법
- 우회될 수 있는 플로우 차단
- 페이지별 권한 매트릭스 작성 후 페이지에 부여된 권한 타당성 체크
- 인증이 필요한 모든 페이지에 대해 유효 세션 확인 프로세스 적용
- 중요 정보(회원정보 변경 등) 페이지와 같은 중요 정보를 표시하는 페이지의 경우 본인 여부 재인증 로직 구현
- 유효 세션 검증 및 페이지에 대한 접근권한은 클라이언트 사이드 스크립트가 아닌 서버 사이드 스크립트를 통해 인증 및 필터링 수행
- 스트리밍 서비스를 제공하는 경우 다음과 같은 보안 조치 적용
: M3U8 파일 및 미디어 콘텐츠에 대한 접근 제어 적용
: TS 파일 암호화
: M3U8 플레이 리스트 생성 시 암호화된 TS 파일 사용
O 시큐어 코딩(Secure Coding) 예시
# ASP ▶
# JSP ▶
# M3U8 플레이 리스트 ▶
[불충분한 인가]▶
O 소스코드 내 노출되거나 유추하기 쉬운 URL, 파일 경로 등의 사용 및 접근 통제 미흡으로 인가되지 않은 관리자 페이지, 중요 페이지, 민감 데이터, 기능 등에 접근 가능한 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제6조(접근통제)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.696)
☞ OWASP TOP10 2021
O 판단 기준
O 점검 방법
- admin, master, administrator, root 등을 입력하여 관리자 페이지 접근 시도
- 관리자 전용 포트(8000, 8888 등)로 접속 시도
- 소스코드 내 노출되거나 주석처리 되어 있는 페이지나 파일경로 또는 기능(버튼, 함수 등) 확인 후 직접 접근 및 주석해제 후 활용 시도
- URL 파라미터 값을 변조해 비인가 페이지에 접근 시도
O 조치 방법
- 관리자 페이지는 유추하기 어려운 주소로 변경
- 특정 사용자만 접근 가능하도록 IP주소 제한 등 접근제어 실시
- 중요페이지 각각에 대해 접근 권한 검증을 위한 세션 관리 구현
- 소스코드 내 주석 등으로 불필요한 URL 및 기타 정보 노출 제한
- URL 변경이 어려운 경우 HTTP header내 추가 식별값(Referer Value 등) 추가 및 검증