เครื่องมือตรวจสอบความปลอดภัยสำหรับนักพัฒนาระบบ

Datafarm
4 min readDec 4, 2024

สวัสดีครับ วันนี้ผมมีตัวช่วยดี ๆ สำหรับนักพัฒนาที่ช่วยดูแลโปรเจกต์ให้มีความปลอภัยจากช่องโหว่ ที่ช่วยเพิ่มประสิทธิภาพ Codebase แถมใช้งานง่าย ไม่เสียเวลานาน ทำให้เราเหลือเวลาไปพัฒนาด้านอื่นเพิ่มมากขึ้น ถือเป็นของดีที่เหล่านักพัฒนาทั่วโลกให้ความสนใจกันอย่างมาก ซึ่งผมจะมาให้ความรู้เบื้องต้นเกี่ยวกับเครื่องมือ Security Scan จะมีอะไรบ้าง ตอบโจทย์กับผู้ใช้งานยังไง และทำไมการสแกนความปลอดภัยนั้นถึงสำคัญ น่าสนใจแล้วใช่ไหมละครับ หากพร้อมแล้วก็จัดไปพี่ชายไนเจล…

https://greatasp.co.uk/wp-content/uploads/2024/08/keyword-for-ranking-featrued-image.jpg

Security Scan คืออะไร

ก่อนอื่นเรามาทำความรู้จักกันก่อนว่า Security Scan คืออะไร เอาสั้น ๆ ง่าย ๆ ก็คือ “วิธีการตรวจหาช่องโหว่หรือจุดอ่อนในระบบที่อาจถูกโจมตีจากผู้ไม่หวังดีได้” ซึ่งเป็นส่วนหนึ่งของกลยุทธ์ด้านความปลอดภัยในไซเบอร์ที่ช่วยป้องกันการโจมตีต่าง ๆ โดยการระบุช่องโหว่และแก้ไขปัญหาก่อนที่จะมีการโจมตีนั้นเองครับ

เครื่องมือที่ช่วยในการตรวจสอบความปลอดภัยสำหรับนักพัฒนามีหลายตัวที่สามารถใช้งานได้เพื่อเพิ่มความปลอดภัยให้กับโค้ดและโปรเจกต์ต่าง ๆ ได้

ต่อไปนี้คือลิสต์ของเครื่องมือที่ช่วยเรื่องความปลอดภัย

1. Snyk

เป็นตัวช่วยให้นักพัฒนาและทีม DevOps สามารถรักษาความปลอดภัยของโค้ดและแอปพลิเคชันได้อย่างมีประสิทธิภาพ โดยเครื่องมือนี้เน้นการใช้งานง่ายและผสานรวมเข้ากับกระบวนการพัฒนาซอฟต์แวร์ได้อย่างราบรื่น

https://130e178e8f8ba617604b-8aedd782b7d22cfe0d1146da69a52436.ssl.cf1.rackcdn.com/snyk-raises-1965m-weeks-after-laying-off-14-workforce-showcase_image-8-a-20693.jpg

ความสามารถหลัก

  1. ตรวจจับช่องโหว่ในไลบรารีโอเพ่นซอร์ส (Open Source Vulnerabilities) ตรวจสอบไลบรารีและแพ็คเกจที่ใช้ในโครงการ (เช่น npm, Maven, pip) และมาพร้อมกับคำแนะนำในการแก้ไข
  2. ตรวจสอบโค้ดต้นฉบับ (Snyk Code) เพื่อหาจุดบกพร่องแนวทางที่อาจนำไปสู่ช่องโหว่ เช่น SQL Injection, XSS หรือปัญหาด้านการจัดการข้อมูลส่วนตัว
  3. จัดการช่องโหว่ใน Container และ Infrastructure as Code (IaC) วิเคราะห์คอนเทนเนอร์ (เช่น Docker images) เพื่อค้นหาช่องโหว่ที่เกิดจากระบบฐาน (Base Image)

วิธีการใช้งาน

1. ตรวจสอบโปรเจกต์ใน Node.js

snyk test

คำสั่งนี้จะตรวจสอบแพ็คเกจที่ใช้และแสดงรายงานช่องโหว่

2. แก้ไขช่องโหว่โดยอัตโนมัติ

snyk fix

Snyk จะพยายามอัปเดตไลบรารีให้เป็นเวอร์ชันที่ปลอดภัย

3. การผสานเข้ากับ GitHub

ตั้งค่าให้ Snyk สแกนโครงการเมื่อมีการ Pull Request เพื่อป้องกันช่องโหว่ก่อนโค้ดจะถูก Merge

