@@ -37,7 +37,7 @@ def create_cloud_service(self, region, options, secret_data, schema):
37
37
cloudtrail_resource_type = "AWS::EC2::SecurityGroup"
38
38
39
39
# If Port Filter Option Exist
40
- vulnerable_ports = self . options .get ("vulnerable_ports" , DEFAULT_VULNERABLE_PORTS )
40
+ vulnerable_ports = options .get ("vulnerable_ports" , DEFAULT_VULNERABLE_PORTS )
41
41
42
42
# Get default VPC
43
43
default_vpcs = self ._get_default_vpc ()
@@ -166,16 +166,15 @@ def create_cloud_service(self, region, options, secret_data, schema):
166
166
)
167
167
168
168
def custom_security_group_rule_info (self , raw_rule , remote , remote_type , vulnerable_ports ):
169
+ protocol_display = self ._get_protocol_display (raw_rule .get ("IpProtocol" ))
169
170
raw_rule .update (
170
171
{
171
- "protocol_display" : self ._get_protocol_display (
172
- raw_rule .get ("IpProtocol" )
173
- ),
172
+ "protocol_display" : protocol_display ,
174
173
"port_display" : self ._get_port_display (raw_rule ),
175
174
"source_display" : self ._get_source_display (remote ),
176
175
"description_display" : self ._get_description_display (remote ),
177
176
remote_type : remote ,
178
- "vulnerable_ports" : self ._get_vulnerable_ports (raw_rule , vulnerable_ports )
177
+ "vulnerable_ports" : self ._get_vulnerable_ports (protocol_display , raw_rule , vulnerable_ports )
179
178
}
180
179
)
181
180
@@ -295,23 +294,21 @@ def get_instance_name_from_tags(instance):
295
294
return ""
296
295
297
296
@staticmethod
298
- def _get_vulnerable_ports (raw_rule , vulnerable_ports ):
299
- is_port_all = False
300
-
297
+ def _get_vulnerable_ports (protocol_display : str , raw_rule : dict , vulnerable_ports : str ):
301
298
try :
302
- toPort = int (raw_rule .get ("ToPort" ))
303
- fromPort = int (raw_rule .get ("FromPort" ))
304
- except (ValueError , TypeError ):
305
- is_port_all = True
306
- toPort , fromPort = None , None
299
+ if protocol_display == "ALL" :
300
+ return [int (port .strip ()) for port in vulnerable_ports .split (',' )]
307
301
308
- ports = []
309
- try :
310
- for port in map (str .strip , vulnerable_ports .split (',' )):
311
- target_port = int (port )
312
- if is_port_all or (fromPort <= target_port <= toPort ):
313
- ports .append (target_port )
302
+ to_port = raw_rule .get ("ToPort" )
303
+ from_port = raw_rule .get ("FromPort" )
304
+
305
+ if to_port is None or from_port is None :
306
+ return []
314
307
315
- return ports
316
- except Exception :
308
+ return [
309
+ int (port .strip ())
310
+ for port in vulnerable_ports .split (',' )
311
+ if from_port <= int (port .strip ()) <= to_port
312
+ ]
313
+ except ValueError :
317
314
raise ERROR_VULNERABLE_PORTS (vulnerable_ports )
0 commit comments