เราเคยพูดถึง TLS Handshake และวิธีที่มันล้มเหลว เรายังระบุว่ามี TLS Failures มากมายเพราะ Microsoft พยายามแก้ไขบางอย่าง Security Update CVE-2019-1318 ที่เปิดตัวล่าสุดสำหรับ TLS และ SSL ทำให้ TLS Connections ล้มเหลวแบบ Intermittent หรือใช้เวลานานจนเกิด Timeout ในบทความนี้ จะแชร์ Workarounds สำหรับ TLS Failures และ Timeouts ใน Windows Systems

ข้อผิดพลาดต่อไปนี้พบบ่อยเพราะปัญหาที่กำลังดำเนินอยู่:
- The request was aborted: Could not create SSL/TLS secure Channel
- Error 0x8009030f
- Error ที่บันทึกใน System Event Log สำหรับ SCHANNEL Event 36887 ด้วย Alert Code 20 และ Description "A fatal alert was received from the remote endpoint. The TLS protocol defined fatal alert code is 20.?"
Windows Versions ใดบ้างที่ได้รับผลกระทบจาก TLS Failures?
Vulnerability นี้อาจให้ Attacker โอกาสทำ Man-in-the-middle Attack Update นี้แก้ไขแล้ว แต่ทำให้เกิด TLS Failures, Timeouts ใน Windows Systems
Microsoft 指出ว่ามันเกิดขึ้นเฉพาะเมื่อ Devices พยายามทำ TLS Connections ไปยัง Devices ที่ไม่มี Support สำหรับ Extended Master Secret Extension หาก Devices มี Supported Version แล้ว จะไม่เกิดขึ้น นี่คือรายการ Windows Versions ที่ได้รับผลกระทบ ณ ตอนนี้:
- Windows 10 Version 1607
- Windows Server 2016
- Windows 10
- Windows 8.1
- Windows Server 2012 R2
- Windows Server 2012
- Windows 7 Service Pack 1
- Windows Server 2008 R2 Service Pack 1
- Windows Server 2008 Service Pack 2
รายการ Windows Updates ที่ได้รับผลกระทบจาก Security Update
LCU (Latest Cumulative Update) หรือ Monthly Rollups ใดๆ ที่เปิดตัวเมื่อ 8 ตุลาคม 2019 หรือหลังจากนั้นสำหรับ Platforms ที่ได้รับผลกระทบ อาจประสบปัญหานี้:
- KB4517389 LCU for Windows 10, version 1903.
- KB4519338 LCU for Windows 10, version 1809, และ Windows Server 2019.
- KB4520008 LCU for Windows 10, version 1803.
- KB4520004 LCU for Windows 10, version 1709.
- KB4520010 LCU for Windows 10, version 1703.
- KB4519998 LCU for Windows 10, version 1607, และ Windows Server 2016.
- KB4520011 LCU for Windows 10, version 1507.
- KB4520005 Monthly Rollup for Windows 8.1 และ Windows Server 2012 R2.
- KB4520007 Monthly Rollup for Windows Server 2012.
- KB4519976 Monthly Rollup for Windows 7 SP1 และ Windows Server 2008 R2 SP1.
- KB4520002 Monthly Rollup for Windows Server 2008 SP2
- KB4519990 Security-only update for Windows 8.1 และ Windows Server 2012 R2.
- KB4519985 Security-only update for Windows Server 2012 และ Windows Embedded 8 Standard.
- KB4520003 Security-only update for Windows 7 SP1 และ Windows Server 2008 R2 SP1
- KB4520009 Security-only update for Windows Server 2008 SP2
Workarounds สำหรับ TLS Failures, Timeouts ใน Windows
ตาม Microsoft มี 3 วิธีแก้ TLS Failures และ Timeouts
- Enable EMS บน Client และ Server ทั้งคู่
- Remove TLS_DHE_* Cipher Suites
- Enable/Disable EMS บน Windows 10/Windows Server
ขอให้ระวังว่ามี Drawbacks กับ Workarounds โดยเฉพาะมุมมอง Security
1] Enable EMS บน Client และ Server ทั้งคู่
เรารู้ว่าถ้าทั้งสองฝั่งมี EMS Installed ปัญหาจะไม่เกิด ดังนั้นวิธีแก้ชัดเจน แม้ EMS จะถูก Enable โดย Default สำหรับ Release ใดๆ หลัง 8 ตุลาคม 2019 หากไม่ได้ ให้แน่ใจว่า Enable support for Extend Master Secret (EMS) Extension
หากคุณเป็น IT Admin ตรวจสอบให้แน่ใจว่า Support EMS Resumption ตาม RFC 7627 อย่างสมบูรณ์
2] Remove TLS_DHE_* Cipher Suites
หาก OS ไม่ Support EMS IT Admin ต้อง Remove TLS_DHE_* Cipher Suites จาก Cipher Suite List ใน OS ของ TLS Client Device เอกสารเต็มสำหรับ Prioritizing Schannel Cipher Suites พร้อมใช้งาน
ที่กล่าวมา นี่เป็น Temporary Fix การ Disable พวกมันหมายถึงคุณเชิญชวน Man-in-the-middle Attack
3] Enable/Disable EMS บน Windows 10/Windows Server
หากเพื่อาะปัญหา TLS ใดๆ คุณเคย Disable EMS บนคอมพิวเตอร์ ให้ใช้ Registry Settings บน Server และ Client ทั้งคู่เพื่อ Enable มัน
- เปิด Registry Editor
- ไปที่ HKLM\System\CurrentControlSet\Control\SecurityProviders\Schannel
- On TLS Server: DisableServerExtendedMasterSecret: 0
- On TLS Client: DisableClientExtendedMasterSecret: 0
หากไม่มี คุณสามารถสร้างได้
หวังว่า Workarounds นี้จะช่วยแก้ปัญหา TLS ชั่วคราวได้ โปรดติดตาม Updates ที่จะเปิดตัวเพื่อแก้ปัญหานี้ถาวร
