
Python 3.15.1 มาแล้ว อัปเดตด่วนเรื่องใบรับรองเว็บ อย่าลืม pip ในงานเก่า
อัปเดต 27 ต.ค. 2026: Python ออกรอบสองแล้วเมื่อ 25 ต.ค. คือ 3.15.2 และ 3.14.10 ที่มีตัวติดตั้ง ส่วน 3.13.18, 3.12.16 และ 3.11.18 เป็นแบบ source-only รอบนี้เพิ่มการบล็อกคีย์ตัวกลาง eMudhra ที่หลุดไว้ในโมดูล ssl (CVE-2026-115557) หน้าของ 3.15.1, 3.14.9 และ 3.13.17 จึงขึ้นว่าถูกแทนแล้ว ควรลงรุ่นรอบสองแทน และยังต้องอัปเดต pip กับ uv ใน virtual environment เดิมเหมือนเดิม ดูวิธีเช็กและแก้ทีละขั้นใน คู่มือเช็กและแก้แพตช์สายเดฟ
Python 3.15.1 มีการแก้บั๊กและปรับงานสร้างโปรแกรมกับเอกสารประมาณ 330 รายการ จากผู้ร่วมพัฒนา 117 คน แต่เหตุที่ควรสนใจรอบนี้คือการเร่งออกอัปเดตเพื่อจัดการความเชื่อถือใบรับรองเว็บ ซึ่งมากับเครื่องมือติดตั้งส่วนเสริมของ Python ด้วย (Python.org, Python Insider)
ถ้าคุณใช้ Python ทำรายงาน เรียนเขียนโปรแกรม หรือดูแลงานของร้านและบริษัท ประเด็นที่ควรฝากคนดูแลเครื่องเช็กคือ งานเดิมยังใช้เครื่องมือชุดเก่าอยู่หรือเปล่า เพราะประกาศขอให้อัปเดต pip และ uv ในทุก virtual environment ที่มีอยู่แล้ว ไม่ได้จบเพียงติดตั้ง Python รุ่นใหม่ครับ (Python Insider)
สรุป 30 วินาที: เกิดอะไรขึ้น
วันที่ 21 ตุลาคม 2026 มี Python 3.15.1, 3.14.9 และรุ่นความปลอดภัยพิเศษ 3.13.17 ออกมา โดยประกาศ Python Insider ระบุว่าเป็นการเร่งออกรุ่น ทั้งสามรุ่นเปลี่ยน pip ที่แถมมาเป็น 26.2.2 ซึ่งมี certifi 2026.10.19 เพื่อรับมือเหตุด้านความปลอดภัยของใบรับรอง CA จาก eMudhra/emSign คำว่า CA ในที่นี้หมายถึงผู้ออกใบรับรองที่ใช้ยืนยันตัวตนของเว็บไซต์ (Python Insider, Python.org รุ่น 3.13.17)
pip คือเครื่องมือสำหรับติดตั้งแพ็กเกจ หรือชุดโปรแกรมเสริมที่งาน Python เรียกใช้ ส่วน certifi คือชุดข้อมูลใบรับรองที่เกี่ยวข้องกับรายชื่อผู้ออกบัตรประจำตัวเว็บที่เครื่องเชื่อ เรื่องที่แก้รอบนี้จึงอยู่ในเครื่องมือประกอบด้วย ไม่ได้มีแค่ตัวภาษาหลัก โดยบันทึกของ uv ระบุชัดว่าชุด certifi ใหม่นำใบรับรองรากที่ได้รับผลกระทบออกแล้ว (Python Insider, Astral บน GitHub)
สำหรับคนใช้ uv ซึ่งเป็นเครื่องมือจัดการ Python และแพ็กเกจ รุ่น 0.13.5 ออกวันที่ 21 ตุลาคมเช่นกัน หลังอัปเดต uv แล้ว ผู้พัฒนาให้ใช้ uv python upgrade เพื่อรับชุด Python ที่ปรับปรุง แต่สภาพแวดล้อมงานเก่าที่ล็อกเลขรุ่นย่อยไว้จะไม่เปลี่ยนตามเอง และยังต้องอัปเดต pip แยกต่างหาก (Astral บน GitHub)
ทำไมเรื่องนี้เกี่ยวกับคุณ
คนทำงานทั่วไปไม่จำเป็นต้องจำชื่อใบรับรองทั้งหมด สิ่งที่ควรรู้คือประกาศนี้ขอให้ตรวจถึง virtual environment หรือพื้นที่แยกเครื่องมือและแพ็กเกจของแต่ละงานด้วย ทีม Python ขอให้อัปเดต pip และ uv ในพื้นที่เดิมทุกชุด จึงไม่ควรถือว่าติดตั้งตัวใหม่ลงเครื่องแล้วงานทุกงานได้รับการแก้ไขครบ (Python Insider)
สำหรับนักเรียนหรือคนที่ใช้ Python ตามบทเรียน ผมแนะนำให้เก็บชื่อโครงการและรุ่นที่ใช้ไว้ก่อนลงมือ ส่วนพนักงานที่มีคนดูแลระบบให้ส่งประกาศนี้พร้อมชื่อเครื่องมือที่ใช้ไปให้เขาตรวจ จะช่วยให้คำว่า “อัปเดตแล้ว” มีขอบเขตชัดขึ้นว่าหมายถึงตัว Python หรือรวมถึง pip ในงานเดิมด้วย ข้อแนะนำนี้อิงจากเงื่อนไขที่ uv ระบุว่าสภาพแวดล้อมเดิมอาจไม่สลับตัว Python และต้องอัปเดต pip แยก (Astral บน GitHub)
ธุรกิจในไทยที่ใช้ Python ก็ควรเช็กตามนี้ได้ โดยยังไม่มีข้อมูลในแหล่งข่าวชุดนี้ว่ามีองค์กรไทยใดได้รับผลกระทบหรือมีความเสียหายเท่าไร ประกาศที่มีอยู่บอกเหตุผลของการแก้ไขและวิธีอัปเดต ไม่ได้ยืนยันว่าเครื่องของผู้อ่านถูกโจมตีแล้ว การจัดคิวตรวจเครื่องจึงควรเริ่มจากรู้ว่าใช้อะไรอยู่จริง (Python Insider)
ทำงานยังไง
ภาพรวมของการแก้ไขเริ่มจาก Python ทั้งสามรุ่นแถม pip 26.2.2 ซึ่งนำ certifi 2026.10.19 มาด้วย ส่วนฝั่ง uv ระบุว่าทั้ง pip ที่ติดตั้งไว้ในตัว Python ที่ uv จัดการ และ pip ที่เตรียมไว้สำหรับสร้างสภาพแวดล้อมใหม่ ใช้ certifi ชุดที่นำใบรับรองรากที่ได้รับผลกระทบออกแล้ว (Python Insider, Astral บน GitHub)
ลองนึกถึงรถยนต์ออกรอบเช็กระยะพร้อมเปลี่ยนสมุดรายชื่อร้านที่ไว้ใจ ตัว Python ได้รับการดูแลตามรุ่น ส่วนชุดใบรับรองก็ได้รับการปรับรายชื่อไปด้วย แต่ถ้างานเก่ายังถือสมุดฉบับเดิมอยู่ การเอารถอีกคันไปเช็กระยะไม่ได้เปลี่ยนสมุดเล่มนั้นให้เอง อุปมานี้ช่วยอธิบายว่าทำไมประกาศจึงย้ำให้ดู pip ในสภาพแวดล้อมเดิมเพิ่มเติม (Python Insider)
ในรายละเอียดของ uv คำว่า CPython หมายถึงตัว Python ที่ชุดอัปเดตนี้นำมาจัดเตรียมให้ใช้งาน ส่วน python-build-standalone 20261021 คือชื่อชุดสร้างโปรแกรมที่บันทึกรุ่นอ้างถึง โดย uv 0.13.5 ปรับชุดสำหรับ Python 3.11 ขึ้นไป และรวมรุ่นความปลอดภัย 3.15.1, 3.14.9 กับ 3.13.17 ด้วย ผู้ใช้จึงต้องแยกการอัปเดตเครื่องมือ uv ออกจากการสั่งรับตัว Python ชุดใหม่ (Astral บน GitHub)
อีกคำที่อาจเจอคือ ensurepip ซึ่งเป็นส่วนที่เตรียม pip มาให้ Python บันทึกของ uv ระบุว่าเมื่อใช้ python -m venv สร้างพื้นที่ทำงานใหม่ จะติดตั้ง pip ให้ตามปกติ และสำเนา pip ในชุดสร้างใหม่นี้ได้รับการปรับด้วย นี่อธิบายว่าทำไมการแก้ทั้งตัวที่ติดตั้งอยู่และตัวที่เตรียมไว้จึงมีความหมายกับงานที่จะสร้างต่อจากนี้ (Astral บน GitHub)
จุดหักมุม: รุ่นที่เพิ่งเข้าสู่โหมดความปลอดภัยยังได้ตัวติดตั้งพิเศษ
Python 3.13 เพิ่งเข้าสู่ security-only mode หรือช่วงที่ดูแลเฉพาะเรื่องความปลอดภัย ทีม Python อธิบายว่าปกติจะไม่อัปเดต pip ในรุ่นแบบนี้ เพราะกังวลเรื่องความเข้ากันได้กับงานเดิม แต่ครั้งนี้เห็นว่าควรออกรุ่นพิเศษพร้อมตัวติดตั้ง เหตุผลนี้ปรากฏทั้งในประกาศที่ลงชื่อ Hugo van Kemenade และทีมผู้ดูแลรุ่น กับหน้าของ 3.13.17 (Python Insider, Python.org)
ดังนั้น คนที่ยังต้องใช้สาย 3.13 มีทางเลือกอัปเดตเป็น 3.13.17 พร้อมตัวติดตั้ง ไม่จำเป็นต้องตีความว่าประกาศนี้บังคับย้ายงานทั้งหมดไป 3.15 ทันที หน้ารุ่น 3.13.17 มีตัวติดตั้งสำหรับ Windows และ macOS และระบุว่า 3.15 เป็นสายรุ่นฟีเจอร์ล่าสุด การเลือกรุ่นที่เหมาะกับงานยังควรแยกระหว่างแก้ความปลอดภัยในสายเดิมกับการย้ายสายรุ่น (Python.org) ข้อควรรู้หลังวันที่ 25 ต.ค. คือ 3.13.18 ที่ออกตามมาเป็นแบบ source-only ไม่มีตัวติดตั้ง ตัวติดตั้งล่าสุดของสาย 3.13 จึงยังเป็น 3.13.17 ซึ่งมี pip 26.2.2 แต่ไม่มีการบล็อกคีย์ในโมดูล ssl ของรอบสอง (Python Insider, Python.org รุ่น 3.13.18)
ฝั่ง Mac ยังมีอีกเรื่องที่เกี่ยวกับการใช้งานตรง ๆ ตัวติดตั้ง macOS ของรุ่นนี้สร้างด้วย Tk รุ่นก่อนออกจริง โดย Tk เป็นส่วนที่เกี่ยวกับหน้าต่างแอปที่ใช้ tkinter เช่น IDLE โปรแกรมสำหรับเขียนและลองรัน Python การเปลี่ยนนี้แก้อาการค้างที่อาจเกิดบน macOS 27.0 กับรุ่นเก่า คำว่า “อาจ” สำคัญ เพราะประกาศไม่ได้บอกว่าเครื่อง Mac ทุกเครื่องจะค้าง (Python Insider)
เรื่องเงิน / ผลกระทบ
แหล่งข่าวไม่ได้ระบุยอดเงินเสียหาย จำนวนผู้ใช้ที่ถูกโจมตี หรือค่าใช้จ่ายของธุรกิจไทย จึงยังแปลงข่าวนี้เป็นตัวเลขความเสียหายไม่ได้ สิ่งที่ยืนยันได้คือทีม Python เร่งออกรุ่นเพื่อจัดการเหตุใบรับรอง และ Astral ขอให้คนที่อยู่บน CPython 3.9 กับ 3.10 วางแผนย้ายออก เพราะ pip ที่แถมกับสองรุ่นนั้นยังเชื่อถือใบรับรองรากที่ได้รับผลกระทบ (Python Insider, Astral บน GitHub)
ถ้ามองเป็นการจัดเวลาทำงาน ผมแนะนำให้แยกงานด่วนคือเช็กและอัปเดตเครื่องมือในพื้นที่เดิม ออกจากงานที่ต้องทดสอบมากขึ้นอย่างการย้ายสาย Python เหตุผลคือประกาศเองกล่าวถึงความกังวลเรื่องความเข้ากันได้ย้อนหลัง การอัปเดตเพื่อความปลอดภัยจึงควรมีการลองงานสำคัญก่อนกลับไปใช้งานเต็มรูปแบบ ไม่ควรรับประกันว่าทุกโครงการจะผ่านโดยไม่ตรวจ (Python Insider)
สำหรับทีมที่ใช้ Docker ซึ่งเป็นการจัดชุดโปรแกรมและสภาพแวดล้อมให้พร้อมนำไปรัน Astral ระบุว่าจะหยุดออกอิมเมจ uv ที่อิง Python 3.9 และ 3.10 ซึ่งสิ้นสุดการดูแลจากต้นทางแล้ว ทีมที่ใช้ชุดเหล่านี้จึงควรนำการเปลี่ยนฐานรุ่นเข้าแผนงานด้วย ประกาศนี้ไม่ได้หมายความว่าอิมเมจเก่าหายไปทันที แต่บอกว่าจะไม่มีการออกชุดใหม่ตามแนวทางเดิม (Astral บน GitHub)
ข้อมูลที่ยังไม่ชัด และจุดที่แหล่งข่าวพูดไม่ตรงกัน
ตัวเลขการเปลี่ยนแปลงตรวจกับหน้าทางการได้ครบแล้ว หน้า 3.15.1 ระบุราว 330 รายการจากผู้ร่วมพัฒนา 117 คนนับจาก 3.15.0 ส่วนหน้า 3.14.9 ระบุราว 168 รายการจาก 74 คนนับจาก 3.14.8 ซึ่งเป็นฐานเปรียบเทียบในสายเดียวกันตามปกติ (Python.org รุ่น 3.15.1, Python.org รุ่น 3.14.9)
ส่วนขอบเขตเหตุ eMudhra/emSign แหล่งข้อมูลที่เปิดเผยยังไม่ได้แจกแจงผู้เสียหายในไทยหรือยืนยันความเสียหายของเครื่องใดโดยเฉพาะ เรารู้ว่า uv 0.13.4 นำใบรับรองรากที่ได้รับผลกระทบออกจากชุดใบรับรองของ uv เอง และ 0.13.5 เพิ่มการปฏิเสธสายใบรับรองที่มีคีย์ตัวกลาง eMudhra ที่ถูกกระทบ แต่ข้อมูลนี้ไม่พอสำหรับสรุปย้อนหลังว่าแต่ละระบบเคยถูกโจมตีหรือไม่ (Astral บน GitHub)
แล้วเราควรทำอะไร
ผู้ใช้ทั่วไป นักเรียน และคนใช้เครื่องที่มีผู้ดูแล
- จดว่างานใดใช้ Python และให้ผู้ดูแลตรวจรุ่นด้วย
python --versionพร้อมตรวจ pip ด้วยpython -m pip --versionภายในพื้นที่ของงานนั้นด้วย เป้าหมายคือให้การตรวจครอบคลุมสภาพแวดล้อมเดิมตามประกาศ ไม่ดูเฉพาะตัวที่เพิ่งลงใหม่ (Python Insider) - ถ้าเริ่มงานใหม่และไม่มีข้อกำหนดจากบทเรียนหรือองค์กร ผมแนะนำให้พิจารณา 3.15.2 ซึ่งอยู่ในสายฟีเจอร์ล่าสุด ส่วนคนที่มีงานเดิมบน 3.14 หรือ 3.13 ให้เริ่มประเมิน 3.14.10 หรือ 3.13.18 ในสายเดิมก่อน (3.13.18, 3.12.16 และ 3.11.18 เป็นแบบ source-only ไม่มีตัวติดตั้ง) รุ่นรอบสองเหล่านี้ออกวันที่ 25 ต.ค. แทน 3.15.1, 3.14.9 และ 3.13.17 และเพิ่มการบล็อกคีย์ตัวกลาง eMudhra ในโมดูล ssl ซึ่งรอบแรกไม่มี (Python Insider, Python.org รุ่น 3.15.2)
- หลังอัปเดต ให้ลองเปิดและรันงานที่ต้องใช้จริงก่อนถึงเวลาส่งงาน สำหรับคนใช้ IDLE บน macOS 27.0 ให้บอกผู้ดูแลด้วยว่าประกาศมีการแก้อาการค้างที่อาจเกิดในแอปที่ใช้ tkinter เพื่อให้ตรวจประเด็นนี้ตรงจุด (Python Insider)
นักพัฒนาและคนดูแล pip ในโครงการเดิม
- เปิด virtual environment ของแต่ละงาน แล้วตรวจทั้ง Python และ pip อย่าปิดรายการตรวจหลังเห็นเลข Python รุ่นใหม่เพียงอย่างเดียว เพราะ Python Insider ขอให้อัปเดต pip และ uv ในทุกสภาพแวดล้อมที่มีอยู่แล้ว (Python Insider)
- สำหรับ pip ให้ใช้คำสั่งที่ Python Insider ระบุด้านล่างภายในสภาพแวดล้อมที่ต้องการอัปเดต คำสั่งนี้ระบุไฟล์ pip 26.2.2 พร้อมค่า SHA-256 หรือค่าตรวจสอบว่าไฟล์ตรงกับที่กำหนด คัดลอกให้ครบทั้งบรรทัด โดยลิงก์ไฟล์ในคำสั่งเป็นส่วนหนึ่งของคำสั่งทางการ ไม่ใช่แหล่งข่าวเพิ่มเติม (Python Insider)
python -m pip install "pip @ https://files.pythonhosted.org/packages/3f/06/3e4420302363fbb71be3c7f35ce042f54bfca330e3e66b3a2e3c4cca579f/pip-26.2.2-py3-none-any.whl#sha256=fd7f4dfa8190e014013b9f08f3e973f4e4c26ffd179a204895533a7254813a70"
- ตรวจ
python -m pip --versionอีกครั้ง แล้วลองขั้นตอนติดตั้งแพ็กเกจและงานหลักของโครงการตามวิธีทดสอบเดิม ผมแนะนำให้เก็บผลแยกเป็นรายโครงการ เพื่อให้รู้ว่าทำครบทุกพื้นที่แล้วตามขอบเขตที่ประกาศร้องขอ (Python Insider) - เทียบรุ่นแพ็กเกจกับรายการขั้นต่ำของ PSF ที่ปรับล่าสุดวันที่ 26 ต.ค. คือ certifi 2026.10.19, pip 26.2.2, uv 0.13.4, sigstore 4.5.1, conda 26.9.4, pixi 0.82.1 และ virtualenv 21.14.12 ซึ่งเพิ่งเข้ามาในรายการ PSF ยังขอให้สร้าง container image ใหม่แบบปิด layer caching ด้วย (PSF Discourse) ส่วน certifi รุ่นล่าสุดบน PyPI ตอนนี้คือ 2026.10.23 (PyPI)
คนใช้ uv และทีมที่ดูแลระบบ
- อัปเดต uv ให้ครอบคลุมรุ่นแก้ไขนี้ก่อน แล้วใช้คำสั่ง
uv python upgradeตามบันทึกรุ่น 0.13.5 เพื่อรับชุด Python ที่อัปเดต การอัปเดต uv กับการอัปเดตตัว Python ที่ uv จัดการเป็นคนละส่วนที่ต้องตรวจให้ครบ (Astral บน GitHub) ถ้าต้องการชุดรอบสองอย่าง 3.15.2 ต้องใช้ uv 0.13.6 ขึ้นไป ซึ่งออกวันที่ 26 ต.ค. และเพิ่ม CPython 3.11.18, 3.12.16, 3.13.18, 3.14.10 และ 3.15.2 (Astral บน GitHub) - ตรวจโครงการที่ล็อกเลข patch หรือเลขรุ่นแก้ไขท้ายสุดไว้เป็นพิเศษ เพราะ uv บอกว่าจะไม่สลับตัว Python ของ virtual environment เหล่านั้นอัตโนมัติ และให้อัปเดต pip ในพื้นที่เดิมแยกด้วย อย่าใช้ผลจากโครงการเดียวแทนทุกโครงการ (Astral บน GitHub)
- ถ้ายังใช้ CPython 3.9 หรือ 3.10 ให้ทำแผนย้ายออกตามคำแนะนำของ Astral พร้อมตรวจชุด Docker ที่เกี่ยวข้อง เนื่องจาก pip ที่แถมยังมีชุดใบรับรองที่เชื่อถือรากที่ได้รับผลกระทบ และ uv หยุดเผยแพร่อิมเมจใหม่บนสองสายที่สิ้นสุดการดูแลนี้ (Astral บน GitHub) PSF ระบุชัดว่า Python 3.10 และเก่ากว่าสิ้นสุดการดูแลแล้ว ไม่ได้รับการแก้ไขความปลอดภัยรอบนี้ (PSF Discourse)
ผมมองว่า…
ผมมองว่า บทเรียนของข่าวนี้ไม่ใช่การจำเลขรุ่นใหม่ให้ได้ แต่คือการรู้ว่างานแต่ละชิ้นกำลังใช้เครื่องมือชุดไหนอยู่จริง นี่เป็นความเห็นของผมจากการที่ทั้งทีม Python และ Astral ย้ำถึงสภาพแวดล้อมเดิม ถ้าผู้ดูแลตอบได้ทั้งรุ่น Python รุ่น pip และสถานะของงานที่ล็อกรุ่นไว้ การอัปเดตก็ตรวจรับได้ชัดกว่าคำว่า “ลงใหม่แล้วครับ” ประโยคเดียว (Python Insider, Astral บน GitHub)
ผมยังเห็นว่าการคงสายรุ่นเดิมไว้ระหว่างแก้ความปลอดภัยเป็นตัวเลือกที่ควรประเมินสำหรับงานที่มีข้อจำกัด โดยเฉพาะเมื่อทีม Python อธิบายเองว่าการเปลี่ยน pip มีข้อกังวลด้านความเข้ากันได้ การตัดสินใจที่ดีจึงควรมีทั้งแผนอัปเดตและผลลองงานจริง ส่วนจะย้ายไป 3.15 เมื่อไรควรอิงความพร้อมของโครงการ ข้อนี้เป็นคำแนะนำในการวางแผน ไม่ใช่คำรับรองความเข้ากันได้จากผู้พัฒนา (Python Insider)
ปิดท้าย: สิ่งที่ต้องจับตา
สิ่งที่ควรติดตามต่อคือผลตรวจพื้นที่ทำงานเดิมของเราเอง โดยเฉพาะงานที่ล็อกรุ่น Python และระบบที่ยังอยู่บน 3.9 หรือ 3.10 เพราะบันทึก uv ชี้ข้อจำกัดสองจุดนี้ไว้ชัด สำหรับ Mac ให้ดูผลใช้งานแอป tkinter บน macOS 27.0 หลังรับตัวติดตั้งที่ปรับ Tk แล้ว ส่วนตัวเลขผู้เสียหายและผลกระทบในไทยยังไม่มีคำตอบจากแหล่งข่าวชุดนี้ (Astral บน GitHub, Python Insider)
Recap
- ตรวจสาย Python ที่แต่ละงานใช้อยู่ก่อนเลือกอัปเดตเป็นรุ่นรอบสอง 3.15.2, 3.14.10 หรือ 3.13.18 / 3.12.16 / 3.11.18 (สามตัวหลังเป็น source-only) (Python Insider)
- ตรวจ Python และ pip ภายในพื้นที่ทำงานเดิมทุกชุดตามขอบเขตที่ทีม Python ขอให้อัปเดต (Python Insider)
- อัปเดต pip เพื่อรับชุดที่รวม certifi 2026.10.19 สำหรับเหตุ eMudhra/emSign (Python.org)
- คนใช้ uv อัปเดตเครื่องมือ แล้วสั่ง
uv python upgradeตามบันทึกรุ่น (Astral บน GitHub) - ตรวจงานที่ล็อกเลขรุ่นย่อย เพราะไม่สลับตัว Python ให้อัตโนมัติ และต้องอัปเดต pip แยก (Astral บน GitHub)
- วางแผนย้ายออกจาก CPython 3.9 และ 3.10 ตามคำแนะนำของ Astral (Astral บน GitHub)
- ผู้ใช้ macOS 27.0 ตรวจผลใช้งาน IDLE และแอป tkinter หลังอัปเดตตัวติดตั้ง (Python Insider)
- แยกตัวเลขการเปลี่ยนแปลงของรุ่นออกจากขนาดความเสียหาย ซึ่งแหล่งข่าวยังไม่ได้ระบุ (Python Insider)