FixVibe
Covered by FixVibecritical

הזרקת SQL: מניעת גישה לא מורשית למסד נתונים

הזרקת SQL (SQLi) היא פגיעות קריטית שבה התוקפים מפריעים לשאילתות מסד הנתונים של יישום. על ידי הזרקת תחביר SQL זדוני, התוקפים יכולים לעקוף את האימות, להציג נתונים רגישים כמו סיסמאות ופרטי כרטיסי אשראי, או אפילו לסכן את השרת הבסיסי.

CWE-89

השפעת הזרקת SQL

הזרקת SQL (SQLi) מאפשרת לתוקף להפריע לשאילתות שאפליקציה עושה למסד הנתונים שלו [S1]. ההשפעה העיקרית כוללת גישה לא מורשית לנתונים רגישים כגון סיסמאות משתמש, פרטי כרטיס אשראי ומידע אישי [S1].

מעבר לגניבת נתונים, תוקפים יכולים לעתים קרובות לשנות או למחוק רשומות של מסד נתונים, מה שמוביל לשינויים מתמשכים בהתנהגות האפליקציה או לאובדן נתונים [S1]. במקרים בעלי חומרה גבוהה, ניתן להסלים את SQLi כדי לסכן את התשתית האחורית, לאפשר התקפות מניעת שירות או לספק דלת אחורית מתמשכת למערכות הארגון [S1][S2].

סיבת שורש: טיפול לא בטוח בקלט

הסיבה העיקרית להזרקת SQL היא נטרול לא תקין של אלמנטים מיוחדים המשמשים בפקודת SQL [S2]. הדבר מתרחש כאשר יישום בונה שאילתות SQL על-ידי שרשור קלט המושפע מבחוץ ישירות למחרוזת השאילתה [S1][S2].

מכיוון שהקלט אינו מבודד כראוי ממבנה השאילתה, מתורגמן מסד הנתונים עשוי לבצע חלקים מקלט המשתמש כקוד SQL במקום להתייחס אליו כאל נתונים מילוליים [S2]. פגיעות זו יכולה להתבטא בחלקים שונים של שאילתה, כולל הצהרות SELECT, ערכי INSERT או UPDATE הצהרות [S1].

תיקוני בטון והפחתות

השתמש בשאילתות עם פרמטרים

הדרך היעילה ביותר למנוע הזרקת SQL היא השימוש בשאילתות עם פרמטרים, הידועות גם בשם הצהרות מוכנות [S1]. במקום לשרשר מחרוזות, מפתחים צריכים להשתמש במנגנונים מובנים האוכפים את הפרדת הנתונים והקוד [S2].

עקרון הרשאות הקטנות ביותר

יישומים צריכים להתחבר למסד הנתונים באמצעות ההרשאות הנמוכות ביותר הנדרשות עבור המשימות שלהם [S2]. לחשבון יישום אינטרנט אין הרשאות ניהול ויש להגביל אותו לטבלאות או לפעולות הספציפיות הנחוצות לתפקוד שלו [S2].

אימות וקידוד קלט

למרות שאינו תחליף לפרמטריזציה, אימות קלט מספק הגנה מעמיקה [S2]. יישומים צריכים להשתמש באסטרטגיית קבלה ידועה-טובה, המאמתת שהקלט תואם סוגים, אורכים ופורמטים צפויים [S2].

כיצד FixVibe בודק את זה

FixVibe כבר מכסה הזרקת SQL דרך מודול סורק active.sqli המגודר. סריקות פעילות פועלות רק לאחר אימות ואישור בעלות על דומיין. הבדיקה סורקת נקודות קצה של GET מאותו מקור עם פרמטרי שאילתה, קובעת תגובה בסיסית, מחפשת חריגות בוליאניות ספציפיות ל-SQL, ומדווחת על ממצא רק לאחר אישור תזמון על פני מספר אורכי עיכוב. סריקות מאגר גם עוזרות לתפוס את סיבת השורש מוקדם יותר באמצעות code.web-app-risk-checklist-backfill, המסמן קריאות SQL גולמיות שנבנו עם אינטרפולציה של תבנית.