개발 과정에서 개발자들은 에러를 추적하거나 테스트를 목적으로 시스템에 로그를 찍어 확인하고, 이 과정에서 민감한 정보들이 로그에 기록된다. 배포 시에 해당 로그 코드를 모두 지워야 하지만 개발자의 실수로 이를 모두 포함하여 출시할 경우 해당 정보를 다른 취약점에 연계해서 사용할 수 있으므로 제거해야 한다.
"디버그 로그 내 중요정보 노출 여부" 취약점은 시스템 디버깅 과정에서 생성된 로그 파일에 중요한 정보가 포함되어 외부에 노출될 위험을 말한다. 로그 파일에 기록될 경우, 로그 파일에 접근 가능한 사용자나 해커에 의해 민감한 정보가 유출될 수 있다.
*아래와 같이 log.info로 로그를 찍어 디버깅을 한다.
로그 파일에 민감한 정보가 유출되지는 않았는지 디버그 로그 정보를 확인해보자.
DDMS 등 디버그 로그를 확인 할 수 있는 도구를 이용하여 디버그 로그 내 중요정보 노출 여부를 점검한다.
중요정보란?
개인정보(주민등록번호), 금융정보(비밀번호, 카드번호, OTP, 보안카드 번호 등), 기타 중요정보라 판단되는 정보
🌱 양호
디버그 로그에 사용자 비밀번호, 신용카드 정보, 개인 식별 정보 등 민감한 정보가 기록되지 않는다.
앱 동작 시, 로그 파일에 민감한 정보가 포함되는 경우, 해당 정보가 철저히 마스킹 또는 암호화되어 있다.
운영 환경에서는 디버그 로그가 비활성화되어 있다.
로그 파일에 기록되는 정보가 최소한으로 제한되며, 민감한 데이터는 포함되지 않는다.
💊 취약
디버그 로그에 사용자 비밀번호, 신용카드 정보, 개인 식별 정보 등 민감한 정보가 평문으로 기록된다.
로그 파일에 민감한 정보가 마스킹 또는 암호화되지 않고 그대로 기록되어 노출된다.
운영 환경에서도 디버그 로그가 활성화되어 있고, 민감한 데이터가 로그에 포함되어 있다면 점검 기준 "취약"이다.
로그 파일에 불필요한 정보가 과도하게 기록되어 있으며, 이를 통해 민감한 데이터가 노출되어 있다.
> adb shell pidof com.app.damnvulnerablebank
> 3921
점검결과 : 취약
앱 배포전 개발 시 사용되는 모든 로그 메시지 삭제 처리한다.
개발 환경에서만 디버그 로그를 활성화하고, 운영 환경에서는 디버그 로그를 비활성화한다.
민감한 정보는 마스킹 또는 암호화하여 기록한다.
실제로 자주 나오는 취약점은 아니다. 디버그 로그가 남아있다고 해도 민감한 정보가 포함되어 있는 경우는 드물다. (주민등록번호의 경우 뒷자리는 대부분 마스킹되어 있다.)
그래도 로그 내에 토큰이 포함되어 있는 경우는 종종 본 것 같다. 그래서 해당 취약점을 확인하고 싶다면 로그 파일을 .txt 파일로 저장하고, ctrl+f로 accessToken 을 검색해보거나 카드번호 등만 확인해보면 될 것 같다. 오래 볼 취약점은 아니고 간단하게 검색해보고 넘어가면 된다.