Snyk เป็นเครื่องมือที่เหมาะสำหรับทีมที่ต้องการรักษาความปลอดภัยของแอปพลิเคชันตั้งแต่ขั้นตอนการพัฒนา และยังช่วยลดภาระของทีม DevSecOps ในการจัดการช่องโหว่ได้อีกด้วย

2. OWASP Dependency-Check

เป็นเครื่องมือตรวจสอบว่าเราใช้ dependencies ที่มีช่องโหว่ที่รู้แล้ว (Common Vulnerabilities and Exposures: CVE) หรือไม่ เมื่อตรวจสอบแล้วจะทำการสร้างรายงานให้เราดูต่อไป

https://miro.medium.com/v2/resize:fit:2400/format:webp/1*_QjuQqVy5TeUw_61_wNL1A.jpeg

ความสามารถหลัก

  1. ตรวจจับช่องโหว่ในไลบรารีบุคคลที่สาม ตรวจสอบช่องโหว่โดยอ้างอิงจากฐานข้อมูล CVE และ NVD
  2. รองรับหลายแพลตฟอร์มและภาษาโปรแกรม เช่น Java (Maven, Gradle), .NET, Python, Node.js, Ruby, PHP และอื่น ๆ
  3. มีรูปแบบรายงานหลายแบบ เช่น HTML, JSON, XML เพื่อตอบสนองความต้องการของทีมพัฒนาและฝ่ายความปลอดภัย

วิธีการใช้งาน

1. ติดตั้ง dependency-check โดยสามารถติดตั้งผ่าน Homebrew ด้วยคำสั่ง

brew install dependency-check

2. ทำการ scan ด้วยคำสั่ง

dependency-check — enableExperimental -s . -o .

— enableExperimental เป็นการเรียกใช้ features ของ Dependency-Check ยังอยู่ระหว่างการทดสอบ ซึ่ง Coacoapods และ Swift Package Manager ยังเป็น experimental อยู่

-s, — scan <path> คือการบอกว่าให้ทำการตรวจสอบที่ path นี้

-o, — out <path> คือให้ออกรายงานที่ path นี้

3. ดูรายงาน: เปิดไฟล์ HTML ที่ได้เพื่อตรวจสอบรายละเอียดเกี่ยวกับช่องโหว่

ข้อดีอย่างหนึ่งเลย ของ OWASP Dependency-Check คือ โอเพ่นซอร์ส: ไม่มีค่าใช้จ่าย และสามารถปรับแต่งได้ตามความต้องการ

3. SonarQube

สามารถวิเคราะห์โค้ดต้นฉบับ (Source Code) เพื่อค้นหาข้อผิดพลาด, ช่องโหว่, และปัญหาด้านคุณภาพที่อาจส่งผลกระทบต่อความปลอดภัยและความเสถียรของซอฟต์แวร์

https://ninenote.net/static/28e69d89389d6681edadf6a71370a4e4/9de9b/sonarqube-logo.avif

ความสามารถหลัก

  1. วิเคราะห์คุณภาพโค้ด ตรวจจับปัญหาในโค้ด เช่น โค้ดที่ซับซ้อนเกินไป, โค้ดที่ซ้ำซ้อน และการตั้งชื่อที่ไม่เหมาะสมพร้อมคำแนะนำเพื่อปรับปรุงคุณภาพโค้ดให้ได้มาตรฐาน
  2. วิเคราะห์ความปลอดภัยของโค้ดค้นหาช่องโหว่ด้านความปลอดภัย เช่น SQL Injection, Cross-Site Scripting (XSS), และปัญหาด้านการจัดการข้อมูลที่สำคัญ
  3. รองรับกว่า 30 ภาษา เช่น Java, JavaScript, Python, C#, C/C++, PHP, Go, Kotlin, และอื่น ๆ
  4. สามารถเชื่อมต่อกับระบบ CI/CD เช่น Jenkins, GitHub Actions, Azure DevOps, GitLab เพื่อวิเคราะห์โค้ดอัตโนมัติในทุกกระบวนการพัฒนา
  5. กำหนด Quality Gate หรือสามารถตั้งค่ากฎเพื่อกำหนดว่าโค้ดที่พัฒนาต้องผ่านเกณฑ์ขั้นต่ำด้านคุณภาพและความปลอดภัยก่อนจะถูก Merge หรือ Deploy

วิธีการใช้งาน

1. ติดตั้ง SonarQube Server

https://www.npmjs.com/package/sonarqube-scanner

$ npm install sonarqube-scanner — dev
$ npm install -g gulp

* ถ้าใครยังไม่มี gulp ให้ทำการติดตั้งด้วย เพราะเราใช้ในการสั่งให้ sonarqube-scanner ทำงาน

