https://owasp.org/Top10/2021/A09_2021-Security_Logging_and_Monitoring_Failures/ OWASP 2021 : A09 -> Security Logging and Monitoring Failures -> 보안 로깅 및 모니터링 실패 --> 시스템에 문제나 공격이 발생했을 때, 이를 탐지/대응하려면 로깅/모니터링이 필수적 ---> 이 부분이 부족할 때 발생하는 보안 허점들의 종합 ----> 'Moritoring' Failures: 로깅은 잘 해도 관제를 허술하게 하는 경우가 다수이다. CWE-117 : Improper Output Neutralization for Logs -> 로그에 대한 부적절한 출력 중화 --> Log Forgery: 공격자가 입력창에 문자를 삽입해, 로그를 조작할 수 있다(정상적인 이벤트인 것처럼 위조) --> XXS/Injection: 웹 기반의 로그 모니터링 툴 사용 시, 로그에 심어진 악성 스크립트가 실행될 수 있음 ---> 로그 기록 시 특수문자 처리 신경쓰기(이스케이핑) * 예시: logger.info("Login failed for user: " + username) --> 공격자가 username에 \n INFO - Login succeeded for user: admin ---> 개행 문자때문에, 한 행에 하나의 이벤트가 기록되어야 하는 로그가 두 줄이 되어버림 ----> 원래는 admin이 로그인하지 않았는데, admin이 로그인한 것처럼 로그가 남아버림. -----> XSS나 Injection 공격과 연계될 경우 대재앙(cacti 같은 웹 브라우저 기반 관제 시스템으로 해당 로그 열람할 경우) CWE-223 : Omission of Security-relevant Information -> 보안 관련 정보 생략 --> 보안 사고가 터졌을 때, 추적해야 할 정보가 로깅되지 않은 경우 --> '누가', '언제', '어떤 IP에서', '무엇을 했는지' 알 수 없는 경우 ---> 보안에 민감한 이벤트(로그인 실패/권한 변경/데이터 대량 조회/주요 설정 변경) 발생 시, 시간/사용자 식별자/IP주소/수행된 작업 등을 반드시 세트로 기록해야 한다 * 예시: 특정 쇼핑몰 웹사이트에서, 관리자 권한을 가진 직원이 고객들의 개인정보 대량조회+유출함 --> 로그는 데이터 백업 성공 로그만 남음 ---> 누가, 어디서 접근했는지 로그가 없어 범인 못잡음 CWE-532 : Insertion of Sensitive Information into Log File -> 로그 파일 내 민감한 정보 삽입 --> 개발/디버깅 단계의 편의성을 위해(또는 로그 정책 설정 시 실수로), 로그에 비밀번호나 개인정보 등을 찍어버리는 경우 --> 공격자가 로그에 접근 가능해졌을 시 2차피해가 너무 커진다 ---> 로그 저장/출력 시 비밀번호는 마스킹 처리를 하거나 로그에 포함되지 않게 필터링해야 함 * 예시: 신용카드 결제 모듈을 개발하며, 디버그 단계에서 요청 데이터 전체(카드 비밀번호 포함)를 로그로서 출력하게 남겨놓음 --> 운영 서버에 배포할 때, 디버그 시 필요했던 기능을 비활성화하지 않음 ---> 로그 파일에는 수천 명의 카드 비밀번호가 포함되어 있었다 ----> 해커가 로그 파일을 탈취했고, 수천 명의 카드 정보가 노출됨 CWE-778 : Insufficient Logging -> 불충분한 로깅 --> 시스템에서 발생하는 이벤트에 비해 로깅 자체를 너무 적게 하거나 안 하는 경우(부실함) --> 공격자가 공격 시도해도 로그에서 추적 불가능 ---> 로그는 충분히 잘 남기자.. * 예시: 해커가 자동화 툴을 이용해서, 브루트 포스 공격을 하고있음(비밀번호 크래킹) --> 서버는 해커가 50만번의 로그인 시도를 할 동안, 아무런 로그도 남기지 않음 결과적으로, 로깅 시스템을 구축할 때, 한번 더 생각해보자 -> 개행 문자 같은 입력값이 들어왔을 때, 예외 처리를 잘 해주나? (로그 파일에 이상한 값이 들어가지 않게 통제되는가?) -> 보안 관련 정보가 충분하게(사고 후에 추적이 가능하게) 로그에 남는가? 시스템 운영 관련 정보만 로그에 남지 않는가? -> 로그 파일에 필요없는, 민감한 정보가 쓸데없이 들어가지는 않는가? -> 로그를 너무 부실하게 남기지는 않는가?(현재 시스템에 일어나고 있는 일이 로그에 잘 남는가?) + 그리고, 로깅 시스템이 잘 구축되었다고 하더라고, 관제에 부실하지 말자..