Open sethsec opened 3 years ago
This is a great point and would be super valuable. Also, I am glad you like the UI :)
If someone wants to pick this up, here are some implementation suggestions: I would suggest some kind of merge_policies
function that would accept any number of PolicyDocument
objects (from cloudsplaining.scan.policy_document
). Then if a principal has multiple policies attached, run merge_policies
, and from that result, determine if there are any new PrivEsc dict keys from PolicyDocument.allows_privilege_escalation compared to the PrivEsc dict keys from the other policies attached. If the keys are different, then it's a finding specific to that principal.
If i am not mistaken, Cloudsplaining takes a policy-centric approach to evaluating privesc paths. If a policy meets the logic that defines a privesc path, this policy is identified as allowing privesc. Any principal that has that policy applied is highlighted as well, which is great! However, a principal that has two or more policies that each contain part of the privesc conditions, is not highlighted, which causes detection misses for privesc paths.
Example of successful detection:
Results:
Example of false negative:
Results:
I know adding support for this is not a small task. Also,
pmapper
does a great job at identifying these combo cases. However, I love the Cloudsplaining UI, how straightforward it is to use, all of the supporting documentation, and really just think Cloudsplaining should catch these cases as well.Also, it might be a good idea to list this limitation in the documentation to make sure poeple know what the tool does a great job of catching, and what the current blind spots are.