Git ออกแพตช์แก้ไขช่องโหว่ Remote code execution ระดับ Critical

Git ได้ออกแพตช์แก้ไขช่องโหว่ด้านความปลอดภัยระดับ critical 2 รายการ ซึ่งอาจทำให้ผู้โจมตีสามารถสั่งรันโค้ดที่เป็นอันตรายได้จากระยะไกลจากช่องโหว่ heap-based buffer overflow

2 ช่องโหว่ที่ได้รับการแก้ไขคือ CVE-2022-41903 ใน Commit formatting mechanism และ CVE-2022-23521 ใน .gitattributes parser โดยได้รับการอัปเดตในช่วงวันพุธที่ผ่านมา

ส่วนช่องโหว่บน Windows ที่ส่งผลกระทบต่อ Git GUI หมายเลข CVE-2022-41953 ซึ่งเกิดจาก untrusted search path ที่อาจทำให้ผู้โจมตีที่ไม่ผ่านการพิสูจน์ตัวตนสามารถสั่งรันโค้ดที่เป็นอันตรายได้ ยังคงต้องรอแพตช์อัปเดตต่อไป แต่ผู้ใช้งานสามารถแก้ไขปัญหาชั่วคราวได้โดยการไม่ใช้ซอฟต์แวร์ Git GUI เพื่อ clone repositories หรือหลีกเลี่ยงการ cloning จาก sources ที่ไม่น่าเชื่อถือ

ช่องโหว่ที่มีผลกระทบรุนแรงที่สุดที่ค้นพบในครั้งนี้คือสามารถทำให้ผู้โจมตีสามารถ trigger a heap-based memory ระหว่างการ clone หรือ pull ข้อมูล ซึ่งอาจส่งผลให้เกิดการสั่งรันโค้ดที่เป็นอันตรายในระหว่างนั้นได้ และอีกกรณีหนึ่งคือการสั่งรันโค้ดระหว่างการ archive ซึ่งโดยปกติมักจะถูกดำเนินการโดย Git forges

นอกจากนี้ช่องโหว่อาจนำไปสู่ผลกระทบในด้านอื่น ๆ เช่น denial-of-service , out-of-bound reads หรือ badly handled ในกรณีมี input ขนาดใหญ่

คำแนะนำ

ปิดใช้งาน 'git archive' ใน repositories ที่ไม่น่าเชื่อถือ หรือหลีกเลี่ยงการเรียกใช้คำสั่งบน repos ที่ไม่น่าเชื่อถือ
หาก 'git archive' ถูกเข้าถึงได้ผ่าน 'git daemon' ให้ปิดการใช้งานเมื่อทำงานกับ repositories ที่ไม่น่าเชื่อถือโดยเรียกใช้คำสั่ง 'git config --global daemon.

แจ้งเตือนช่องโหว่ใน Git สร้าง Repo อันตรายแอบรันโค้ดตอนใช้คำสั่ง Clone ได้

นักพัฒนาซอฟต์แวร์ Johannes Schindelin และ Matheus Tavares ได้มีการเปิดเผยและออกแพตช์ความปลอดภัยให้กับซอฟต์แวร์ Git หลังจากตรวจพบช่องโหว่ CVE-2021-21300 ซึ่งทำให้ผู้โจมตีสามารถลักลอบรันคำสั่งที่เป็นอันตรายได้โดยอาศัยการสร้าง Repo ที่มีลักษณะพิเศษบางอย่าง โดยคำสั่งอันตรายดังกล่าวจะทำงานเมื่อเหยื่อเรียกใช้คำสั่ง git clone กับ Repo ดังกล่าว

ช่องโหว่นี้อยู่ในส่วนการทำงานของ Git ที่มีต่อไฟล์ในลักษณะของ symbolic link ในระบบไฟล์แบบ Case-insensitive เช่น NTFS, HFS+ หรือ APFS ภายใต้เงื่อนไขว่าจะต้องมีการตั้งค่าเพื่อใช้งานฟิลเตอร์อย่าง clean หรือ smudge ก่อน เงื่อนไขดังกล่าวนี้ถูกกำหนดไว้ในไคลเอนต์อย่าง Git for Windows ที่มีการใช้ Git LFS อยู่แล้ว ส่งผลซอฟต์แวร์อย่าง Git for Windows ได้รับผลกระทบโดยอัตโนมัติ

อ้างอิงจากคำแนะนำของ GitHub แนวทางในการลดความเสี่ยงที่ดีที่สุดจากช่องโหว่นี้คือการอัปเดต Git ให้เป็นรุ่นล่าสุด ในกรณีที่ไม่สามารถอัปเดตได้ แนวทางในการลดผลกระทบอีกลักษณะหนึ่งคือการปิดการรองรับ symbolic link, ปิดการใช้งานฟิลเตอร์ รวมไปถึงการหลีกเลี่ยงการ Clone โครงการที่ไม่น่าเชื่อถือ

ที่มา: github-blog, github, openwall

A hacker is wiping Git repositories and asking for a ransom

แฮกเกอร์เรียกค่าไถ่แลกกับการไม่เปิด git repository เป็นสาธารณะ หากผู้ที่ตกเป็นเหยื่อไม่ชำระเงินใน 10 วัน

แฮกเกอร์อ้างว่าซอร์สโค้ดทั้งหมดได้รับการดาวน์โหลดและเก็บไว้ในเซิร์ฟเวอร์ตัวใดตัวหนึ่งแล้วให้เหยื่อจ่ายเงินค่าไถ่ 10 วัน ชำระเงินเป็น 0.1 Bitcoin (~ $ 570) มิฉะนั้นพวกเขาจะทำให้ซอร์สโค้ดเป็นสาธารณะ การโจมตีครั้งนี้เกิดกับหลายๆ บริการโฮสติ้ง Git ทั้ง GitHub Bitbucket และ GitLab และยังไม่ชัดเจนว่าเกิดขึ้นได้อย่างไร
โดยแฮกเกอร์จะลบซอร์สโค้ดทั้งหมดและ commit ล่าสุดจากบริการโฮสติ้ง Git ของเหยื่อ

