CredSSP Error: แก้ RDP ขึ้น Encryption Oracle Remediation

แก้ CredSSP Error ตอนเชื่อมต่อ RDP ที่ขึ้นข้อความ encryption oracle remediation หาว่าฝั่งไหนขาดอัปเดต แก้ถาวรด้วยการอัปเดต และใช้ค่าชั่วคราวอย่างปลอดภัย

โดย ทีมงาน THAI DATA CLOUD อ่าน 13 นาที

แชร์FacebookXLINELinkedIn
CredSSP — CredSSP Error: แก้ RDP ขึ้น Encryption Oracle Remediation
CredSSP Error: แก้ RDP ขึ้น Encryption Oracle Remediation

คำตอบสั้น ๆ: แก้ CredSSP Error ตอนเชื่อมต่อ RDP ที่ขึ้นข้อความ encryption oracle remediation หาว่าฝั่งไหนขาดอัปเดต แก้ถาวรด้วยการอัปเดต และใช้ค่าชั่วคราวอย่างปลอดภัย

คู่มือนี้อธิบาย CredSSP ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย

CredSSP (Credential Security Support Provider) คือโปรโตคอลที่ Remote Desktop ใช้ส่งข้อมูลยืนยันตัวตนไปยังเซิร์ฟเวอร์เมื่อเปิด Network Level Authentication ในปี 2018 Microsoft แก้ช่องโหว่ของ CredSSP (CVE-2018-0886) และต่อมาเปลี่ยนค่าเริ่มต้นของเครื่องที่ได้รับอัปเดตให้ปฏิเสธการเชื่อมต่อไปยังเครื่องที่ยังไม่ได้แก้ ผลคือ RDP ขึ้นข้อความ An authentication error has occurred. The function requested is not supported ตามด้วย This could be due to CredSSP encryption oracle remediation

คู่มือนี้เหมาะกับผู้ดูแลที่เจอข้อความนี้ตอนเชื่อมต่อเข้า Windows Server ที่สร้างจาก image เก่า กู้มาจาก backup เก่า หรือไม่ได้อัปเดตมานาน รวมถึงกรณีเครื่องลูกข่ายรุ่นเก่าต่อเข้าเซิร์ฟเวอร์ใหม่ไม่ได้ เมื่อทำครบ คุณจะรู้ว่าฝั่งไหนเป็นต้นเหตุ แก้ถาวรด้วยการอัปเดต และถ้าจำเป็นต้องใช้ค่าชั่วคราว ก็จะคืนค่าความปลอดภัยได้ถูกต้องหลังแก้เสร็จ

สิ่งที่ต้องเตรียม

  • สิทธิ์เปิด Console ของเซิร์ฟเวอร์บนพอร์ทัล ซึ่งเข้าเครื่องได้โดยไม่ผ่าน RDP และไม่ผ่าน CredSSP
  • บัญชีผู้ดูแลของทั้งเครื่องลูกข่ายและเซิร์ฟเวอร์
  • เซิร์ฟเวอร์ออกอินเทอร์เน็ตได้เพื่อดาวน์โหลดอัปเดต หรือเข้าถึง WSUS ขององค์กรได้
  • snapshot ของเซิร์ฟเวอร์ก่อนติดตั้งอัปเดตจำนวนมาก โดยเฉพาะเครื่องที่ไม่ได้อัปเดตมาหลายปี
ตารางการทำงานร่วมกันของ CredSSP ระหว่างเครื่องลูกข่ายแต่ละระดับการป้องกันกับเซิร์ฟเวอร์ที่อัปเดตแล้วและยังไม่อัปเดต
ค่าเริ่มต้นของเครื่องที่อัปเดตแล้วคือ Mitigated จึงต่อเข้าเซิร์ฟเวอร์ที่ไม่ได้อัปเดตไม่ได้

ขั้นตอนที่ 1: ยืนยันว่าเป็นปัญหา CredSSP จริง

ข้อความเต็มที่ mstsc แสดงจะมีลักษณะนี้ ถ้าไม่มีคำว่า CredSSP encryption oracle remediation แปลว่าเป็นปัญหาอื่น ให้ไล่ตามคู่มือแก้ RDP ต่อไม่ติด แทน

An authentication error has occurred.
The function requested is not supported

Remote computer: 203.0.113.10
This could be due to CredSSP encryption oracle remediation.
For more information, see https://go.microsoft.com/fwlink/?linkid=866660