2. ติดตั้ง Sonar Scanner

ใช้ Sonar Scanner ในการสแกนโค้ด โดยตั้งค่าไฟล์ sonar-project.properties ตัวอย่าง

sonar.projectKey=my_project
sonar.sources=./src
sonar.host.url=http://localhost:9000
sonar.login=my_token

3. รันการสแกน Sonar-scanner

ผลลัพธ์จะถูกส่งไปยัง SonarQube Server และแสดงใน Dashboard

4. เพิ่มขั้นตอนการวิเคราะห์โค้ดในกระบวนการ CI/CD เพื่อตรวจสอบทุกครั้งที่มีการ Commit หรือ Deploy

จุดเด่นของ SonarQube

  1. ตรวจสอบได้หลายมิติ ครอบคลุมทั้งคุณภาพโค้ด, ความปลอดภัย, และความสามารถในการบำรุงรักษา
  2. แสดงผลในรูปแบบ Dashboard ที่เข้าใจง่าย
  3. สามารถตั้งค่าเกณฑ์และกฎการวิเคราะห์ได้ตามความต้องการ

4. Checkmarx

เป็นโปรแกรมตรวจสอบ Source Code ก่อนการ Compile หรือเรียกว่า SAST (Static Application Security Testing) ใช้เพื่อค้นหาข้อผิดพลาด หรือสแกนความเป็นไปได้ที่อาจเกิดช่องโหว่พร้อมทั้งให้คำแนะนำและจุดที่ต้องแก้ไข Code เพื่อให้ Application สามารถทำงานได้ถูกต้องและเกิดประสิทธิภาพสูงสุด

https://arctica.co.th/images/product/product1.png

ความสามารถหลัก

  1. การวิเคราะห์โค้ดแบบสแตติก (SAST) คือ ตรวจสอบโค้ดต้นฉบับเพื่อค้นหาช่องโหว่ เช่น SQL Injection, Cross-Site Scripting (XSS), Buffer Overflow, และปัญหาด้านการจัดการข้อมูล และวิเคราะห์การทำงานของโค้ดเชิงลึก (Data Flow Analysis) เพื่อหาจุดที่อาจเป็นช่องโหว่
  2. การวิเคราะห์ความปลอดภัยในโค้ดโอเพ่นซอร์ส (Software Composition Analysis — SCA) เป็นการตรวจสอบไลบรารีและแพ็กเกจโอเพ่นซอร์สที่ใช้ในโครงการเพื่อค้นหาช่องโหว่ที่รู้จัก (เช่น CVE) และแนะนำการแก้ไข เช่น การอัปเดตเวอร์ชัน
  3. การวิเคราะห์โค้ดแบบ Dynamic (DAST) เป็นการทดสอบช่องโหว่ในแอปพลิเคชันที่ทำงานอยู่ เช่น การตรวจสอบหน้าเว็บและ API เพื่อระบุจุดอ่อนที่อาจถูกโจมตี
  4. การจัดการความเสี่ยงและการรายงาน สามารถให้ข้อมูลเกี่ยวกับความรุนแรงของช่องโหว่ (Critical, High, Medium, Low) พร้อมแสดงคำแนะนำในการแก้ไขปัญหา และลิงก์ไปยังเอกสารและตัวอย่างโค้ด

วิธีการใช้งาน

1. ผสานเข้ากับ CI/CD Pipeline เพิ่มขั้นตอนการสแกนความปลอดภัยใน Jenkins Pipeline:

stage(‘Checkmarx Scan’) {
steps {
script {
// Run Checkmarx scan
checkmarxScan()
}
}
}

2. วิเคราะห์โค้ดใน IDE ใช้ปลั๊กอิน Checkmarx ใน IDE เพื่อสแกนโค้ดขณะเขียนและแก้ไขปัญหาได้ทันที

3. การจัดการรายงาน ดาวน์โหลดรายงานผลสแกนในรูปแบบ PDF, HTML, หรือ JSON สำหรับการนำเสนอหรือบันทึกข้อมูล

ข้อดีของ Checkmarx

คือครอบคลุมการวิเคราะห์หลายรูปแบบ: ทั้ง SAST, SCA, และ DAST เหมาะสำหรับองค์กรที่ต้องการรักษาความปลอดภัยในแอปพลิเคชันตั้งแต่ขั้นตอนการพัฒนา

5. GitHub Advanced Security

