디버그 기능이 활성화 된 채로 프로덕션에 코드를 제공하는 것은 보안에 민감할 수 있습니다.

 

디버그 기능이 활성화된 프로덕션에서 코드를 제공하는 것은 보안에 민감합니다. 과거에는 다음과 같은 취약점이 있었습니다:

애플리케이션의 디버그 기능은 개발자들이 버그를 쉽게 찾을 수 있게 하지만 공격자들의 작업 또한 용이하게 만듭니다. 종종 디버그 기능은 애플리케이션이 실행되는 시스템과 유저에 대한 더 자세한 정보를 제공하기도 합니다.

스스로에게 자문하세요

  • 디버그 기능을 활성화하는 코드 혹은 설정파일이 프로덕션 서버 혹은 최종 사용자에게 배포됩니다.
  • 애플리케이션이 기본적으로 디버그 기능이 활성화 된 채로 실행됩니다.

다음의 질문에 예라고 답하는 경우, 문제가 발생할 가능성이 있습니다.

권장되는 보안 코딩 방법

프로덕션 서버 혹은 최종 사용자에게 디버그 기능을 활성화 한 채로 배포하지 마세요.

민감한 코드의 예

Throwable.printStackTrace(...) 는 기본적으로 System.Err 에 쉽게 해석할수 없고 민감한 정보를 드러낼 수 있는 Throwable 클래스의 정보 및 스택트레이스를 출력합니다.

try {
  /* ... */
} catch(Exception e) {
  e.printStackTrace(); // 민감한 코드
}

스프링 프레임워크의 EnableWebSecurity 어노테이션의 debug=true 옵션은 디버깅 기능을 활성화합니다.

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;

@Configuration
@EnableWebSecurity(debug = true) // 민감한 코드
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
  // ...
}

안드로이드의 WebView.setWebContentsDebuggingEnabled(true) 는 디버깅 기능을 활성화 합니다.

import android.webkit.WebView;

WebView.setWebContentsDebuggingEnabled(true); // Sensitive
WebView.getFactory().getStatics().setWebContentsDebuggingEnabled(true); // 민감한 코드

규칙을 준수한 해결책

throwables 를 출력하기 위해서는 printStackTrace 대신 Loggers 를 사용해야합니다.

try {
  /* ... */
} catch(Exception e) {
  LOGGER.log("context", e);
}

스프링 프레임워크의 EnableWebSecurity 어노테이션의 debug=false 옵션으로 디버깅 기능을 비활성화합니다.

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;

@Configuration
@EnableWebSecurity(debug = false)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
  // ...
}

안드로이드의 WebView.setWebContentsDebuggingEnabled(false) 를 통해 디버깅 기능을 비활성화합니다.

import android.webkit.WebView;

WebView.setWebContentsDebuggingEnabled(false);
WebView.getFactory().getStatics().setWebContentsDebuggingEnabled(false);

참고


If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project