ข้อสังเกตที่ช่วยยืนยันอาการคือ ระบบถามรหัสผ่านก่อน แล้วจึงขึ้นข้อความนี้ และเครื่องลูกข่ายเครื่องอื่นที่ยังไม่ได้อัปเดตอาจต่อเข้าเครื่องเดียวกันได้ปกติ แปลว่าเครือข่ายและพอร์ตไม่มีปัญหา ปัญหาอยู่ที่การตกลงกันของ CredSSP ระหว่างสองเครื่อง

ขั้นตอนที่ 2: หาว่าฝั่งไหนยังไม่ได้อัปเดต CredSSP

ตามเอกสารของ Microsoft การเชื่อมต่อถูกบล็อกในสองกรณี เครื่องลูกข่ายที่อัปเดตแล้วและตั้งค่าเป็น Force Updated Clients หรือ Mitigated ต่อเข้าเซิร์ฟเวอร์ที่ยังไม่อัปเดต และเครื่องลูกข่ายที่ยังไม่อัปเดตต่อเข้าเซิร์ฟเวอร์ที่ตั้งค่าเป็น Force Updated Clients ค่าเริ่มต้นของเครื่องที่อัปเดตแล้วคือ Mitigated กรณีแรกจึงพบบ่อยที่สุด

Windows Server 2019 ขึ้นไปออกรุ่นหลังการแก้ CredSSP แล้ว จึงมีการแก้ไขอยู่ในตัว เซิร์ฟเวอร์ที่ยังไม่ได้แก้จึงมักเป็น Windows Server 2016 หรือเก่ากว่าที่ไม่ได้ติดตั้งอัปเดตตั้งแต่ปี 2018 เข้าเซิร์ฟเวอร์ทาง Console แล้วดูรุ่นและอัปเดตล่าสุดที่ติดตั้ง

Get-ComputerInfo -Property WindowsProductName, OsBuildNumber
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 5 HotFixID, Description, InstalledOn

ถ้าอัปเดตล่าสุดเก่ากว่าปี 2018 หรือไม่มีอัปเดตแบบ Security Update เลย เซิร์ฟเวอร์นี้คือต้นเหตุ ถ้าเซิร์ฟเวอร์อัปเดตใหม่แล้ว ให้ตรวจฝั่งเครื่องลูกข่ายแทน โดยเฉพาะเครื่อง Windows รุ่นเก่าที่ไม่ได้รับอัปเดตแล้ว

ลำดับขั้นแก้ CredSSP Error ตั้งแต่อ่านข้อความ หาฝั่งที่ขาดอัปเดต อัปเดตผ่าน Console จนถึงคืนค่าความปลอดภัยและทดสอบ RDP
ค่า Vulnerable เป็นทางลัดชั่วคราวสำหรับเข้าไปอัปเดตเท่านั้น ไม่ใช่วิธีแก้

ขั้นตอนที่ 3: อัปเดตเซิร์ฟเวอร์ผ่าน Console

นี่คือวิธีแก้ถาวรที่ถูกต้อง เข้าเซิร์ฟเวอร์ผ่าน Console ตามคู่มือ Remote เข้า Console Server ผ่าน Web UI ทำ snapshot ก่อน แล้วติดตั้งอัปเดตสะสมล่าสุดผ่าน Settings > Windows Update หรือคำสั่ง sconfig เลือกเมนู Install updates ดูวิธีละเอียดในคู่มืออัปเดต Windows Server ผ่าน Windows Update และ sconfig

อัปเดตสะสมทุกเดือนตั้งแต่ปี 2018 รวมการแก้ CredSSP ไว้แล้ว ไม่ต้องหา KB เฉพาะ ติดตั้งอัปเดตล่าสุดตัวเดียวก็พอ เครื่องที่ไม่ได้อัปเดตมาหลายปีอาจต้องติดตั้ง servicing stack update ก่อน และอาจใช้เวลานานพร้อมรีสตาร์ตหลายรอบ หลังรีสตาร์ตให้ลองเชื่อมต่อ RDP จากเครื่องลูกข่ายตามปกติอีกครั้ง

ถ้าเป็น Windows Server 2012 R2 หรือเก่ากว่า รุ่นเหล่านี้หมดการสนับสนุนจาก Microsoft แล้ว นอกจากแก้ CredSSP ให้ใช้งานได้ ควรวางแผนย้ายขึ้นรุ่นที่ยังได้รับอัปเดต ดูทางเลือกได้ในคู่มือ Upgrade Windows Server แบบ In-place

