EST. 2026 — Notes from real server work SYSADMIN · SECURITY · AI · DIRECTADMIN Issue 01
THE SYSADMIN ALMANAC
Home / Security Notice / Ubuntu แก้ ruby-jwt เสี่ยงปลอมโทเคนข้ามล็อกอิน USN-9059-1
Security Notice

Ubuntu แก้ ruby-jwt เสี่ยงปลอมโทเคนข้ามล็อกอิน USN-9059-1

by Ton-Or ·11 Nov 2026·3 min read
Ubuntu แก้ ruby-jwt เสี่ยงปลอมโทเคนข้ามล็อกอิน USN-9059-1

ผู้ดูแลระบบและนักพัฒนาที่ใช้ ruby-jwt ตรวจโทเคนแบบ HMAC ควรตรวจคีย์และติดตั้งแพตช์โดยเร็ว โดยเร่งระบบที่อาจส่งคีย์ว่างเข้าตัวตรวจลายเซ็นก่อน

1-minute summary

Symptom / problem
ผู้โจมตีจากระยะไกลอาจปลอมโทเคนผ่านการตรวจลายเซ็น HMAC ได้เมื่อคีย์ตรวจสอบว่างหรือขาดหาย
Who should read
ผู้ดูแลระบบและนักพัฒนาที่ใช้ ruby-jwt ในเส้นทางยืนยันตัวตนของแอปพลิเคชัน
Fix in short
อัปเดต ruby-jwt เป็นแพ็กเกจที่แก้แล้วตามรุ่น Ubuntu และตรวจว่าแอปปฏิเสธการตรวจโทเคนเมื่อไม่มีคีย์ที่ใช้ได้
Jump to steps

พอดีเห็น Ubuntu ออกประกาศ USN-9059-1 ลงวันที่ 11 พฤศจิกายน 2026 เรื่อง ruby-jwt ซึ่งเป็นไลบรารี Ruby สำหรับจัดการ JSON Web Token หรือ JWT ปัญหาอยู่ที่การตรวจลายเซ็น HMAC ด้วยคีย์ว่าง ผู้โจมตีอาจปลอมโทเคนให้ผ่านการตรวจ แล้วเข้าถึงบริการโดยไม่ได้รับอนุญาต

USN-9059-1ประกาศ Ubuntu
HMACการตรวจลายเซ็นที่มีปัญหา
คีย์ว่างเงื่อนไขเสี่ยงปลอมโทเคน

ใครต้องทำอะไร

  • ผู้ดูแลระบบ: ถ้าบริการบน Ubuntu ใช้ ruby-jwt ตรวจโทเคน ให้ตรวจรุ่นแพ็กเกจและติดตั้งแพตช์โดยเร็ว โดยให้ความสำคัญกับบริการที่รับคำขอจากอินเทอร์เน็ตก่อน
  • นักพัฒนา: ถ้าแอปใช้ ruby-jwt ตรวจลายเซ็น HMAC ให้ตรวจว่าคีย์อาจว่างหรือหาไม่พบได้หรือไม่ และอัปเดตไลบรารีพร้อมแก้การจัดการคีย์โดยเร็ว

เกิดอะไรขึ้น

ลายเซ็น HMAC ใช้คีย์ลับตรวจว่าโทเคนมาจากผู้ที่เชื่อถือได้ ช่องโหว่ CVE-2026-45363 ทำให้ ruby-jwt ยอมตรวจลายเซ็นด้วยคีย์ว่าง ผู้โจมตีเลยอาจสร้างโทเคนให้ผ่านการตรวจของแอปที่เข้าเงื่อนไข

ปัญหาครอบคลุม HS256, HS384 และ HS512 รวมถึงบางกรณีที่ฟังก์ชันค้นหาคีย์ส่งค่าว่างกลับมา ตามประกาศผู้พัฒนา แอปที่ส่งคีย์คงที่ซึ่งไม่ว่างไม่กระทบเงื่อนไขนี้ ผู้พัฒนาควรตรวจกรณีหาไม่พบคีย์ด้วย อย่าตรวจเฉพาะการตั้งค่าตอนเริ่มแอป

