[소스코드 내 시스템 정보 노출]▶
O 개발 과정 또는 소스코드 수정 시 소스코드 내 하드코딩 된 패스워드가 포함된 소스코드 또는 웹 어플리케이션의 에러 상황에 대한 에러페이지 관리 미흡으로 인해 에러 페이지 및 메시지 등을 통해 시스템 정보가 노출되어 악의적인 사용자들의 2차 공격에 핵심 정보를 획득할 수 있는 취약점
O 근거 자료
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드 (p.676)
☞ OWASP TOP10 2021
O 판단 기준
양호 | 웹 사이트 또는 소스코드 내 테스트 서버 정보 등 시스템정보가 노출되어 있지 않은 경우 |
취약 | 웹 사이트 또는 소스코드 내 시스템 정보가 노출되는 경우 |
O 점검 방법
- F12 등 소스 코드 보기를 통해 웹 페이지 소스코드 내 하드코딩 되어있는 중요정보가 있는지 확인
O 조치 방법
- HTML 레벨의 소스 내 중요 정보 코멘트 처리 및 hidden 값 기록 삭제
- 데이터베이스 연결을 위한 패스워드는 안전한 암호화 방식으로 암호화하여 별도의 파일에 저장
- 소스코드 내부에 암호화 키를 하드 코딩하게 될 경우 악의적인 사용자에게 노출될 위협이 있으므로, 암호화 키는 별도 외부 파일에 안전한 방식으로 암호화하여 보관
- 취약한 라이브러리를 사용할 경우 안전한 버전으로 업데이트
- 소스코드 내부에 라이브러리 버전 제거 및 라이브러리 명 난수화
O 시큐어 코딩(Secure Coding) 예시
# JAVA (패스워드) ▶
public class MemberDAO {
private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String URL = "jdbc:oracle:thin:@192.168.0.3:1521:ORCL";
private static final String USER = "SCOTT"; // DB ID
.....
public Connection getConn() {
Connection con = null;
try {
Class.forName(DRIVER);
// 암호화된 패스워드를 프로퍼티에서 읽어 들여 복호화해서 사용해야 한다.
String PASS = props.getProperty("EncryptedPswd");
byte[] decryptedPswd = cipher.doFinal(PASS.getBytes());
PASS = new String(decryptedPswd);
con = DriverManager.getConnection(URL, USER, PASS);
# JAVA (암호화된 키) ▶
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
import javax.crypto.Cipher;
.....
public String encriptString(String usr) {
// 암호화 키는 외부 파일에서 암호화 된 형태로 저장하고, 사용시 복호화 한다.
String key = getPassword("./password.ini");
key = decrypt(key);
if (key != null) {
byte[] bToEncrypt = usr.getBytes("UTF-8");
SecretKeySpec sKeySpec = new SecretKeySpec(key.getBytes(), "AES");
# JavaScript (jQuery) ▶
var f = " " // var f = "라이브러리 버전 명"
// 소스코드 내부에 라이브러리 명, 라이브러리 버전을 제거한다.
, S = function(e, t){
Return new S.fn.init(e,t)
};
[오류페이지 노출]▶
O 개발 과정 또는 소스코드 수정 시 소스코드 내 하드코딩 된 패스워드가 포함된 소스코드 또는 웹 어플리케이션의 에러 상황에 대한 에러페이지 관리 미흡으로 인해 에러 페이지 및 메시지 등을 통해 시스템 정보가 노출되어 악의적인 사용자들의 2차 공격에 핵심 정보를 획득할 수 있는 취약점
O 근거 자료
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드 (p.676)
☞ OWASP TOP10 2021
O 판단 기준
양호 | 웹 서비스 에러 페이지가 별도로 지정되어 있는 경우 |
취약 | 웹 서비스 에러 페이지가 별도로 지정되지 않아 에러 발생시 중요 정보가 노출되는 경우 |
O 점검 방법
- 서버 에러 및 DB에러 발생 시도
- 코드별 서버 에러 발생 및 에러페이지로의 리다이렉트 여부 확인
- 인위적인 DB에러 유발 시 DB정보 유출 여부 확인
O 조치 방법
- 에러 코드에 대해 서버 정보가 노출되지 않는 별도의 에러페이지로 리다이렉트
- 적절한 에러 처리 루틴을 설정하여 처리
O 시큐어 코딩(Secure Coding) 예시
# Apache ▶
- 에러 코드에 대해 에러 메시지 출력 및 특정 페이지 리다이렉트 httpd.conf의 전역 설정 추가 및 원하는 가상 호스트 <VirtualHost> 태그사이에 추가
ErrorDocument 401 /error/error.html
ErrorDocument 403 /error/error.html
ErrorDocument 404 /error/error.html
ErrorDocument 500 /error/error.html
# IIS ▶
1. IIS 관리자에서 적용할 사이트 선택 후 오류 페이지 아이콘 클릭
2. 우측 '기능 설정 편집' 클릭 후 다음과 같이 설정
- 오류 응답 : 사용자 지정 오류 페이지
- 경로 유형 : 파일
3. 우측 '추가'를 통해 에러 상태 코드에 대한 에러페이지 맵핑 (모든 상태 코드가 동일한 에러 페이지로 리다이렉트 설정 권고)
# Tomcat ▶
- web.xml 내 오류페이지 설정
.....
<web-app>
<error-page>
<error-code>400</error-code>
<location>/error400.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error500.jsp</location>
</error-page>
<error-page>
<exception-type>java.sql.SQLException</exception-type>
<location>/sqlexception.jsp</location>
</error-page>
</web-app>
.....
[소스코드 내 시스템 정보 노출]▶
O 개발 과정 또는 소스코드 수정 시 소스코드 내 하드코딩 된 패스워드가 포함된 소스코드 또는 웹 어플리케이션의 에러 상황에 대한 에러페이지 관리 미흡으로 인해 에러 페이지 및 메시지 등을 통해 시스템 정보가 노출되어 악의적인 사용자들의 2차 공격에 핵심 정보를 획득할 수 있는 취약점
O 근거 자료
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드 (p.676)
☞ OWASP TOP10 2021
O 판단 기준
O 점검 방법
- F12 등 소스 코드 보기를 통해 웹 페이지 소스코드 내 하드코딩 되어있는 중요정보가 있는지 확인
O 조치 방법
- HTML 레벨의 소스 내 중요 정보 코멘트 처리 및 hidden 값 기록 삭제
- 데이터베이스 연결을 위한 패스워드는 안전한 암호화 방식으로 암호화하여 별도의 파일에 저장
- 소스코드 내부에 암호화 키를 하드 코딩하게 될 경우 악의적인 사용자에게 노출될 위협이 있으므로, 암호화 키는 별도 외부 파일에 안전한 방식으로 암호화하여 보관
- 취약한 라이브러리를 사용할 경우 안전한 버전으로 업데이트
- 소스코드 내부에 라이브러리 버전 제거 및 라이브러리 명 난수화
O 시큐어 코딩(Secure Coding) 예시
# JAVA (패스워드) ▶
# JAVA (암호화된 키) ▶
# JavaScript (jQuery) ▶
[오류페이지 노출]▶
O 개발 과정 또는 소스코드 수정 시 소스코드 내 하드코딩 된 패스워드가 포함된 소스코드 또는 웹 어플리케이션의 에러 상황에 대한 에러페이지 관리 미흡으로 인해 에러 페이지 및 메시지 등을 통해 시스템 정보가 노출되어 악의적인 사용자들의 2차 공격에 핵심 정보를 획득할 수 있는 취약점
O 근거 자료
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드 (p.676)
☞ OWASP TOP10 2021
O 판단 기준
O 점검 방법
- 서버 에러 및 DB에러 발생 시도
- 코드별 서버 에러 발생 및 에러페이지로의 리다이렉트 여부 확인
- 인위적인 DB에러 유발 시 DB정보 유출 여부 확인
O 조치 방법
- 에러 코드에 대해 서버 정보가 노출되지 않는 별도의 에러페이지로 리다이렉트
- 적절한 에러 처리 루틴을 설정하여 처리
O 시큐어 코딩(Secure Coding) 예시
# Apache ▶
- 에러 코드에 대해 에러 메시지 출력 및 특정 페이지 리다이렉트 httpd.conf의 전역 설정 추가 및 원하는 가상 호스트 <VirtualHost> 태그사이에 추가
# IIS ▶
1. IIS 관리자에서 적용할 사이트 선택 후 오류 페이지 아이콘 클릭
2. 우측 '기능 설정 편집' 클릭 후 다음과 같이 설정
- 오류 응답 : 사용자 지정 오류 페이지
- 경로 유형 : 파일
3. 우측 '추가'를 통해 에러 상태 코드에 대한 에러페이지 맵핑 (모든 상태 코드가 동일한 에러 페이지로 리다이렉트 설정 권고)
# Tomcat ▶
- web.xml 내 오류페이지 설정