Doogree
DevSec · shift-left

לתפוס את הסוד לפני ה-commit: סריקת קוד שלא עוזבת את המכונה

02/07/2026 · ~7 דקות קריאה
סריקת קודסודותlocal-firstCIAI-agent

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

התנאי: הקוד לא עוזב את המכונה

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

הבטחה שאפשר להסביר לרואה-החשבון: "המפתחות וקוד-המקור שלך אף פעם לא עוזבים את המחשב — אנחנו סורקים מקומית, בעורך ובגיט, לפני שסוד או חולשה בכלל נכנסים ל-commit."

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

אפשר היה לבנות תוסף נפרד לכל עורך — אחד ל-VSCode, אחד ל-Cursor, אחד ל-JetBrains, ועוד. זו מלכודת: עשר בסיסי-קוד לתחזק, לוגיקה שמתפצלת, ובאגים שונים בכל מקום. במקום זה בנינו מנוע אחד — קובץ-הרצה סטטי יחיד (Rust) — שמכיל את כל הלוגיקה, וכל "משטח" הוא מעטפת דקה סביבו:

הלוגיקה נכתבת פעם אחת. אותו כלל בדיוק ששומר על ה-commit שלך שומר גם על ה-CI וגם על מה שסוכן-AI מנסה לכתוב.

מה הוא תופס

הליבה משלבת זיהוי-סודות בסגנון gitleaks (קטלוג ביטויים סדירים) עם מדד-אנטרופיה של שאנון — כדי להבדיל בין מחרוזת אקראית שנראית כמו מפתח אמיתי לבין placeholder תמים כמו "your-api-key-here". מפתחות-AWS, טוקני-GitHub, מפתחות פרטיים, סיסמאות בתוך connection-string, ועוד — כולם מסומנים עם תיקון בעברית והפניה ל-CWE. בהמשך מתווספות סריקת-חולשות עמוקה (Semgrep) וסריקת-תלויות (CVE).

למה זה קריטי: סוד שנדחף ל-git נשאר בהיסטוריה לנצח — גם אם מוחקים אותו ב-commit הבא. הדרך היחידה לנקות היא לזהות אותו לפני שהוא נכנס. שם נמצא כל הערך.

הזווית שאף אחד לא מדבר עליה: סוכני-AI שכותבים קוד

יותר ויותר קוד נכתב היום על-ידי סוכני-AI. הם מעולים — אבל הם גם יכולים "להזות" תבנית לא-מאובטחת או להטמיע סוד בטעות. המנוע שלנו יושב כ-hook על הסוכן: כשהסוכן מנסה לכתוב סוד או חולשה קריטית, ה-hook מסרב — עוד לפני שהתוכן נוגע בדיסק. הפכנו סיכון חדש (AI כותב קוד) לשער-הגנה.

איך בדקנו

הרצנו את הכלי על בסיס-הקוד שלנו עצמו. שני דברים היו חשובים: שהוא תופס סודות אמיתיים (בדקנו עם דוגמאות סינתטיות — AWS, Stripe, connection-string — וכולן נתפסו), ושהוא לא מרעיש על קוד תקין (ה-placeholders נדחו נכון). התוצאה על הקוד שלנו: 100/100 — אפס סודות מוטמעים, כי כולם יושבים במקום הנכון (secret manager), בדיוק כמו שאנחנו ממליצים ללקוחות.

איך אנחנו משפרים את זה — בקרת-איכות מתמשכת

הכלי מריץ את עצמו על כל שינוי-קוד שלנו (CI gate), כולל סריקת-תלויות (SCA) שמזהה אם ספרייה שאנחנו תלויים בה הפכה לפגיעה. הצעדים הבאים: משטחי-העורך (LSP) והסוכן (MCP) לכל לקוח, מנוע-diff שמתריע רק על מה חדש (לא רעש ישן), ותובנת-AI אופציונלית שמסבירה כל ממצא. אותה פילוסופיה: כלי אחד, מקומי, שקוף — הידע נחשף, הקוד נשאר אצלך.

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

← כל הכתבות