קוראים כמוך עוזרים לתמוך ב-MUO. כאשר אתה מבצע רכישה באמצעות קישורים באתר שלנו, אנו עשויים להרוויח עמלת שותף. קרא עוד.

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

מהי הזרקת SQL?

תוכנות מסתמכות על קוד כדי לתפקד. קוד הוא גם השפה שמכונות משתמשות בה לביצוע פעולות, ויכול לבוא בצורות רבות (Python, JavaScript, C++ וכו'). לרוב, באמצעות קוד, פושעי סייבר יכולים לתקוף קורבנות, והזרקות SQL (או SQLis) אינן שונות. אלה מאפשרים לשחקנים זדוניים "להחדיר" קוד מזיק להצהרת SQL.

בוא נעבור תחילה על המשמעות של SQL.

SQL ראשי תיבות של Structured Query Language. זהו סוג אחר של שפת תכנות משמש במיוחד כאשר עוסקים בבסיסי נתונים. פותח בשנות ה-70 על ידי IBM, SQL יכול לתפעל, לאחסן ולאחזר מידע על מסד נתונים. מערכות תקשורת רבות של מסדי נתונים ברחבי העולם משתמשות ב-SQL, ולכן אין זה מפתיע שגורמי איומים המציאו דרכים להשתמש בו לרעה כדי למקד את מסדי הנתונים.

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

כמובן, אתר אינטרנט או אפליקציה צריכים להשתמש בשפת התכנות SQL כדי שהזרקת SQL תהיה אפשרית. אבל איך עובד וקטור ההתקפה הזה?

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

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

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

כפי שנמצא על ידי Open Application Security Project (OWASP), 274,000 מקרים של הזרקות SQL זוהו בעת בדיקת יישומים לנוכחות מתקפה כזו בשנת 2021.

סוגי הזרקת SQL

ישנם כמה סוגים שונים של הזרקת SQL, כאשר שלושת העיקריות הן הזרקות עיוורות, בתוך הלהקה ומחוץ לפס.

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

באמצעות הזרקת SQL עיוורת, תוקף שולח נתונים לשרת היעד ואז יכול להבחין בדברים מסוימים על מסד נתונים דרך אופי תגובת ה-HTTP עצמה. נוסף על כך, גורמים הקשורים לתגובת HTTP יכולים לעזור לתוקף ליצור הזרקת SQL אחרת ויעילה יותר לגישה למסד הנתונים.

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

בשלב הבא, ישנן הזרקות SQL בתוך הלהקה. הזרקות SQL בתוך הלהקה מאפשרות למפעיל לבצע את המתקפה ולקבל את התוצאה הרצויה באמצעות אותו ערוץ. הזרקות SQL בתוך הלהקה הן הנפוצות ביותר, פשוט משום שהן הקלות ביותר לביצוע בשל העובדה שהן דורשות ערוץ אחד בלבד.

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

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

האם ניתן להימנע מהזרקות SQL?

הזרקת SQL מדאיגה יותר עסקים וארגונים מאשר אנשים רגילים. אבל יש דברים שהמטרות הפוטנציאליות האלה יכולות לעשות כדי להוריד את הסיכוי להיפגע מהתקפה כזו.

חיטוי קלט הוא הנוהג הנפוץ העיקרי להימנעות מהזרקות SQL. זהו תהליך סינון שסורק ומנקה קלט של תווים מסוכנים. אם קוד SQL מעובד לפני חיטוי, הסיכוי להזרקת SQL יגדל באופן טבעי.

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

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

הזרקות SQL מיושנות, אבל עדיין מהווים איום

בעוד שהזרקות SQL קיימות כבר למעלה מ-20 שנה, הן עדיין מהוות סיכון לאתרים ויישומים רבים. אז כדאי לזכור את צורת ההתקפה הזו ולנקוט את הצעדים הדרושים כדי לנסות ולמנוע אותה, מכיוון שהיא עלולה להוות איום על מסדי הנתונים שלך בשלב מסוים בעתיד.