בעיית אבטחה לוגית באסטריסק

התגלתה לאחרונה בעיית אבטחה מאוד מעניינת באסטריסק. בניגוד לבעיות "רגילות" של קוד, כאן מדובר בבעיה של לוגיקה אשר יכולה לגרום לבעיה מאוד קשה.

הבעיה היא מאוד פשוטה לתאור, ומאוד לא פשוטה לפתרון.

במידה ויש לי בתכנית החיוג דבר כזה:

exten => _X.,n,Dial(SIP/${EXTEN})

אז אני יכול להזריק למשתנה EXTEN ערכים שאני רוצה שהוא יכיל, לדוגמא (איך זה יראה אחרי תרגום המשתנה):

exten => _X.,n,Dial(SIP/123@context&SIP/0123456789@anothercontext&DAHADI/g1/03123456789@anothercontext)

ואז במקום שהתכנית תחייג רק ל 123 בפרוטוקול SIP היא תחייג גם ל SIP עם המספר 123456789 וגם תצא לכרטיס טלפוניה בקבוצה 1 עם המספר 03123456789 ובכך הזרקנו עוד מספרים לחיוג.

אבל זה לא הכול, אפשר להזריק כל דבר שרוצים, כך שאפשר לתת הרשאות או הגדרות ל Dial אשר המשתמש הרגיל לא צריך לבצע.

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

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

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

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

ההודעה המקורית ברשימת הדיוור.

מחשבה אחת על “בעיית אבטחה לוגית באסטריסק

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s