Oracle Database Firewall

במאי 2010 רכשה אורקל חברה בשם Secerno. על פניו לא משהו מלהיב במיוחד – אורקל רוכשת כל שנה לפחות כמה חברות: בצורה כזו “קיבלנו” לדוגמה את GoldenGate, ה”באזז וורד” החם של שנה שעברה. חברת Secerno הייתה חברה שייצרה מוצר אבטחת מידע שאני מאמין שיקבל תשומת לב רבה בשנה הקרובה. המוצר נקרא Oracle Database Firewall .

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

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

נניח לדוגמה שבאפליקציה שלנו הפרמטר v_emp_id הוא מחרוזת שנלקחת ממסך והשליפה שמועברת על ידי משתנה מאחורי הקלעים היא זו (vb.net, לצורך הדוגמה):

rs.open("select * from emp where emp_id =" & v_emp_id);

אם נעביר בפרמטר ערך “מרושע” אז נוכל לצפות בכל הטבלה, במקום ברשומה בודדת אחת שאליה התכוונו לאפשר גישה מראש (הסיבה ששמתי “–” אחרי הערך היא שבמקרה ואנחנו משרשרים עוד דברים אחרי השליפה, זה יבטל אותם):

v_emp_id = "1 or 1=1; --";
rs.open("select * from emp where emp_id =" & v_emp_id);

כלומר השליפה שלנו תיראה בסופו של דבר ככה:

select * from emp where emp_id = 1 or 1=1; --

דוגמה אחרת היא הדוגמה הזו.

נחזור לענייננו – המוצר החדש ידע לחסום את ההתקפה הזו בצורה פשוטה במיוחד מבלי שנידרש לבדוק כל משתנה שנכנס לבסיס הנתונים (למרות שרצוי לעשות את זה בכל מקרה) וידע להתריע לנו כאשר התקפה כזו קרתה.

אוקיי, בוא נצלול קצת אל המוצר החדש – על פי שמו, Oracle database firewall, נשמע כאילו זה מוצר ייחודי לבסיסי הנתונים של אורקל אבל למעשה הוא ממש לא. מכוון שהכלי הזה יודע לנתח שאילתות ANSI, הוא יודע לעבוד גם מול MS SQL Server, IBM DB2 ו-Sybase. הוא לא מתייחס לקונפיגורציה של המערכת בכלל ומתאים לשימוש בצורה גנרית גם כאשר משתמשים ביותר מבסיס נתונים אחד בו זמנית.

הכלי יכול לעבוד במספר שיטות: רשימה “לבנה” – לא לאפשר שום דבר ולהכניס רק שליפות ידועות מראש, רשימה “שחורה” – לאפשר הכל אבל לחסום שליפות ידועות מראש או שילוב של השניים לפי סטים של “פעולות”. הרשימות יכולות להכיל רשימת משתמשים מורשים, שליפות ספציפיות (או חלקים שלהן), כתובות IP, רשימת Hosts, זמנים שבהם שליפה מותר לה לרוץ וכאלה שלא ועוד. המוצר יודע לתעד כל שליפה (full audit) שמגיעה לבסיס הנתונים וכאשר מגיעה שליפה שנתפסת בפילטר, המוצר ידע לבצע מספר פעולות: חסימה מלאה של הפקודה, החלפה של הפקודה בפקודה אחרת או התרעה על הגעת הפקודה בנוסף (או לא) לפעולה אחרת בזמן אמת.

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

לי באופן אישי ברור שהמוצר הזה הולך לעשות המון רעש בשנה הקרובה. בתקופה האחרונה אני נתקל ביותר ויותר צרכי אבטחת מידע של בסיסי נתונים על ידי לקוחות ומוצר כזה הוא הפתרון המושלם לבעיה מורכבת במיוחד – וכאשר מוצר כזה מסופק על ידי ספק של בסיס נתונים הסבירות שארגונים יבחרו להשתמש בו עולה פלאים.
קיימת גרסה שזמינה כבר היום ל-linux x86 אבל נראה שהמוצר עדיין בשלבי התארגנות מחדש לאחר הקנייה של אורקל. אני לא יודע מתי המוצר הזה יצא לפלטפורמות אחרות ויגיע לסביבות יצור בעולם אבל אני מתכוון להיות עם האצבע על הדופק ואעדכן כשאדע משהו חדש בנושא.

למידע נוסף, ניתן לקרוא באתר של אורקל או ב-white paper.

במאמר מוסגר הייתי רוצה לציין שאני מכיר מוצר מתחרה של חברת ActiveBase (חברה ישראלית) בשם ActiveKnowledge שיודע לעשות דברים דומים – השתמשתי בו אצל כמה לקוחות בשנים האחרונות. המוצר של ActiveBase יושב בין המשתמש ל-listener ויודע, על סמך סט מוגדר מראש של חוקים, לשנות שליפות שמגיעות לבסיס הנתונים או לחסום אותם. השימוש העיקרי שעשיתי ב-AK היה “הזרקת” hint-ים לתוך שליפות שלא יכולתי לשנות. אני מקווה שהתחרות עם אורקל לא תפגע בו יותר מדי ושיהיה להם בהצלחה.

0 תגובות

השאירו תגובה

Want to join the discussion?
Feel free to contribute!

השאר תגובה

This site uses Akismet to reduce spam. Learn how your comment data is processed.