Summary
The External ID field in the AWS account onboarding modal is blank and user-editable. CUDly should generate a unique External ID per account and display it read-only so users can copy it directly into their AWS IAM trust policy.
Impact
Security: An editable External ID means users can set any value (or leave it empty), which breaks cross-account role assumption security. The External ID is a shared secret between CUDly and the customer's AWS account — it must be CUDly-controlled, not user-chosen.
UX: There is nothing to copy into the AWS trust policy, so users must either invent their own value (defeating the security purpose) or leave it blank (making the assume-role call fail).
Steps to reproduce
- Settings → Accounts → Add AWS Account
- Observe the External ID field — it is empty and writable
Expected
- CUDly generates a stable UUID/token per account entry and pre-fills the field
- Field is
readonly and has a copy-to-clipboard button
- Hint text explains this value must match the
sts:ExternalId condition in the trust policy
Detected by
Automated AWS UX test, 2026-04-24
Summary
The External ID field in the AWS account onboarding modal is blank and user-editable. CUDly should generate a unique External ID per account and display it read-only so users can copy it directly into their AWS IAM trust policy.
Impact
Security: An editable External ID means users can set any value (or leave it empty), which breaks cross-account role assumption security. The External ID is a shared secret between CUDly and the customer's AWS account — it must be CUDly-controlled, not user-chosen.
UX: There is nothing to copy into the AWS trust policy, so users must either invent their own value (defeating the security purpose) or leave it blank (making the assume-role call fail).
Steps to reproduce
Expected
readonlyand has a copy-to-clipboard buttonsts:ExternalIdcondition in the trust policyDetected by
Automated AWS UX test, 2026-04-24