reset logging to INFO (#70878)
- due to CVE-2019-14846 - also added comments and test to avoid 'oportunistic' reversion
This commit is contained in:
parent
9c12f20f27
commit
1223ce656a
3 changed files with 35 additions and 1 deletions
2
changelogs/fragments/keep_log_at_info.yml
Normal file
2
changelogs/fragments/keep_log_at_info.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- reset logging level to INFO due to CVE-2019-14846.
|
|
@ -174,7 +174,8 @@ logger = None
|
||||||
if getattr(C, 'DEFAULT_LOG_PATH'):
|
if getattr(C, 'DEFAULT_LOG_PATH'):
|
||||||
path = C.DEFAULT_LOG_PATH
|
path = C.DEFAULT_LOG_PATH
|
||||||
if path and (os.path.exists(path) and os.access(path, os.W_OK)) or os.access(os.path.dirname(path), os.W_OK):
|
if path and (os.path.exists(path) and os.access(path, os.W_OK)) or os.access(os.path.dirname(path), os.W_OK):
|
||||||
logging.basicConfig(filename=path, level=logging.DEBUG,
|
# NOTE: level is kept at INFO to avoid security disclosures caused by certain libraries when using DEBUG
|
||||||
|
logging.basicConfig(filename=path, level=logging.INFO, # DO NOT set to logging.DEBUG
|
||||||
format='%(asctime)s p=%(process)d u=%(user)s n=%(name)s | %(message)s')
|
format='%(asctime)s p=%(process)d u=%(user)s n=%(name)s | %(message)s')
|
||||||
|
|
||||||
logger = logging.getLogger('ansible')
|
logger = logging.getLogger('ansible')
|
||||||
|
|
31
test/units/utils/display/test_logger.py
Normal file
31
test/units/utils/display/test_logger.py
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (c) 2020 Ansible Project
|
||||||
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
|
|
||||||
|
from __future__ import absolute_import, division, print_function
|
||||||
|
__metaclass__ = type
|
||||||
|
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def test_logger():
|
||||||
|
'''
|
||||||
|
Avoid CVE-2019-14846 as 3rd party libs will disclose secrets when
|
||||||
|
logging is set to DEBUG
|
||||||
|
'''
|
||||||
|
|
||||||
|
# clear loaded modules to have unadultered test.
|
||||||
|
for loaded in list(sys.modules.keys()):
|
||||||
|
if 'ansible' in loaded:
|
||||||
|
del sys.modules[loaded]
|
||||||
|
|
||||||
|
# force logger to exist via config
|
||||||
|
from ansible import constants as C
|
||||||
|
C.DEFAULT_LOG_PATH = '/dev/null'
|
||||||
|
|
||||||
|
# initialize logger
|
||||||
|
from ansible.utils.display import logger
|
||||||
|
|
||||||
|
assert logger.root.level != logging.DEBUG
|
Loading…
Reference in a new issue