GitHub Advisoryadvisory · npm
GHSA-q4pp-j36h-3gqg Minimal `basti` IAM Policy Allows Shell Access
LOW
Official page ↗
- Ecosystem
- npm
- Packages
- basti-cdk
- Severity
- Low
- Reviewed
- 2023-08-24
Affected packages
• npm basti-cdk: < 1.0.1 → fixed in 1.0.1
Description
Summary
The provided Minimal IAM Policy for `bastic connect` does not include `ssm:SessionDocumentAccessCheck`. This results in the ability to get a shell session on the bastion, not just the intended access for Port Forwarding.
Details
`basti connect` is designed to "securely connect to your RDS/Aurora/Elasticache/EC2 instances", using a bastion instance "with AWS Session Manager port forwarding capability to make the target available on your localhost."
The Minimal IAM Policy allows port forwarding via the following statement:
```
{
"Effect": "Allow",
"Action": "ssm:StartSession",
"Resource": [
"arn:aws:ssm:*:*:document/AWS-StartPortForwardingSessionToRemoteHost",
"arn:aws:ec2:::instance/"
]
}
```
This statement does not include the following condition:
```
"Condition": {
"BoolIfExists": {
"ssm:SessionDocumentAccessCheck": "true"
}
}
```
As a result, the `basti connect` minimal policy is logically identical to:
```
{
"Effect": "Allow",
"Action": "ssm:StartSession",
"Resource": [
"arn:aws:ssm:*:*:document/AWS-StartPortForwardingSessionToRemoteHost",
"arn:aws:ssm:*:*:document/SSM-SessionManagerRunShell",
"arn:aws:ec2:::instance/"
]
}
```
A `basti` admin would expect users under the minimal policy to be able to port forward. However, they could also get a shell on the bastion.
For more details on this footgun, see: https://ramimac.me/ssm-iam
PoC
_Complete instructions, including specific configuration details, to reproduce the vulnerability._
Impact
Impact would depend on configuration/hardening of the bastion. I've seen examples where bastions have credentials to downstream systems in configuration or memory that would be exposed.