"פריצת" הדרך שלי לעולם הסקיוריטי | אסף סהר

איך הכל התחיל

הקריירה שלי בהייטק התחילה בשנת 2007 בחברת openTV כשהייתי סטודנט שנה ב׳ במדעי המחשב.

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

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

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

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

היום אני מבין שזה פשוט יותר כי גם ככה רוב הדברים שאנחנו כותבים יכללו מושגים שפשוט יותר לכתוב באנגלית.

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

המשרה המלאה הראשונה שלי בעולם ההייטק

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

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

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

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

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

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

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

היעד הבא...

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

אוטומציה – כל השנים רציתי לכתוב קוד

לאחר תקופה של בין 3 ל 4 שנים נפתחה בפני האפשרות להצטרף למחלקת ה TechOps כמפתח אוטומציה בצוות קיים. כמובן שלקחתי את ההזדמנות הזו והצטרפתי לצוות. למדתי הכל מאפס. למדתי עקרונות פיתוח בעולם האמיתי ולא בהכרח דברים שלמדתי בתואר מלפני מספר שנים. למדתי מה זה סלניום, איך הוא עובד, למדתי מה זה Page Object model ועוד.

וכאן אני רוצה להודות לראש הצוות שהיה לי באותה תקופה שעזר לי מאוד ללמוד C#, סלניום ואת התשתית לאוטומציה שפותחה In House. התפקיד שלנו היה לקחת טסטים ידניים של בדיקות רגרסיה אשר נכתבו על ידי מחלקת הבדיקות ולהמיר אותם לטסטים בסלניום שירוצו בזמן העלאות גירסה. הטסטים רצו על פרודקשן במובייל ועל דפדפנים כאשר גם את התשתיות שעליהן רצה האוטומציה אנחנו ניהלנו. בעזרת הידע שרכשתי במשך השנים במחלקת הבדיקות על המערכת הצלחתי ביחד עם ראש הצוות להכניס API Requests ששימשו כתנאי מקדים לבדיקות במקום לבצע אותם בסלניום, דבר אשר תרם ליציבות הטסטים וזמני ריצה קצרים יותר. (לדוגמא לרשום משתמש חדש למערכת או להפקיד כסף לחשבון).

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

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

בדיקות סקיוריטי - נשמע מעניין

לאחר כ 3 שנים בצוות האוטומציה ועוד 4 שנים בערך במחלקת הבדיקות של Neogames הגיעה אלי הצעה מ-AppsFlyer לתפקיד חדש יחסית בעולם הבדיקות בשם QA Security.

אני זוכר שאמרתי להם בשיחות הראשונות שאני לא יודע כלום בהקשר לאבטחת מידע ולא עשיתי בדיקות כאלו מעולם.

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

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

האתגר כאן הוא גדול, ברמה האישית הייתי צריך ללמוד על עולם בדיקות ה-Web Security, ללמוד שפת תכנות חדשה - פייתון, לעבור למקום עבודה חדש אחרי 7 שנים במקום אחד (ואציין גם שחודש וחצי אחרי שהתחלתי לעבוד שם פרצה הקורונה מה שהוסיף לאתגר), לעבוד בחברה בסדר גודל כזה, של כ 1300 אנשים ויותר מ 45 בודקי ובודקות תוכנה ועם הרבה משאבים.

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

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

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

המלצותיי

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

 

תודה רבה שהקדשתם מזמנכם לקרוא את המאמר.