อบรม Secure Coding พร้อมกับ Gemini 1.5 Pro

Throwgether
TakoDigital
Published in
3 min readMay 23, 2024

วันนี้ต้องอบรมทั้งวัน เห็นตารางแล้วอึ้งเลย งั้นเรามาลองเล่นกันดีกว่า
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): การทดสอบความปลอดภัยของแอปพลิเคชันแบบโต้ตอบ โดยการวิเคราะห์โค้ดและพฤติกรรมของแอปพลิเคชันในขณะทำงาน

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

--

--

Throwgether
TakoDigital

เมื่อเด็กเกาะเบาะต้องลงมือ Dev เอง