|
3 | 3 | is_imds_ip_address, is_trusted_hostname, resolves_to_imds_ip |
4 | 4 | """ |
5 | 5 |
|
| 6 | +from aikido_zen.helpers.ip_matcher import IPMatcher |
| 7 | +from aikido_zen.helpers.ip_matcher.map_ipv4_to_ipv6 import map_ipv4_to_ipv6 |
6 | 8 |
|
7 | | -class BlockList: |
8 | | - """A list of IP's that shouldn't be accessed""" |
9 | | - |
10 | | - def __init__(self): |
11 | | - self.blocked_addresses = {"ipv4": set(), "ipv6": set()} |
12 | | - |
13 | | - def add_address(self, address, address_type): |
14 | | - """Add an address to this list""" |
15 | | - if address_type in self.blocked_addresses: |
16 | | - self.blocked_addresses[address_type].add(address) |
17 | | - |
18 | | - def check(self, address, address_type=None): |
19 | | - """Check if the IP is on the list""" |
20 | | - if address_type: |
21 | | - return address in self.blocked_addresses.get(address_type, set()) |
22 | | - return any( |
23 | | - address in addresses for addresses in self.blocked_addresses.values() |
24 | | - ) |
25 | | - |
26 | | - |
27 | | -# Create an instance of BlockList |
28 | | -imds_addresses = BlockList() |
| 9 | +imds_addresses = IPMatcher() |
29 | 10 |
|
30 | 11 | # Block the IP addresses used by AWS EC2 instances for IMDS |
31 | | -imds_addresses.add_address("169.254.169.254", "ipv4") |
32 | | -imds_addresses.add_address("fd00:ec2::254", "ipv6") |
| 12 | +imds_addresses.add("169.254.169.254") |
| 13 | +imds_addresses.add("fd00:ec2::254") |
| 14 | +imds_addresses.add(map_ipv4_to_ipv6("169.254.169.254")) |
33 | 15 |
|
34 | 16 | # Block the IP address used by Alibaba Cloud |
35 | | -imds_addresses.add_address("100.100.100.200", "ipv4") |
| 17 | +imds_addresses.add("100.100.100.200") |
| 18 | +imds_addresses.add(map_ipv4_to_ipv6("100.100.100.200")) |
36 | 19 |
|
37 | 20 |
|
38 | 21 | def is_imds_ip_address(ip): |
39 | 22 | """Checks if the IP is an imds ip""" |
40 | | - return imds_addresses.check(ip) or imds_addresses.check(ip, "ipv6") |
| 23 | + return imds_addresses.has(ip) |
41 | 24 |
|
42 | 25 |
|
43 | 26 | # Trusted hostnames for Google Cloud |
|
0 commit comments