ช่องโหว่นี้ยังไม่อยู่ใน KEV ฉบับ 10 พฤศจิกายน 2026 สถานะนี้ไม่ได้แปลว่าไม่มีการโจมตี

ใครโดนและรุ่นที่แก้

ตารางนี้อ้างอิงหน้า CVE ของ Ubuntu ที่เชื่อมกับ USN-9059-1 เพราะหน้า USN ฉบับเต็มเปิดไม่ได้ระหว่างตรวจบทความ

Ubuntu แพ็กเกจ รุ่นที่แก้แล้ว
26.04 LTS ruby-jwt 2.7.1-1+deb13u1build0.26.04.1
24.04 LTS ruby-jwt 2.7.1-1+deb13u1build0.24.04.1
22.04 LTS ruby-jwt 2.2.2-1ubuntu0.1~esm1
20.04 LTS ruby-jwt 2.1.0-2ubuntu0.1~esm1
18.04 LTS ruby-jwt 1.5.6-1ubuntu0.1~esm1
16.04 LTS ruby-jwt 1.0.0-3ubuntu0.1~esm1

หน้า CVE ระบุว่า Ubuntu 26.10 ไม่กระทบช่องโหว่นี้ และให้ Ubuntu priority เป็น Medium ส่วนคะแนน CVSS ต่างกัน: Ubuntu และ CVE record ให้ 9.1 Critical แต่ประกาศผู้พัฒนาให้ 7.4 High จุดที่ต่างคือ Attack Complexity เป็น Low กับ High ตามลำดับ

ถ้าติดตั้ง gem โดยตรง ผู้พัฒนาระบุรุ่นแก้เป็น 2.10.3 และ 3.2.0 ส่วนแพ็กเกจ Ubuntu ให้เทียบเลขรุ่นเต็มในตาราง เพราะมีการนำแพตช์มาใส่ในรุ่นเดิมได้

ต้องทำอะไร

สำหรับระบบที่ใช้แพ็กเกจจาก Ubuntu ให้รีเฟรชรายการแพ็กเกจ ตรวจรุ่นที่คลังเสนอ แล้วอัปเดต ruby-jwt คำสั่งต่อไปนี้ใช้กับแพ็กเกจที่ติดตั้งอยู่แล้ว จากนั้นดูรุ่นที่ติดตั้งและเทียบกับแถวของ Ubuntu รุ่นนั้น:

sudo apt update
apt-cache policy ruby-jwt
sudo apt install --only-upgrade ruby-jwt
dpkg-query -W ruby-jwt
ตรวจช่องทางแพตช์

หน้า CVE ระบุว่าแพตช์ของ Ubuntu 22.04 LTS, 20.04 LTS และ 18.04 LTS ต้องรับผ่าน Ubuntu Pro ในส่วน ESM Apps หากคลังยังไม่เสนอรุ่นที่แก้แล้ว ให้ตรวจสิทธิ์และการเปิดใช้คลังนี้ก่อนถือว่าอัปเดตสำเร็จ

ถ้าแอปติดตั้ง jwt ผ่าน Bundler ต้องอัปเดต dependency ของแอปและนำชุดที่แก้แล้วขึ้นใช้งานด้วย การอัปเดตแพ็กเกจระบบอย่างเดียวอาจไม่เปลี่ยน gem ที่แอปโหลดอยู่ หลังอัปเดตควรเริ่มโปรเซสแอปใหม่ แล้วทดสอบว่าโทเคนถูกต้องยังใช้งานได้ ขณะที่โทเคนผิดลายเซ็นและกรณีหาไม่พบคีย์ถูกปฏิเสธ

ส่วนตัวผมให้เร่งแพตช์บริการที่ใช้ HMAC และมีโอกาสรับคีย์ว่างก่อน เพราะกระทบจุดตัดสินว่าใครเข้าระบบได้ ที่มา: USN-9059-1: ruby-jwt vulnerability เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ

Want us to set this up?

Get help with server setup, configuration, migration, or troubleshooting. Save time for the work that matters.

Get a quote

Hit something like this? Stuck somewhere?

Come trade notes on the LinuxThai board

→ Continue on the board

Comments 0

No comments yet — be the first