Skip to content

Commit 077e5f8

Browse files
authored
Merge pull request #192 from torresashjiancyber/VC-53770-logos-fix-c
security: CWE-532: Redact sensitive data from debug logs
2 parents 0e4e1ca + 6eccd6f commit 077e5f8

3 files changed

Lines changed: 12 additions & 8 deletions

File tree

vcert/common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,7 @@ def process_server_response(r):
755755
log.debug(r.content.decode())
756756
return r.status_code, r.content.decode()
757757
elif content_type.startswith(MIME_OCTET_STREAM):
758-
log.debug(r.content)
758+
log.debug(f"Received {len(r.content)} bytes (octet-stream body not logged)")
759759
return r.status_code, r.content
760760
else:
761761
log.error(f"Unexpected content type: {content_type} for request {r.request.url}")

vcert/connection_tpp.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def put(self, args):
9090
def _get(self, url="", params=None):
9191
if not self._token or self._token[1] < time.time() + 1:
9292
self.auth()
93-
log.debug(f"Token is {self._token[0]}, timeout is {self._token[1]}")
93+
log.debug(f"Token is [REDACTED], timeout is {self._token[1]}")
9494

9595
r = requests.get(f"{self._base_url}{url}",
9696
headers={TOKEN_HEADER_NAME: self._token[0],
@@ -103,7 +103,7 @@ def _get(self, url="", params=None):
103103
def _post(self, url, data=None):
104104
if not self._token or self._token[1] < time.time() + 1:
105105
self.auth()
106-
log.debug(f"Token is {self._token[0]}, timeout is {self._token[1]}")
106+
log.debug(f"Token is [REDACTED], timeout is {self._token[1]}")
107107

108108
if isinstance(data, dict):
109109
r = requests.post(f"{self._base_url}{url}",
@@ -120,7 +120,7 @@ def _post(self, url, data=None):
120120
def _put(self, url, data=None):
121121
if not self._token or self._token[1] < time.time() + 1:
122122
self.auth()
123-
log.debug(f"Token is {self._token[0]}, timeout is {self._token[1]}")
123+
log.debug(f"Token is [REDACTED], timeout is {self._token[1]}")
124124

125125
if isinstance(data, dict):
126126
r = requests.put(f"{self._base_url}{url}",

vcert/connection_tpp_token.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,9 @@ def _post(self, url=None, data=None, check_token=True, include_token_header=True
126126
headers[HEADER_AUTHORIZATION] = token
127127

128128
if isinstance(data, dict):
129-
log.debug(f"POST Request\n\tURL: {self._base_url+url}\n\tHeaders:{headers}\n\tBody:{data}\n")
129+
safe_headers = {k: ('***' if k == HEADER_AUTHORIZATION else v) for k, v in headers.items()}
130+
safe_data = {k: ('***' if k in ('password', 'Password', 'refresh_token', 'client_secret', 'PrivateKeyPassphrase') else v) for k, v in data.items()}
131+
log.debug(f"POST Request\n\tURL: {self._base_url+url}\n\tHeaders:{safe_headers}\n\tBody:{safe_data}\n")
130132
r = requests.post(self._base_url + url, headers=headers, json=data, **self._http_request_kwargs) # nosec B113
131133
else:
132134
log.error(f"Unexpected client data type: {type(data)} for {url}")
@@ -146,7 +148,9 @@ def _put(self, url, data=None, check_token=True, include_token_header=True):
146148
headers[HEADER_AUTHORIZATION] = token
147149

148150
if isinstance(data, dict):
149-
log.debug(f"POST Request\n\tURL: {self._base_url + url}\n\tHeaders:{headers}\n\tBody:{data}\n")
151+
safe_headers = {k: ('***' if k == HEADER_AUTHORIZATION else v) for k, v in headers.items()}
152+
safe_data = {k: ('***' if k in ('password', 'Password', 'refresh_token', 'client_secret', 'PrivateKeyPassphrase') else v) for k, v in data.items()}
153+
log.debug(f"POST Request\n\tURL: {self._base_url + url}\n\tHeaders:{safe_headers}\n\tBody:{safe_data}\n")
150154
r = requests.put(self._base_url + url, headers=headers, json=data,
151155
**self._http_request_kwargs) # nosec B113
152156
else:
@@ -157,13 +161,13 @@ def _put(self, url, data=None, check_token=True, include_token_header=True):
157161
def _check_token(self):
158162
if not self._auth.access_token:
159163
self.get_access_token()
160-
log.debug(f"Token is {self._auth.access_token}, expire date is {self._auth.token_expires}")
164+
log.debug(f"Token is [REDACTED], expire date is {self._auth.token_expires}")
161165

162166
# Token expired, get new token
163167
elif self._auth.token_expires and self._auth.token_expires < time.time():
164168
if self._auth.refresh_token:
165169
self.refresh_access_token()
166-
log.debug(f"Token is {self._auth.access_token}, expire date is {self._auth.token_expires}")
170+
log.debug(f"Token is [REDACTED], expire date is {self._auth.token_expires}")
167171
else:
168172
raise AuthenticationError("Access Token expired. No refresh token provided.")
169173

0 commit comments

Comments
 (0)