จากการสำรวจของ GitHub พบว่า git repository บน GitHub อย่างน้อย 392 แห่งได้ถูกเรียกค่าไถ่แล้ว และจากข้อมูลของ BitcoinAbuse.

Git Project Patches Remote Code Execution Vulnerability in Git

Git Project ออกประกาศเกี่ยวกับช่องโหว่ remote code execution ใน Git command line client, Git Desktop และ Atom ซึ่งส่งผลกระทบระดับ critical ทำให้ Repositories อันตรายสามารถรันคำสั่งจากระยะไกลมายังเครื่องที่มีช่องโหว่ได้

ตามปกติแล้วเมื่อมีการใช้คำสั่ง clone จาก repository ด้วยคำสั่ง ‘git clone –recurse-submodules argument’ ตัว Git จะค้นหา URL ภายในไฟล์ .gitmodules และส่งค่า URL ต่อไปให้โปรเซสย่อยของ git clone

แต่เนื่องจากช่องโหว่ดังกล่าวที่ได้รับรหัสคือ CVE-2018-17456 หากผู้โจมตีสร้าง repository ที่เป็นอันตรายโดยสร้างไฟล์ที่ชื่อ .gitmodules โดยภายในมี URL ที่เริ่มด้วยเครื่องหมายยัติภาค "-" ตัวโปรเซสย่อยจะแปล URL เป็น Option ซึ่งทำให้ผู้โจมตีสามารถ Remote Code Execution ได้ ช่องโหว่นี้มีความคล้ายคลึงกับช่องโหว่ injection (CVE-2017-1000117) ซึ่งได้มีประกาศออกมาก่อนหน้านี้

เช่น ถ้าผู้โจมตีระบุ url ภายในไฟล์ .gitmodules เป็น url = ssh://-oProxyCommand=touch VULNERABLE/[git@github.

Announcing the May 2018 Git Security Vulnerability

แจ้งเตือนช่องโหว่ใน Git เสี่ยงโดนรันโค้ดที่เป็นอันตรายได้
ซอฟต์แวร์ทำ version control “Git” ถูกระบุถึงการมีอยู่ของสองช่องโหว่ร้ายแรงเมื่อวานนี้ โดยผลจากการโจมตีช่องโหว่ดังกล่าวนั้นส่งผลให้เมื่อผู้ใช้งานทำการเรียกใช้ฟังก์ชัน clone จาก git ในรุ่นที่มีช่องโหว่แล้วไปยัง repository ที่ถูกสร้างขึ้นเพื่อโจมตีช่องโหว่แล้ว อาจถูกรันโค้ดที่เป็นอันตรายในระบบของผู้ใช้งานได้

ช่องโหว่แรกคือช่องโหว่ CVE-2018-11233 เป็นช่องโหว่ที่เกิดจากการอ่านข้อมูลที่เกินขอบเขตของหน่วยความจำเมื่อทำการตรวจสอบพาธในระบบไฟล์แบบ NTFS ส่วนช่องโหว่ที่สองคือช่องโหว่ CVE-2018-11235 นั้นเป็นช่องโหว่ remote code execution ซึ่งเกิดขึ้นเมื่อมีผู้ประสงค์ร้ายทำการสร้างไฟล์ .gitmodules ซึ่งเมื่อถูกโคลนด้วยคำสั่ง git clone –recurse-submodules แล้ว อาจส่งผลให้เกิดการทำ directory traversal และการรันโค้ดที่เป็นอันตรายได้

CVE-2018-11233 และ CVE-2018-11235 ส่งผลกระทบ Git ก่อนรุ่น 2.13.7, 2.14.x ก่อนรุ่น 2.14.4, 2.15.x ก่อนรุ่น 2.15.2, 2.16.x ก่อนรุ่น 2.16.4, และ 2.17.x ก่อนรุ่น 2.17.1
สองช่องโหว่ที่ถูกค้นพบนั้นได้ถูกแก้ไขแล้วใน Git รุ่น 2.17.1 ผู้ใช้งานสามารถทำการอัปเดตโปรแกรมเพื่อรับแพชต์สำหรับช่องโหว่ได้ทันที ในขณะเดียวกันในฝั่งของผู้ให้บริการอย่าง GitHub และ Microsoft ก็ได้มีการเพิ่มฟีเจอร์ในการตรวจสอบหาโค้ดสำหรับโจมตีที่อยู่ใน repository เพื่อช่วยป้องกันแล้ว

Recommendation
สองช่องโหว่ที่ถูกค้นพบนั้นได้ถูกแก้ไขแล้วใน Git รุ่น 2.17.1 ผู้ใช้งานสามารถทำการอัปเดตโปรแกรมเพื่อรับแพชต์สำหรับช่องโหว่ได้ทันที ในขณะเดียวกันในฝั่งของผู้ให้บริการอย่าง GitHub และ Microsoft ก็ได้มีการเพิ่มฟีเจอร์ในการตรวจสอบหาโค้ดสำหรับโจมตีที่อยู่ใน repository เพื่อช่วยป้องกันแล้ว

Affected Platform
Git ก่อนรุ่น 2.13.7, 2.14.x ก่อนรุ่น 2.14.4, 2.15.x ก่อนรุ่น 2.15.2, 2.16.x ก่อนรุ่น 2.16.4, และ 2.17.x ก่อนรุ่น 2.17.1

ที่มา : Microsoft