במהלך השנים ביצענו מאות בדיקות חדירה לאפליקציות Web, וזיהינו דפוסים חוזרים של טעויות אבטחה. במאמר זה נציג את 10 הטעויות הנפוצות ביותר שאנחנו פוגשים, וכיצד להימנע מהן.
1. אימות חלש וניהול סשנים לקוי
אחת הטעויות הנפוצות ביותר היא אימות חלש. אנחנו רואים:
- סיסמאות חלשות ללא מדיניות אכיפה
- אין הגבלה על ניסיונות התחברות (Brute Force)
- Session IDs לא בטוחים או צפויים
- אין timeout לסשנים
- Session fixation - לא מחליפים Session ID אחרי התחברות
2. SQL Injection
למרות שזו פגיעות ותיקה, אנחנו עדיין רואים אותה לעתים קרובות. הבעיה נוצרת כאשר קלט משתמש מוכנס ישירות לשאילתות SQL ללא sanitization.
דוגמה לשאילתה פגיעה:
SELECT * FROM users WHERE username = '$username' AND password =
'$password'
פתרון:
- השתמשו ב-Prepared Statements
- השתמשו ב-Parameterized Queries
- בצעו Input Validation ו-Sanitization
- השתמשו ב-ORM במקום SQL ישיר
3. Cross-Site Scripting (XSS)
XSS מאפשר לתוקף להריץ קוד JavaScript בדפדפן של המשתמש. יש שלושה סוגים:
- Reflected XSS: הקוד מוחזר מהשרת מיד
- Stored XSS: הקוד נשמר במסד הנתונים
- DOM-based XSS: הקוד מופעל בצד הלקוח
4. בעיות בקרת גישה (Access Control)
פגיעויות נפוצות כוללות:
- IDOR (Insecure Direct Object Reference): גישה ישירה למשאבים ללא בדיקת הרשאות
- Privilege Escalation: משתמשים יכולים להעלות הרשאות
- Missing Authorization: אין בדיקת הרשאות לפני פעולות רגישות
5. חשיפת מידע רגיש
אנחנו רואים לעתים קרובות:
- הודעות שגיאה מפורטות מדי (חושפות מבנה DB, נתיבי קבצים)
- מידע רגיש ב-Response Headers
- קבצי קונפיגורציה חשופים (.env, config files)
- Stack traces מלאים ב-Production
6. Security Misconfiguration
תצורות לא בטוחות כוללות:
- Default credentials שלא שונו
- Debug mode פעיל ב-Production
- Headers אבטחה חסרים (HSTS, CSP, X-Frame-Options)
- Directory listing מופעל
- שרתים לא מעודכנים עם פגיעויות ידועות
7. Sensitive Data Exposure
בעיות נפוצות:
- הצפנה חלשה או חסרה
- סיסמאות לא מוצפנות במסד הנתונים
- שליחת מידע רגיש ב-URLs (במקום POST body)
- לוגים שמכילים מידע רגיש
8. XML External Entities (XXE)
כאשר אפליקציה מעבדת XML input, תוקף יכול להגדיר External Entity שמאפשר קריאת קבצים מהשרת או ביצוע SSRF.
9. Using Components with Known Vulnerabilities
שימוש בספריות או frameworks עם פגיעויות ידועות הוא בעיה נפוצה מאוד.
כיצד להימנע:
- עדכנו תלויות באופן קבוע
- השתמשו בכלים כמו npm audit, Snyk, OWASP Dependency-Check
- עקבו אחרי CVE databases
- השתמשו ב-automated dependency scanning
10. Insufficient Logging & Monitoring
ללא לוגים ומעקב מתאימים, קשה לזהות התקפות בזמן אמת. בעיות נפוצות:
- לוגים לא מספיק מפורטים
- אין התראות על פעילות חשודה
- לוגים לא מאובטחים (ניתן למחוק או לשנות)
- אין ניתוח של לוגים
סיכום
רוב הטעויות הללו ניתנות למניעה עם תהליכי פיתוח נכונים, בדיקות אבטחה מוקדמות, ושימוש בכלים אוטומטיים. מומלץ לבצע בדיקות חדירה קבועות כדי לזהות פגיעויות לפני שהתוקפים ימצאו אותן.
רוצים לבדוק את האבטחה של האפליקציה שלכם?
צרו קשר
עם הצוות שלנו לבדיקת חדירה מקצועית.