AWS - ECS Privesc
ECS
ECS hakkında daha fazla bilgi için:
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Bir saldırgan, ECS'deki iam:PassRole
, ecs:RegisterTaskDefinition
ve ecs:RunTask
izinlerini kötüye kullanarak, kimlik bilgilerini çalan ve çalıştıran kötü niyetli bir konteyner içeren yeni bir görev tanımı oluşturabilir.
Potansiyel Etki: Farklı bir ECS rolüne doğrudan ayrıcalık yükseltme.
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
Önceki örnekte olduğu gibi, bir saldırgan ECS'deki iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
izinlerini kötüye kullanarak, kötü amaçlı bir konteyner içeren bir yeni görev tanımı oluşturabilir ve bunu çalıştırarak meta veri kimlik bilgilerini çalabilir.
Ancak, bu durumda, kötü amaçlı görev tanımını çalıştırmak için bir konteyner örneği olması gerekmektedir.
Potansiyel Etki: Herhangi bir ECS rolüne doğrudan ayrıcalık yükseltme.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
Önceki örnekte olduğu gibi, bir saldırgan ECS'deki iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
veya ecs:CreateService
izinlerini kötüye kullanarak, kimlik bilgilerini çalan kötü niyetli bir konteyner içeren yeni bir görev tanımı oluşturabilir ve en az 1 görev çalıştıran yeni bir hizmet oluşturarak bunu çalıştırabilir.
Potansiyel Etki: Herhangi bir ECS rolüne doğrudan ayrıcalık yükseltme.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Bu senaryo, öncekiler gibi iam:PassRole
izni olmadan gerçekleşir.
Bu yine ilginç çünkü bir rol olmadan bile keyfi bir konteyner çalıştırabiliyorsanız, ayrıcalıklı bir konteyner çalıştırarak düğümden kaçabilir ve düğümde çalışan EC2 IAM rolünü ve diğer ECS konteyner rollerini çalabilirsiniz.
Hatta, başka görevleri zorlayarak, onların kimlik bilgilerini çalmak için ele geçirdiğiniz EC2 örneğinde çalışmalarını sağlayabilirsiniz (aws-ecs-privesc.md#privesc-to-node bölümünde tartışıldığı gibi).
Bu saldırı, ECS kümesinin Fargate yerine EC2 örnekleri kullanması durumunda mümkündür.
ecs:ExecuteCommand
, ecs:DescribeTasks,
(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
ecs:ExecuteCommand
, ecs:DescribeTasks,
(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Bir saldırgan, ecs:ExecuteCommand
, ecs:DescribeTasks
yetkilerine sahip olduğunda, çalışan bir konteyner içinde komutları çalıştırabilir ve ona bağlı IAM rolünü dışarıya çıkarabilir (aws ecs execute-command komutunu çalıştırmak için describe izinlerine ihtiyaç vardır).
Ancak bunu yapabilmek için, konteyner örneğinin ExecuteCommand ajanını çalıştırması gerekmektedir (varsayılan olarak çalışmaz).
Bu nedenle, saldırgan aşağıdakileri deneyebilir:
Her çalışan konteynerde bir komut çalıştırmayı deneyin
Eğer
ecs:RunTask
yetkisi varsa,aws ecs run-task --enable-execute-command [...]
komutuyla bir görev çalıştırın.Eğer
ecs:StartTask
yetkisi varsa,aws ecs start-task --enable-execute-command [...]
komutuyla bir görev çalıştırın.Eğer
ecs:CreateService
yetkisi varsa,aws ecs create-service --enable-execute-command [...]
komutuyla bir hizmet oluşturun.Eğer
ecs:UpdateService
yetkisi varsa,aws ecs update-service --enable-execute-command [...]
komutuyla bir hizmeti güncelleyin.
Bu seçeneklerin önceki ECS ayrıcalık yükseltme bölümlerinde örneklerini bulabilirsiniz.
Potansiyel Etki: Konteynerlere bağlı farklı bir role ayrıcalık yükseltme.
ssm:StartSession
ssm:StartSession
Bu izni ssm ayrıcalık yükseltme sayfasında nasıl kötüye kullanabileceğinizi ve ECS'e ayrıcalık yükseltebileceğinizi kontrol edin:
iam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
Bu izinleri ec2 ayrıcalık yükseltme sayfasında nasıl kötüye kullanabileceğinizi ve ECS'e ayrıcalık yükseltebileceğinizi kontrol edin:
?ecs:RegisterContainerInstance
?ecs:RegisterContainerInstance
TODO: Farklı bir AWS hesabından bir örneği kaydederek saldırgan tarafından kontrol edilen makineler altında görevlerin çalıştırılması mümkün mü?
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Bunun test edilmesi gerekiyor.
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
ve ecs:DescribeTaskSets
yetkilerine sahip bir saldırgan, mevcut bir ECS hizmeti için kötü amaçlı bir görev kümesi oluşturabilir ve birincil görev kümesini güncelleyebilir. Bu, saldırganın hizmet içinde keyfi kodu yürütmesine olanak sağlar.
Potansiyel Etki: Etkilenen serviste keyfi kod yürütme, işlevselliğini etkileme veya hassas verileri dışarı çıkarma potansiyeli.
Referanslar
Last updated