diff --git a/detect_secrets/core/usage.py b/detect_secrets/core/usage.py index 5d532f3d0..c35fd7221 100644 --- a/detect_secrets/core/usage.py +++ b/detect_secrets/core/usage.py @@ -618,6 +618,12 @@ class PluginOptions: help_text='Disables scans for GitHub credentials', filename='github_token', ), + PluginDescriptor( + classname='IPPublicDetector', + flag_text='--no-ip-public-scan', + help_text='Disables scans for public IPv4 addresses', + filename='ip_public', + ), ] opt_in_plugins = [ PluginDescriptor( diff --git a/detect_secrets/plugins/ip_public.py b/detect_secrets/plugins/ip_public.py new file mode 100644 index 000000000..cb46a7b85 --- /dev/null +++ b/detect_secrets/plugins/ip_public.py @@ -0,0 +1,47 @@ +import re + +from .base import RegexBasedDetector + + +class IPPublicDetector(RegexBasedDetector): + """Scans for public ip address (ipv4) + + Some non-public ipv4 addresses are ignored, such as: + - 127. + - 10. + - 172.(16-31) + - 192.168. + - 169.254. - Link Local Address IPv4 + + Reference: + https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xhtml + https://en.wikipedia.org/wiki/Private_network + """ + secret_type = 'Public IP (ipv4)' + + denylist_ipv4_address = r""" + (?