back to top
Saturday, May 17, 2025

แก้ไขช่องโหว่ของโค้ดที่เสี่ยงต่อระบบด้วย Snyk open source

Share

เกริ่นก่อนเลยว่าผมเป็น Dev คนนึงที่ Focus เกี่ยวกับการพัฒนา Feature เพื่อ Delivery ให้ลูกค้ารัว ๆ เร็ว ๆ ตามที่ลูกค้าขอ แต่พูดตามตรงว่าไม่ค่อยได้ให้ความสำคัญกับความปลอดภัยของ Library ที่นำมาใช้ หรือความปลอดภัยด้านการเข้ารหัสต่างๆเท่าที่ควร

ก็จะดูแค่เพียงว่า Lib เหล่านั้น Popular ไหม, Star เยอะไหม, Fit กับระบบไหม แล้วก็นำมา Implement เลย ซึ่งในบางครั้งอาจทำให้เกิดช่องโหว่ต่างๆได้อย่างเช่น DDoS, Heap Overflow ใน Browser, บลาๆ ซึ่งวันก่อนนึกขึ้นได้ ผมก็เลยพยายามหาข้อมูลเพิ่มเติมเพื่อนำ Tools มาช่วย Manage เรื่องเหล่านี้ครับSnyk open source

พระเอกของเราในวันนี้ก็คือ Snyk ครับ

เป็นแพลตฟอร์มที่ช่วยให้สามารถสแกน / จัดลำดับความสำคัญ / แก้ไขช่องโหว่ของ Code / ตรวจสอบ Library + รวมไปจนถึง LLM Source อย่าง OpenAI และ Gemini / ตรวจ Container Image ไปจนถึงการตั้งค่า Config Infrastructure อย่างพวก Kubernetes ซึ่ง Snyk Platform จะเน้นเรื่องความปลอดภัยเป็นหลัก และสามารถกำจัดช่องโหว่ต่างๆที่เสี่ยงต่อระบบให้เราได้

ภาษา Programming ที่ Snyk Support ก็จะเป็น JavaScript/TypeScript, Java, Python, C/C++, C# (Limited support), Go (Limited support), ฯลฯ ซึ่งความหมายของ Limited support จะหมายถึงฟังก์ชันการของตรวจสอบนั้นจะไม่สามารถทำได้ครบทุกเคสหรือทุกเงื่อนไข แต่จากที่ลองมาค่อนข้าง Suggest ได้ดีพอสมควรในภาษา GoLang มีความรวดเร็วแม่นยำ และมี Suggest Solution ในการแก้ไข Case นั้นๆให้เลย สะดวกต่อการตรวจสอบมากSnyk open source

Snyk มีวิธีการใช้งานได้หลายวิธี

  • ผ่าน CLI เป็นเครื่องมือที่ใช้ตรวจสอบความปลอดภัยง่ายๆที่สามารถรันได้บนเครื่อง Local ของตัวเอง
  • ผ่าน Web Dashboard ของ Snyk จะมีการ Sync Git Repository เพื่อสแกนและวิเคราะห์โค้ดแบบ Realtime
  • ผ่าน IDEs Extension อย่าง VSCode, GetBrain, Eclipse เป็น Extension สำหรับการวิเคราะห์โค้ดที่กำลังพัฒนาอยู่ หรือที่เรียกว่า Development State
  • ผ่าน Snyk REST API (Enterprise Plans) เป็น API Provider ที่ทำให้เราสามารถยิง Scan แบบ Automate Process ได้

ซึ่งในบทความนี้… ผมจะมาอธิบายในส่วนของ CLI เป็นหลักครับ เนื่องจาก Dev สามารถ Install และตรวจสอบได้ด้วยตนเองก่อน Merge และใช้งานง่าย, ติดตั้งง่ายเพียงติดตั้งผ่าน Command Line (ในส่วนนี้สามารถดูเพิ่มเติมได้ใน Snyk Docs เลยครับ)Snyk open source

เริ่ม !

ตัวอย่างต่อจากนี้จะเป็นการ Scan หา CVE ของโปรเจคทดลองที่ผมสร้างขึ้นมาเองครับ ซึ่งก่อนอื่นต้อง Authen กันก่อน โดยคำสั่ง `snyk auth`

