iam:UpdateLoginProfile로 권한 상승이 가능한 IAM 역할

다른 IAM 사용자의 콘솔 비밀번호 변경 권한을 승인된 관리자와 대상에 제한하세요.

설명

iam:UpdateLoginProfile을 광범위하게 허용하면 다른 IAM 사용자의 기존 콘솔 비밀번호를 바꿀 수 있습니다. 높은 권한의 사용자를 대상으로 이 권한이 유효하고 로그인 조건을 충족하면 해당 사용자의 권한이 악용될 수 있습니다.

이 작업은 기존 로그인 프로필을 변경하며 새 프로필을 만드는 권한은 아닙니다. 비밀번호를 바꾸더라도 MFA나 다른 로그인 제한을 우회하는 것은 아닙니다.

잠재적 영향

  • 사용자 계정으로 접근해 해당 계정의 데이터와 리소스 권한을 악용할 수 있습니다.
  • 승인되지 않은 비밀번호 변경으로 정상 사용자의 로그인이 중단될 수 있습니다.

해결 방법

  • 필요하지 않은 역할에서 iam:UpdateLoginProfile을 제거하고, 필요한 경우 승인된 사용자 ARN으로 범위를 제한하세요.
  • 비밀번호 관리 권한을 헬프데스크나 보안 관리자에게 제한하고 고권한 사용자 변경에는 추가 승인을 적용하세요.
  • 로그인 프로필 변경과 후속 로그인 기록을 확인하고 MFA 등 기존 인증 통제를 유지하세요.

예시

역할 권한의 발췌입니다. 필수 assume_role_policy는 생략했으므로 승인된 주체만 역할을 사용할 수 있도록 별도로 구성하세요.

변경 전

hcl
resource "aws_iam_role" "example" {
  name = "cosmic"
}

resource "aws_iam_role_policy" "example" {
  name = "test_inline_policy"
  role = aws_iam_role.example.name

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = [
          "iam:UpdateLoginProfile",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

변경 후

hcl
resource "aws_iam_role" "example" {
  name = "cosmic"
}

resource "aws_iam_role_policy" "example" {
  name = "inline_policy_run_instances"
  role = aws_iam_role.example.name

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = [
          "ec2:Describe*",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

설명:

  • 변경 전: 사용자 범위를 제한하지 않고 로그인 프로필 변경을 허용합니다. 실제 로그인과 피해 범위는 대상 계정 및 적용되는 통제에 달려 있습니다.
  • 변경 후: 같은 역할의 예시 정책을 EC2 조회로 제한합니다. 다른 정책의 프로필 변경 권한도 제거하고 ec2:Describe*를 필요한 조회 작업으로 좁히세요.

참조