เป็นชุดฟีเจอร์ขั้นสูงที่ GitHub พัฒนาขึ้นเพื่อช่วยให้นักพัฒนาและองค์กรสามารถตรวจสอบและป้องกันช่องโหว่ด้านความปลอดภัยในซอฟต์แวร์ของตนได้ตั้งแต่ขั้นตอนการพัฒนา โดยรวมเอาเทคโนโลยีที่เน้นการรักษาความปลอดภัยเข้ากับเวิร์กโฟลว์ของ GitHub ได้อย่างราบรื่น

https://techviral.net/wp-content/uploads/2024/03/GitHub-Launches-AI-Powered-Code-Scanning-Autofix-1-1.png

ความสามารถหลัก

1. Code Scanning

1.1 ใช้เทคโนโลยี (SAST) เพื่อตรวจสอบโค้ดที่พัฒนาในรีโพสิทอรี

1.2 รองรับการตั้งค่าให้สแกนโดยอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลงในโค้ด

1.3 ใช้ CodeQL ซึ่งเป็นเอนจินวิเคราะห์โค้ดขั้นสูงของ GitHub เพื่อตรวจหาช่องโหว่ด้านความปลอดภัย เช่น SQL Injection, Cross-Site Scripting (XSS), และปัญหาด้านความปลอดภัยอื่น ๆ

2. Secret Scanning:

2.1 ตรวจจับคีย์ลับหรือข้อมูลสำ คัญ (Secrets) เช่น API Keys, Private Keys, และ Credentials ที่อาจถูก Commit โดยไม่ได้ตั้งใจ

2.2 รองรับการสแกนทั้งในโค้ดปัจจุบันและประวัติการเปลี่ยนแปลง (Git History)

2.3 รองรับการแจ้งเตือน (Alert) เมื่อพบข้อมูลสำคัญ และสามารถผสานกับเครื่องมืออื่นเพื่อจัดการปัญหาได้

3. Dependency Review เป็นการวิเคราะห์การเปลี่ยนแปลงของ Dependencies (แพ็กเกจหรือไลบรารีที่ใช้งาน) ใน Pull Request

4. Dependabot Alerts เป็นแจ้งเตือนช่องโหว่ในไลบรารีโอเพ่นซอร์สที่โปรเจกต์ใช้งาน โดยอ้างอิงฐานข้อมูล CVE

5. Security Insights Dashboard แสดงสถานะความปลอดภัยของโค้ดและ Dependencies ในโปรเจกต์

6. Integration กับ Workflow นั้นรองรับการผสานรวมกับ GitHub Actions เแล้ว สามารถผสานกับเครื่องมือภายนอก เช่น Jira, Slack หรือ SIEM \

วิธีการใช้งาน

1. เปิดใช้งานฟีเจอร์ในรีโพสิทอรี

1.1 ต้องเปิดใช้งานในรีโพสิทอรีที่ต้องการใช้ โดยผู้ดูแลระบบสามารถกำหนดค่าผ่าน GitHub Settings

1.2 ฟีเจอร์ Dependency Review และ Secret Scanning สามารถใช้งานได้บนรีโพสิทอรีส่วนตัวและสาธารณะ

2. ตั้งค่า Code Scanning:

เพิ่มไฟล์ workflow ใน .github/workflows/ สำหรับการรัน CodeQL หรือเครื่องมืออื่น

name: “CodeQL Analysis”
on:
push:
branches:
- main
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: github/codeql-action/init@v2
- run: ./build.sh
- uses: github/codeql-action/analyze@v2

3. จัดการการแจ้งเตือน

3.1.ใช้ Security tab ใน GitHub เพื่อดูรายงานช่องโหว่และจัดการแจ้งเตือน

3.2 สามารถสร้าง Workflow เพื่อแจ้งเตือนไปยัง Slack หรืออีเมลเมื่อพบปัญหาสำคัญ

4. Review และแก้ไขปัญหา

4.1 ตรวจสอบการแจ้งเตือนจาก Secret Scanning และ Dependabot

4.2 ใช้ข้อมูลจาก CodeQL เพื่อปรับปรุงโค้ดและลดความเสี่ยงด้านความปลอดภัย

GitHub Advanced Security ทำงานในเวิร์กโฟลว์ของ GitHub อย่างไร้รอยต่อ ไม่ต้องใช้เครื่องมือภายนอกเพิ่มเติม ตรวจสอบทั้งโค้ด, Dependencies, และข้อมูลสำคัญที่อาจหลุดรอด

การใช้เครื่องมือเหล่านี้สามารถช่วยเพิ่มความปลอดภัยให้กับโค้ดและโปรเจกต์ของคุณโดยการตรวจสอบ ช่องโหว่ที่อาจเกิดขึ้นและช่วยให้คุณสามารถแก้ไขปัญหาก่อนที่จะถูกโจมตี

--

--

No responses yet