ส่วนอันนี้จะเป็นตัวอย่าง Golang ที่เราจะทำการ Run Test ด้วย Snyk กันครับ

จะมี Code 2 ชุดครับและไฟล์ Declare Variable Key Sensitive Data อย่าง Password ไว้ครับ
สำหรับ Code ชุดนี้เราจะทำการทดสอบ Vulnerability และ Code Test

ชุดแรก จะเป็นการ Parse HTML และ Cors AllowAll ซึ่ง 2 ตัวนี้ผมได้ทำการลง Version ที่พบ CVE เอาไว้ครับ
ชุดที่สอง จะเป็นการ Encrypt password ด้วย md5 Algorithm ครับ ซึ่ง Snyk จะเตือนเราและแนะนำให้เราใช้ Algorithm ที่มีความ Secure เช่น AES Hash แทนครับ

  1. เริ่มด้วยคำสั่ง `snyk test` เพื่อหา Vulnerability กันครับ…

จะเห็นได้ว่ามีการตรวจพบ CVE ของ Library ที่ใช้ใน Code ของเราเช่น DDoS Priority ทั้ง Medium และ High

2. ถัดมาตามด้วยคำสั่ง `snyk code test` เพื่อทำ Code Test หาจุดบกพร่องที่เรา Implement บน Local กันครับ เช่น การเข้ารหัสด้วย md5 ดังตัวอย่าง

จะเห็นได้ว่า Snyk แนะนำให้ใช้เป็นการเข้ารหัสแบบ AES หรือ Hash อื่นๆแทน เพื่อความปลอดภัยที่สูงขึ้นของข้อมูล (High) และการไม่แนะนำ Hardcode ของข้อมูล Test (ซึ่งในส่วน Hardcode สำหรับ Test นี้ผมคิดว่าโอเค ไม่น่าติดอะไรเพราะเป็นข้อมูลสำหรับการ Test)

…แถมครับ… การใช้งาน Web Dashboard เพื่อ Sync Git & Create Pull Request

  1. เข้าไปที่ https://app.snyk.io และ Login ด้วย Github หรือ Google ให้เรียบร้อยครับ
  2. ทำการ Add Project ด้วย Github หรือ GitLab หรือ ฯลฯ ที่เมนูขวาบน
  1. เมื่อเสร็จเรียบร้อยให้เราเลือก Project ที่เราต้องการ Scan ครับ -> ในที่นี้ผมเลือกเป็น Project ReactJS ทดลองของผมเช่นเคยครับ
  1. เมื่อ Add สำเร็จแล้ว ตัว Snyk จะทำการ Run test เอง เพื่อหา Vulnerability ซึ่งเราสามารถเข้าไปดู CVE ที่โดนได้เลย เลือกมาสักอัน เอาเป็น Authentication Bypass
  1. คลิก Partially fix this Vulnerability เพื่อให้ Snyk หา Issue และสร้าง Pull Request สำหรับแก้ไขให้เราใน PR ได้เลย
  1. Checked issue ที่ Snyk Suggest ให้ และ Scroll ไปล่างสุดแล้วคลิก Open a Fix PR

สรุปในสรุปจะเห็นได้ว่า Snyk มีส่วนช่วยในการเตือนเรื่องความปลอดภัยในการเขียน Code ของเราได้ดีพอสมควร และมีการเสนอวิธีแก้ปัญหาให้เราด้วย หากมีข้อติชมหรือเสนอแนะสามารถติดต่อเสนอแนะได้นะครับ 🙏🏻🎉😍ครับ

Tanachot Samuntathakul
Tanachot Samuntathakul
Full Stack Developer ของเรามีประสบการณ์กว่า 8 ปีในการพัฒนาเว็บแอปพลิเคชันแบบครบวงจร ทั้งในส่วนของ Frontend และ Backend โดยเชี่ยวชาญเทคโนโลยีที่ทันสมัย เช่น JavaScript, React, Node.js และฐานข้อมูลต่างๆ เพื่อสร้างโซลูชันที่มีประสิทธิภาพและตอบโจทย์ความต้องการของธุรกิจได้อย่างลงตัว

Read more

คุณน่าจะชอบบทความนี้