อบรม Secure Coding พร้อมกับ Gemini 1.5 Pro
วันนี้ต้องอบรมทั้งวัน เห็นตารางแล้วอึ้งเลย งั้นเรามาลองเล่นกันดีกว่า
model: Geminiv 1.5 Pro lasted
tools: Google AI studio — create new prompt
ลองใส่ prompt ตามภาพ แต่จะไม่มีการปรับปรุง prompt เพื่อเปรียบเทียบผลการปรับจูน จากนั้นใส่ 7 pdf file จะได้ผลลัพธ์ที่ดีที่สุดออกมาแบบไหน
ผ่านไป 3 ชั่วโมง ปัญหาที่พบ คือ “You’ve reached your rate limit. Please try again later.” จึงถึงเวลาต้องหยุด
ผลลัพธ์ที่ดีที่สุดตอนนี้เกิดจาก
temperature: 1
top_p: 0.95
safety settings: low all
(อาจจะเป็นเพราะโมเดล lasted จึงไม่สามารถปรับ setting ได้เยอะ ถ้าย้อนเวอชั่นไป Geminiv 1.5 Pro — 001 จะปรับได้มากกว่านี้ เช่น top_k, max_token)
เอาไปเทียบกับ Gemini Advanced ที่จ่ายเงิน ตัวนั้นยังใช้ง่าย ไว ไม่มีลิมิต
และผลลัพธ์ที่ดีที่สุดตอนนี้เกิดจากการโยน pdf ไปพร้อมกัน 7 ไฟล์
ซึ่งช่วงหลังๆ โยนจูนทีละไฟล์ดีกว่าเพราะติดลิมิต TT
สรุป
ใน create new prompt เหมาะกับการทดลองปรับแต่งแบบไวๆ เวลามีไอเดียในการจะนำ model ai มาประยุกต์ใช้กันงานใดๆ ใช้งานง่าย สะดวกกว่า coding
แต่มีข้อจำกัดคือมีแต่ gemini model ตัวผลลัพธ์ที่ออกมาต้องใช้เวลาและความเข้าใจในการปรับจูน ถ้าอยากได้ความหลากหลายไปใช้พวก vertex ai ปรับจูนดีกว่า
เราสามารถกดปุ่ม get code เพื่อใช้สิ่งที่เราปรับแต่งใน console แปลงเป็น code และนำไปใช้งานต่อไม่ว่าจะทำเป็น api หรือ app
ผลลัพธ์
01_introduction_to_mobile_security_v1.0.pdf
เอกสารนี้เป็นการแนะนำเบื้องต้นเกี่ยวกับความปลอดภัยของแอปพลิเคชันบนมือถือ โดยเริ่มจากการอธิบายถึงแนวโน้มการโจมตีทางไซเบอร์ที่เพิ่มสูงขึ้น และผลกระทบร้ายแรงที่เกิดขึ้นจากการละเมิดข้อมูล เช่น การขโมยข้อมูลส่วนบุคคล การทำลายชื่อเสียงของบริษัท และการละเมิดกฎหมาย
เอกสารนี้เน้นย้ำถึงความสำคัญของความปลอดภัยในแอปพลิเคชันบนมือถือ โดยอธิบายถึงความแตกต่างระหว่างข้อผิดพลาดทั่วไป (bug) และข้อผิดพลาดด้านความปลอดภัย (security bug) ซึ่งสามารถนำไปสู่การโจมตีจากผู้ไม่หวังดีได้
เอกสารยังแนะนำหลักการสำคัญของความปลอดภัยของข้อมูล (Information Security) คือ CIA Triad (Confidentiality, Integrity, Availability) ซึ่งหมายถึง การรักษาความลับ ความถูกต้อง และความพร้อมใช้งานของข้อมูล
นอกจากนี้ เอกสารยังสนับสนุนแนวคิด Shift-left Security Culture ซึ่งเป็นการนำการทดสอบความปลอดภัยมาใช้ตั้งแต่เริ่มต้นของวงจรการพัฒนาผลิตภัณฑ์ (SDLC) เพื่อลดความเสี่ยงและต้นทุนในการแก้ไขข้อผิดพลาดด้านความปลอดภัยในภายหลัง
สุดท้าย เอกสารอธิบายถึงความสัมพันธ์ระหว่างสินทรัพย์ (Asset) ภัยคุกคาม (Threat) ช่องโหว่ (Vulnerability) และความเสี่ยง (Risk) และวิธีการจัดการความเสี่ยงอย่างมีประสิทธิภาพ
02_secure_coding_principle_v1.0.pdf
เอกสารนี้อธิบายหลักการเขียนโค้ดอย่างปลอดภัย (Secure Coding Principles) เพื่อลดความเสี่ยงด้านความปลอดภัยในซอฟต์แวร์ โดยมีหลักการสำคัญดังนี้:
- Least Privilege: ให้สิทธิ์การเข้าถึงทรัพยากรแก่ผู้ใช้ โปรแกรม หรือกระบวนการ เท่าที่จำเป็นเท่านั้น
- Defense in Depth: ใช้กลไกการป้องกันหลายชั้น เพื่อลดความเสี่ยงจากจุดล้มเหลวเพียงจุดเดียว
- Fail Secure / Fail Safe: ออกแบบระบบให้ทำงานในสถานะปลอดภัย เมื่อเกิดข้อผิดพลาด
- Complete Mediation: ตรวจสอบสิทธิ์การเข้าถึงทุกครั้งที่มีการร้องขอ
- Open Design: ไม่พึ่งพาความปลอดภัยจากการปิดบังข้อมูล (Security through Obscurity)
- Psychological Acceptability: ออกแบบระบบรักษาความปลอดภัยให้ง่ายต่อการใช้งาน
- Secure the Weakest Link: เน้นการป้องกันจุดอ่อนที่สุดของระบบ
เอกสารยังอธิบายถึงสาเหตุของช่องโหว่ในแอปพลิเคชัน เช่น ความรู้ด้านความปลอดภัยไม่เพียงพอ กำหนดเวลาที่ไม่สมจริง และขาดงบประมาณด้านความปลอดภัย
นอกจากนี้ เอกสารยังจำแนกประเภทของช่องโหว่ตามสาเหตุ ได้แก่ ช่องโหว่จากการออกแบบที่ไม่ดี (Bad Design) ช่องโหว่จากข้อผิดพลาดในการเขียนโค้ด (Implementation Errors) และช่องโหว่จากการกำหนดค่าหรือการดูแลระบบที่ไม่เหมาะสม (Bad Configuration / Administration)
03_understand_common_vulnerabilities_v1.0.pdf
เอกสารนี้อธิบายถึงช่องโหว่ที่พบบ่อยในแอปพลิเคชันบนมือถือ โดยอ้างอิงจาก OWASP Mobile Top 10 ซึ่งเป็นรายการช่องโหว่ที่พบบ่อยที่สุด 10 อันดับแรกในแอปพลิเคชันบนมือถือ
ช่องโหว่ที่กล่าวถึงในเอกสารนี้ ได้แก่:
- Insecure Data Storage: การจัดเก็บข้อมูลที่ไม่ปลอดภัย เช่น การจัดเก็บรหัสผ่านหรือข้อมูลส่วนบุคคลแบบ plain text
- Insufficient Transport Layer Protection: การป้องกันชั้นการขนส่งข้อมูลไม่เพียงพอ เช่น การส่งข้อมูลผ่าน HTTP แทน HTTPS
- Unintended Data Leakage: การรั่วไหลของข้อมูลที่ไม่ได้ตั้งใจ เช่น การบันทึกข้อมูลที่ละเอียดอ่อนใน log file
- Poor Authentication and Authorization: การตรวจสอบสิทธิ์และการอนุญาตที่ไม่ดี เช่น การใช้นโยบายรหัสผ่านที่อ่อนแอ หรือการให้สิทธิ์ผู้ใช้มากเกินความจำเป็น
- Client-side Injection: การแทรกโค้ดที่เป็นอันตรายฝั่งไคลเอนต์ เช่น Intent Injection ใน Android หรือ URL Scheme Injection ใน iOS
- Security Decisions Via Untrusted Input: การตัดสินใจด้านความปลอดภัยโดยใช้อินพุตที่ไม่น่าเชื่อถือ เช่น การตรวจสอบ OTP แบบ client-side
เอกสารนี้อธิบายถึงความเสี่ยง ผลกระทบ และตัวอย่างของช่องโหว่แต่ละประเภท รวมถึงวิธีการป้องกันและแก้ไข
04_secure_data_storage_and_transmission_v1.0.pdf
เอกสารนี้อธิบายถึงวิธีการจัดเก็บและส่งข้อมูลอย่างปลอดภัยในแอปพลิเคชันบนมือถือ โดยเน้นย้ำถึงความสำคัญของการเข้ารหัสข้อมูลทั้งในขณะจัดเก็บ (Data at Rest) และในขณะส่ง (Data in Transit)
เอกสารแนะนำวิธีการจัดเก็บข้อมูลอย่างปลอดภัยใน Android และ iOS โดยใช้ EncryptedSharedPreferences, KeyChain, Secure Enclave และ KeyStore
เอกสารยังอธิบายถึงวิธีการส่งข้อมูลอย่างปลอดภัยโดยใช้ HTTPS และ TLS Certificate Pinning ซึ่งเป็นเทคนิคการตรวจสอบใบรับรอง TLS เพื่อป้องกันการโจมตีแบบ Man-in-the-Middle (MitM)
นอกจากนี้ เอกสารยังอธิบายถึงหลักการพื้นฐานของการเข้ารหัส (Cryptography) เช่น การเข้ารหัสแบบสมมาตร (Symmetric Key Cryptography) และการเข้ารหัสแบบอสมมาตร (Asymmetric Key Cryptography) รวมถึงการแลกเปลี่ยนกุญแจ (Key Exchange) และการเข้ารหัสแบบ End-to-End (E2EE)
05_authentication_and_authorization_v1.0.pdf
เอกสารนี้อธิบายถึงการตรวจสอบสิทธิ์ (Authentication) และการอนุญาต (Authorization) ในแอปพลิเคชันบนมือถือ โดยอ้างอิงจาก NIST Special Publication 800–63B
เอกสารอธิบายถึงระดับการรับรองความถูกต้อง (Authentication Assurance Level — AAL) 3 ระดับ:
- Level 1: การใช้รหัสผ่าน (Passwords)
- Level 2: การตรวจสอบสิทธิ์แบบหลายปัจจัย (Multi-Factor Authentication — MFA)
- Level 3: การตรวจสอบสิทธิ์โดยใช้การเข้ารหัส (Cryptographic Based Authentication)
เอกสารยังอธิบายถึงการจัดการเซสชัน (Session Management) ซึ่งเป็นกระบวนการที่เซิร์ฟเวอร์รักษาสถานะการตรวจสอบสิทธิ์ของผู้ใช้ เพื่อให้ผู้ใช้สามารถใช้งานระบบต่อไปได้โดยไม่ต้องตรวจสอบสิทธิ์ซ้ำ
นอกจากนี้ เอกสารยังอธิบายถึงการควบคุมการเข้าถึง (Access Control) ซึ่งเป็นกระบวนการอนุญาตหรือปฏิเสธคำขอเฉพาะจากผู้ใช้ โปรแกรม หรือกระบวนการ และหลักการออกแบบการควบคุมการเข้าถึง เช่น การปฏิเสธโดยค่าเริ่มต้น (Deny by Default) และหลักการของสิทธิ์น้อยที่สุด (Principle of Least Privilege)
เอกสารยังกล่าวถึงการตรวจสอบสิทธิ์แบบโลคัล (Local Authentication) โดยใช้ PIN/Passcode หรือ Biometrics และวิธีการป้องกันการบายพาสการตรวจสอบสิทธิ์แบบ Biometric
06_platform_specific_security_v1.0.pdf
เอกสารนี้อธิบายถึงเทคนิคการตรวจสอบความถูกต้องของแอปพลิเคชันบนมือถือ (Mobile App Attestation) ซึ่งเป็นกระบวนการตรวจสอบความถูกต้องและความสมบูรณ์ของแอปพลิเคชันบนมือถือ เพื่อป้องกันการปลอมแปลงและการฉ้อโกง
เอกสารแนะนำบริการตรวจสอบความถูกต้องของแอปพลิเคชันบนมือถือจากผู้ให้บริการแพลตฟอร์มต่างๆ ได้แก่:
- Google Play Integrity: บริการจาก Google สำหรับ Android
- Huawei Safety Detect (SysIntegrity API): บริการจาก Huawei สำหรับ Android และ HarmonyOS
- iOS App Attest: บริการจาก Apple สำหรับ iOS
เอกสารอธิบายถึงวิธีการทำงาน ข้อดี ข้อจำกัด และช่องโหว่ที่อาจเกิดขึ้นของบริการแต่ละประเภท รวมถึงการเปรียบเทียบบริการทั้งสามประเภท
07_tools_and_techniques_for_secure_mobile_development_v1.0.pdf
เอกสารนี้อธิบายถึงเครื่องมือและเทคนิคต่างๆ ที่ใช้ในการพัฒนาแอปพลิเคชันบนมือถืออย่างปลอดภัย โดยมีหัวข้อหลักดังนี้:
- Risk Profile: การประเมินระดับความเสี่ยงของผลิตภัณฑ์หรือระบบ
- Security Requirements: การกำหนดและบันทึกข้อกำหนดด้านความปลอดภัยของผลิตภัณฑ์
- Threat Modeling: การระบุ วัดผล และตอบสนองต่อภัยคุกคามต่อผลิตภัณฑ์
- Penetration Testing: การจำลองการโจมตีเพื่อประเมินความปลอดภัยของระบบ
- Source Code Management (SCM): การจัดการซอร์สโค้ดเพื่อติดตามการเปลี่ยนแปลงและอัปเดต
- Secret Scanning Tools: เครื่องมือสแกนหาข้อมูลลับที่ฝังอยู่ในซอร์สโค้ด
- Software Composition Analysis (SCA): การวิเคราะห์องค์ประกอบซอฟต์แวร์เพื่อระบุช่องโหว่ในส่วนประกอบโอเพ่นซอร์ส
- Static Application Security Testing (SAST): การทดสอบความปลอดภัยของแอปพลิเคชันแบบคงที่ โดยการสแกนซอร์สโค้ด
- Dynamic Application Security Testing (DAST): การทดสอบความปลอดภัยของแอปพลิเคชันแบบไดนามิก โดยการสแกนระบบที่ใช้งานจริง
- Interactive Application Security Testing (IAST): การทดสอบความปลอดภัยของแอปพลิเคชันแบบโต้ตอบ โดยการวิเคราะห์โค้ดและพฤติกรรมของแอปพลิเคชันในขณะทำงาน
เอกสารนี้อธิบายถึงประโยชน์ วิธีการใช้งาน ตัวอย่างเครื่องมือ และข้อควรพิจารณาของเทคนิคและเครื่องมือแต่ละประเภท