Prometheus Label Injection Vulnerability #10
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Lines 1991-1995 don't escape label values:
def labels(**kwargs) -> str:
pairs = [f'{k}="{v}"' for k, v in kwargs.items() if v is not None]
return '{' + ','.join(pairs) + '}' if pairs else ''
If a hostname contains ", the metrics become invalid. Fix:
def labels(**kwargs) -> str:
def escape(value):
return str(value).replace('\', '\\').replace('"', '\"').replace('\n', '\n')
pairs = [f'{k}="{escape(v)}"' for k, v in kwargs.items() if v is not None]
return '{' + ','.join(pairs) + '}' if pairs else ''