ขั้นตอนที่ 4: ตรวจค่า Encryption Oracle Remediation ทั้งสองฝั่ง

ถ้าอัปเดตแล้วทั้งสองฝั่งแต่ยังเจอ CredSSP error ให้ตรวจว่ามีนโยบายหรือค่ารีจิสทรีบังคับไว้หรือไม่ ค่าอยู่ที่ HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters ชื่อ AllowEncryptionOracle

  • 0 คือ Force Updated Clients ปฏิเสธเครื่องฝั่งตรงข้ามที่ยังไม่อัปเดตทั้งหมด
  • 1 คือ Mitigated ค่าเริ่มต้นของเครื่องที่อัปเดตแล้ว เครื่องลูกข่ายจะไม่ส่งข้อมูลไปยังเซิร์ฟเวอร์ที่ยังไม่อัปเดต
  • 2 คือ Vulnerable ยอมเชื่อมต่อกับเครื่องที่ยังไม่อัปเดต ซึ่งเปิดความเสี่ยงต่อช่องโหว่
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle
gpresult /h C:\gpresult.html

ถ้า reg query ตอบว่าหาค่าไม่พบ แปลว่าใช้ค่าเริ่มต้น ในรายงาน gpresult ให้หานโยบาย Encryption Oracle Remediation ถ้ามี GPO ของโดเมนตั้งค่าไว้ การแก้รีจิสทรีด้วยมือจะถูก GPO เขียนทับ ต้องแก้ที่ GPO ต้นทาง

ขั้นตอนที่ 5: ทางเลือกชั่วคราวเมื่อเข้า Console ไม่ได้

ถ้าไม่มีทางเข้าเซิร์ฟเวอร์อื่นนอกจาก RDP จริง ๆ ให้ลดระดับการป้องกัน CredSSP บนเครื่องลูกข่ายเครื่องเดียวชั่วคราว เพื่อเข้าไปอัปเดตเซิร์ฟเวอร์ แล้วคืนค่าทันที ค่านี้ทำให้เครื่องลูกข่ายส่งข้อมูลยืนยันตัวตนไปยังเครื่องที่มีช่องโหว่ได้ ระหว่างที่ตั้งไว้ ห้ามใช้เครื่องนี้เชื่อมต่อไปยังเครื่องอื่นที่ไม่รู้จัก

บน Windows Pro หรือ Enterprise เปิด gpedit.msc ไปที่ Computer Configuration > Administrative Templates > System > Credentials Delegation > Encryption Oracle Remediation เลือก Enabled แล้วตั้ง Protection Level เป็น Vulnerable

หน้าจอจำลองนโยบาย Encryption Oracle Remediation ของ CredSSP ใน Local Group Policy Editor ที่ตั้ง Protection Level เป็น Vulnerable ชั่วคราว
ตั้งบนเครื่องลูกข่ายเท่านั้น และเปลี่ยนกลับเป็น Not Configured ทันทีหลังอัปเดตเซิร์ฟเวอร์ (ภาพจำลอง)

บน Windows Home ที่ไม่มี gpedit ให้ใช้คำสั่ง reg ใน Command Prompt หรือ PowerShell แบบ Run as administrator แทน เอกสารของ Microsoft ระบุว่าการเปลี่ยนค่านี้ต้องรีสตาร์ตเครื่องจึงมีผล

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2 /f

เมื่อเชื่อมต่อได้ ให้ติดตั้งอัปเดตบนเซิร์ฟเวอร์ตามขั้นตอนที่ 3 ทันที ถ้าเซิร์ฟเวอร์ถูกตั้งเป็น Force Updated Clients และเครื่องลูกข่ายเป็นฝั่งที่ไม่ได้อัปเดต การตั้งค่านี้บนลูกข่ายจะไม่ช่วย ต้องอัปเดตเครื่องลูกข่ายแทน

ขั้นตอนที่ 6: คืนค่าความปลอดภัยของ CredSSP และทดสอบ

หลังเซิร์ฟเวอร์อัปเดตเสร็จ ให้คืนค่าเครื่องลูกข่าย ถ้าตั้งผ่าน gpedit ให้เปลี่ยนนโยบาย Encryption Oracle Remediation กลับเป็น Not Configured ถ้าตั้งผ่าน reg ให้ลบค่าทิ้ง แล้วรีสตาร์ต

reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /f
คำสั่ง reg ตรวจค่า AllowEncryptionOracle ของ CredSSP บนเครื่องลูกข่าย ตั้งเป็น 2 ชั่วคราว แล้วลบค่าทิ้งหลังอัปเดตเซิร์ฟเวอร์
ไม่มีค่าในรีจิสทรีแปลว่าใช้ค่าเริ่มต้น Mitigated ซึ่งเป็นค่าที่ควรใช้

จากนั้นเชื่อมต่อ RDP เข้าเซิร์ฟเวอร์อีกครั้ง ถ้าต่อได้โดยไม่มีข้อความ CredSSP แปลว่าทั้งสองฝั่งอัปเดตถูกต้องแล้ว ถ้ายังขึ้นข้อความเดิม แปลว่าเซิร์ฟเวอร์ยังไม่ได้รับอัปเดตที่มีการแก้ไข ให้กลับไปตรวจประวัติการติดตั้งในขั้นตอนที่ 2 อย่าแก้ด้วยการตั้ง Vulnerable ทิ้งไว้ถาวร

รายละเอียดทางเทคนิค ตารางการทำงานร่วมกัน และค่าของนโยบายทั้งหมดอยู่ในเอกสาร CredSSP updates for CVE-2018-0886 ของ Microsoft

ปัญหาที่พบบ่อยเกี่ยวกับ CredSSP

ปิด Network Level Authentication ที่เซิร์ฟเวอร์แทนการอัปเดตได้หรือไม่?

ไม่แนะนำ การปิด NLA ทำให้ใครก็เปิดหน้าล็อกอินของเซิร์ฟเวอร์ได้ก่อนยืนยันตัวตน เพิ่มความเสี่ยงจากการโจมตี RDP และการจะปิด NLA ก็ต้องเข้าเซิร์ฟเวอร์ได้อยู่แล้ว ถ้าเข้าได้ผ่าน Console การอัปเดตเซิร์ฟเวอร์ตรง ๆ คือทางแก้ที่ดีกว่าเสมอ

ข้อความ The Local Security Authority cannot be contacted เกี่ยวกับ CredSSP หรือไม่?

เป็นคนละสาเหตุ ข้อความนี้มักเกิดเมื่อรหัสผ่านหมดอายุหรือบัญชีถูกตั้งให้ต้องเปลี่ยนรหัสในการล็อกอินครั้งถัดไป ขณะที่เปิด NLA อยู่ หรือเมื่อเครื่องติดต่อ Domain Controller ไม่ได้ แก้ด้วยการเข้า Console เปลี่ยนรหัสผ่านหรือตรวจการเชื่อมต่อกับโดเมน ไม่ต้องแก้ค่า Encryption Oracle Remediation

ตั้ง Vulnerable ทิ้งไว้บนเครื่องผู้ดูแลจะเสี่ยงแค่ไหน?

ช่องโหว่นี้เปิดทางให้ผู้โจมตีที่อยู่กลางทางการเชื่อมต่อนำข้อมูลยืนยันตัวตนไปใช้สั่งงานบนเซิร์ฟเวอร์ได้ เครื่องของผู้ดูแลเป็นเครื่องที่ถือสิทธิ์สูงที่สุดในองค์กร การปล่อยค่า Vulnerable ไว้จึงเป็นความเสี่ยงที่ไม่จำเป็น ให้คืนค่าทันทีหลังใช้งานตามขั้นตอนที่ 6

เครื่องลูกข่ายรุ่นเก่าต่อเข้าเซิร์ฟเวอร์ใหม่ไม่ได้ ต้องแก้ฝั่งไหน?

ถ้าเซิร์ฟเวอร์ตั้ง Force Updated Clients ไว้ เครื่องลูกข่ายที่ไม่ได้อัปเดตจะต่อไม่ได้ ซึ่งเป็นพฤติกรรมที่ตั้งใจไว้ ให้อัปเดตเครื่องลูกข่าย ถ้าเป็น Windows รุ่นที่หมดการสนับสนุนแล้ว ควรเปลี่ยนเครื่องหรือระบบปฏิบัติการ ไม่ควรลดค่าความปลอดภัยของเซิร์ฟเวอร์ลงเพื่อรองรับเครื่องเก่า

ถ้ามีเซิร์ฟเวอร์รุ่นเก่าหลายเครื่องที่ต้องอัปเดตหรือย้ายขึ้นรุ่นใหม่ ติดต่อทีมงาน THAI DATA CLOUD ได้ ดูรายละเอียดเครื่องรุ่นปัจจุบันได้ที่ Cloud Windows Server

อ่านเพิ่มเติมเกี่ยวกับ CredSSP

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน