תיעוד 35
איתור בעיות אבטחה בזמן ש-Claude כותב קוד
התקינו את תוסף
security-guidanceכדי ש-Claude יסקור את שינויי הקוד שלו לאיתור חולשות ויתקן אותן באותה שיחה.
תוסף ה-security guidance גורם ל-Claude לסקור את שינויי הקוד שלו לאיתור חולשות נפוצות בזמן העבודה, ולתקן את מה שהוא מוצא באותה שיחה. התוסף תופס בעיות כמו הזרקה, דה-סריאליזציה לא בטוחה, ו-API של DOM שאינם בטוחים, לפני שהקוד מגיע לבקשת משיכה, ומפחית כמה מבדיקת האבטחה נופל על בודקים אנושיים בהמשך.
אחרי ההתקנה התוסף רץ אוטומטית. אין מה להפעיל, ואין פקודה נפרדת שצריך לזכור.
התוסף הוא בן הלוויה בתוך השיחה של Code Review, שרץ על בקשות משיכה. התוסף הזה מצמצם את מה שמגיע ל-PR. Code Review תופס את מה שכן מגיע. לאופן שבו התוסף משתלב עם סקירה לפי דרישה ועם סריקה ב-CI, או כדי לסרוק קוד שכבר יש לכם במקום שינויים ש-Claude כותב, ראו איך זה משתלב עם כלי אבטחה אחרים.
#דרישות קדם
- Python 3.7 ואילך ב-
PATHשלכם. סקירת הקומיט הסוכנית (agentic) צריכה Python 3.10 ואילך, וכך גם כל הסקירות שמגובות במודל כש-Claude Code משתמש בספק צד שלישי כמו Amazon Bedrock או Agent Platform של Google Cloud. התוסף מעדיף את המפרשים עם מספר גרסה מ-python3.13עדpython3.10, ואחר כך נופל חזרה ל-python3, ל-pythonול-py -3 - מאגר git לתיקייה שבה אתם עובדים. סקירות סוף התור והקומיט מחשבות diff מול מצב git ומדלגות בשקט מחוץ למאגר. בדיקת התבנית לכל עריכה עובדת בכל מקום
בהרצה הראשונה התוסף יוצר סביבה וירטואלית תחת ~/.claude/security/ ומתקין לתוכה את Claude Agent SDK, מה שדורש pip וגישה לרשת. אם ההתקנה הזו נכשלת, או ש-Python הזמין ישן מ-3.10, סקירת הקומיט באימות צד ראשון נופלת חזרה לסקירת single-shot במקום לסקירה הסוכנית. אצל ספק צד שלישי כמו Amazon Bedrock או Agent Platform של Google Cloud, הסקירות שמגובות במודל צריכות את ה-SDK בעצמן, ולכן הן מדלגות. התוסף מציג הודעה חד פעמית כש-Python ישן הוא הסיבה.
#התקנת התוסף
בשיחת Claude Code במסוף, התקינו משוק התוספים הרשמי של Anthropic:
/plugin install security-guidance@claude-plugins-official/plugin פותח לוח אינטראקטיבי ב-CLI של המסוף. אם Claude עונה ש-/plugin אינו זמין בסביבה הזו, התקינו בדרך אחרת:
- אפליקציית Claude לשולחן העבודה, שיחה מקומית או SSH: השתמשו בלשונית Desktop app תחת התקנת תוסף
- הרחבת VS Code: התקינו מתיבת הדו שיח Manage plugins
- שיחות ענן: שיחת ענן לא טוענת תוספים מהגדרות המשתמש שלכם או מ-
.claude/settings.jsonשל המאגר, כפי שמסביר מה עובר מההגדרות שלכם. לתוספים שהארגון שלכם מפיץ דרך הגדרות מנוהלות, ראו ניהול תוספים לארגון שלכם
התקנת המסוף מבקשת scope. בחרו user scope כדי לכתוב את התוסף להגדרות המשתמש שלכם, כך שהוא נטען בכל שיחה מקומית חדשה שאתם מתחילים במחשב הזה.
אם ההתקנה נכשלת, התאימו להודעה ש-Claude Code מדווח:
Marketplace "claude-plugins-official" not found: הוסיפו את השוק עם/plugin marketplace add anthropics/claude-plugins-official, ואז נסו שוב את ההתקנה.Plugin "<name>" not found in marketplace "claude-plugins-official": ייתכן שהעותק המקומי של קטלוג השוק אינו מעודכן. רעננו אותו עם/plugin marketplace update claude-plugins-official, ואז נסו שוב את ההתקנה. אם הניסיון החוזר מדפיס את אותה הודעה, ראו התוסף לא נמצא בשוק.
בדקו את סיכום ההתקנה. אם הוא מדווח Run /reload-plugins to apply., ראו החלת שינויי תוספים בלי הפעלה מחדש כדי להפעיל את התוסף בשיחה הנוכחית.
#הפעלה לצוות בשיחות מקומיות
כדי להפעיל את התוסף בשיחות המקומיות שחברי הצוות שלכם מתחילים במאגר, הכריזו עליו בהגדרות הפרויקט שנשמרות במאגר:
.claude/settings.json
{
"enabledPlugins": {
"security-guidance@claude-plugins-official": true
}
}מנהלים יכולים להפעיל את התוסף בכל הארגון על ידי הגדרת enabledPlugins בהגדרות מנוהלות.
#מה התוסף בודק
התוסף סוקר את העבודה של Claude בשלוש נקודות, כל אחת בעומק אחר:
- בכל עריכת קובץ: התאמת תבנית מהירה לקריאות מסוכנות, בלי קריאה למודל
- בסוף כל תור: סקירת מודל ברקע של כל מה שהתור שינה
- בכל קומיט או push ש-Claude מבצע: סקירה סוכנית עמוקה יותר שקוראת את הקוד שמסביב
אפשר להרחיב כל שכבה על ידי הוספת כללים משלכם. אי אפשר להסיר בדיקות מובנות בנפרד, אבל אפשר להשבית כל שכבה באופן עצמאי.
#בדיקות בכל עריכת קובץ
כש-Claude כותב לקובץ, התוסף סורק את התוכן החדש לאיתור תבניות מסוכנות מוכרות. זו התאמת תבנית בלי קריאה למודל, ולכן היא לא מוסיפה עלות שימוש.
קטגוריות תבניות לדוגמה:
- הרצת קוד דינמית:
eval(,new Function,os.system,child_process.exec - דה-סריאליזציה לא בטוחה:
pickle - הזרקת DOM:
dangerouslySetInnerHTML,.innerHTML =,document.write - קובצי workflow: עריכות תחת
.github/workflows/, שיכולות להעניק הרשאות ברמת המאגר
הבדיקה רצה אחרי שהעריכה נשמרת, ומוסיפה את האזהרה להקשר של Claude לקראת השלב הבא. כל אזהרה נורית פעם אחת לכל תבנית, לכל קובץ ולכל שיחה, כך שהתאמות חוזרות באותו קובץ לא מציפות את השיחה.
אפשר להוסיף תבניות משלכם לשכבה הזו באמצעות קובץ security-patterns.yaml.
#בדיקות בסוף כל תור
תור הוא סבב אחד של תשובת Claude: אתם שולחים הודעה, Claude עובד ועונה, והתור מסתיים. אחרי כל תור התוסף מחשב git diff של כל מה שהשתנה בעץ העבודה במהלך התור, כולל שינויים מכלי העריכה של Claude, מפקודות Bash ומתת סוכנים, ושולח אותו לסקירת Claude נפרדת שמתמקדת באבטחה. הסקירה רצה ברקע, כך שתשובת Claude לא מתעכבת. אם הסקירה מוצאת בעיות, Claude מקבל prompt מחדש עם הממצאים ומטפל בהם כהמשך.
זה תופס בעיות שהתאמת מחרוזת לא יכולה לתפוס, כמו:
- עקיפת הרשאה
- הפניות ישירות לא בטוחות לאובייקט
- הזרקה
- זיוף בקשה מצד השרת
- הצפנה חלשה
אתם רואים גם את הממצא וגם את הפתרון של Claude ישירות בשיחה. הסקירה מכסה עד 30 קבצים שהשתנו בכל תור, ונורית לכל היותר שלוש פעמים ברצף לפני שהיא מחזירה אליכם.
#בדיקות בכל קומיט או push ש-Claude מבצע
כש-Claude מריץ git commit או git push דרך כלי Bash שלו, התוסף מריץ ברקע סקירה סוכנית עמוקה יותר של השינוי. הסקירה הזו קוראת קוד שמסביב, כולל callers, sanitizers וקבצים קשורים, כדי להחליט אם ממצא אמיתי לפני הדיווח עליו. ההקשר הנוסף שומר על שיעור נמוך של false positives בתבניות שנראות מסוכנות בנפרד אבל בטוחות בבסיס הקוד שלכם.
השכבה הזו נורית רק על קומיטים ועל push ש-Claude מבצע דרך כלי Bash שלו. קומיטים שאתם מריצים מהמעטפת שלכם, כולל יציאת המעטפת ! בתוך שיחה, לא נסקרים. סקירות קומיט ו-push מוגבלות ל-20 בשעה מתגלגלת. אם הממצאים של סקירת הקומיט כפולים למה שסקירת סוף התור כבר דיווחה, Claude לא מקבל prompt מחדש, כך שקומיט נקי לא מייצר פלט גלוי מהשכבה הזו.
#עצמאות הסקירה ומגבלות
התוסף לא מבקש מאותו מופע Claude שכתב את הקוד לדרג את עצמו. בדיקת כל עריכה היא התאמת מחרוזת דטרמיניסטית, בלי מעורבות של מודל. סקירות סוף התור והקומיט רצות כקריאת Claude נפרדת, עם הקשר חדש ועם prompt שמתמקד באבטחה: הסוקר מתחיל מה-diff, אינו מחויב לגישה המקורית, ומונחה רק למצוא בעיות.
אף אחת מהשכבות לא חוסמת כתיבות או קומיטים. הממצאים מגיעים ל-Claude הכותב כהוראות, Claude מטפל בהם בשיחה, ומודל הסקירה עלול לפספס בעיות. התייחסו לתוסף כשכבה אחת בהגנה לעומק, לא כפתרון אבטחה מלא. ראו איך זה משתלב עם כלי אבטחה אחרים.
#הוספת כללים משלכם
לתוסף שתי נקודות הרחבה: קובץ הנחיה ב-Markdown לסקירות שמגובות במודל, וקובץ תבניות ב-YAML או ב-JSON להתאמת המחרוזת לכל עריכה. שניהם תוספתיים. אפשר להוסיף בדיקות, אבל אי אפשר להשבית מהקבצים האלה בדיקות מובנות.
#הוספת הנחיה לסקירות שמגובות במודל
צרו בפרויקט את .claude/claude-security-guidance.md, ותארו בשפה פשוטה את מודל האיום ואת רשימת הבדיקה לסקירה. הסקירות שמגובות במודל טוענות אותו כהקשר נוסף, לצד רשימת החולשות המובנית.
הדוגמה הבאה מיועדת לשירות web עם נתיבי admin שמוגבלים לפי תפקיד, ועם מדיניות לוג לנתוני לקוחות:
.claude/claude-security-guidance.md
# Security guidance for this repo
- Do not log `customer_id` or `account_number` at INFO level or above.
- All routes under `/admin` must call `require_role("admin")` before any database read.
- Use `crypto.timingSafeEqual` for token comparison instead of `===`.הכללים האלה הם הנחיה לסוקר, לא מעקות דטרמיניסטיים. התוסף מציג הפרות כממצאים כדי ש-Claude יתקן אותן, אבל הוא לא חוסם כתיבות ולא מבטיח שכל הפרה תיתפס. ההנחיה תוספתית בלבד: כלל שאומר להתעלם ממחלקת חולשות לא מדכא את הממצאים האלה. לאכיפה קשיחה, שלבו את התוסף עם hook שחוסם את העריכה או עם בדיקת CI.
#הוספת תבניות מותאמות לכל עריכה
צרו את .claude/security-patterns.yaml כדי להוסיף כללי regex או תת מחרוזת לבדיקת התבנית לכל עריכה. אלה רצים כהתאמות מחרוזת דטרמיניסטיות לצד התבניות המובנות:
.claude/security-patterns.yaml
patterns:
- rule_name: internal_api_key
substrings: ["sk_live_", "AKIA"]
reminder: "Hardcoded API key prefix. Load credentials from the secret manager."
- rule_name: tenant_unfiltered_query
regex: "\\.objects\\.all\\(\\)"
paths: ["**/src/tenants/**"]
reminder: "Multi-tenant code must filter by org_id."| שדה | סוג | תיאור |
|---|---|---|
rule_name | string | מזהה שמוצג באזהרה |
reminder | string | טקסט האזהרה שנוסף להקשר של Claude, עם תקרה של 1 KB |
regex | string | ביטוי רגולרי של Python שמותאם מול התוכן שנערך |
substrings | list | תת מחרוזות מילוליות. ספקו את זה או את regex |
paths | list | תבניות glob אופציונליות. הכלל חל רק על קבצים תואמים. תבניות glob מותאמות מול נתיב הקובץ המלא, לכן הוסיפו קידומת **/ לתבניות שיחסיות לפרויקט |
exclude_paths | list | תבניות glob אופציונליות לדילוג. אותה התאמה כמו ב-paths |
התוסף קורא גם את .claude/security-patterns.yml ואת .claude/security-patterns.json עם אותה סכמה. JSON עובד בכל התקנת Python. צורות ה-YAML דורשות ש-PyYAML יהיה ניתן לייבוא, והתוסף לא מתקין אותו עבורכם. התוסף טוען עד 50 כללים מותאמים, ומדלג על ביטויי regex שנראים מועדים ל-catastrophic backtracking.
#מיקומי החיפוש של קובצי הכללים
התוסף מחפש את claude-security-guidance.md ואת security-patterns.yaml באותם מיקומים, בלי תלות באופן שבו התוסף הופעל:
| היקף | נתיב | הערות |
|---|---|---|
| משתמש | ~/.claude/claude-security-guidance.md | חל על כל פרויקט במחשב שלכם |
| פרויקט | .claude/claude-security-guidance.md | נשמר יחד עם המאגר |
| מקומי לפרויקט | .claude/claude-security-guidance.local.md | לעקיפות אישיות. הוסיפו אותו ל-.gitignore שלכם |
התוסף טוען את כל המיקומים שקיימים ומחבר אותם יחד, עם תקרה משולבת של 8 KB לקובץ ההנחיה. מנהלים יכולים להפיץ כללים לכל הארגון על ידי דחיפת קובץ היקף המשתמש אל ~/.claude/ דרך ניהול מכשירים. אותם נתיבים חלים על security-patterns.yaml.
#עלות שימוש
בדיקת התבנית לכל עריכה לא מבצעת קריאה למודל ולא מוסיפה עלות. סקירות סוף התור והקומיט כל אחת צורכת שימוש נוסף במודל, שנספר אל השימוש שלכם כמו כל בקשת Claude אחרת. סקירת הקומיט סוכנית, ועשויה לקחת כמה תורות מודל לכל קומיט. צפו בערך לקריאת סקירה אחת לכל תור שמשנה קבצים, ולסקירה עמוקה יותר אחת לכל קומיט. שתיהן כפופות לתקרות שלמעלה.
כברירת מחדל, שתי הסקירות רצות על מודל Claude Opus. הגדירו את SECURITY_REVIEW_MODEL כדי לבחור מודל אחר לסקירת סוף התור, ואת SG_AGENTIC_MODEL לסקירת הקומיט.
התוסף זמין בכל התוכניות.
#השבתה או הסרה
כדי לכבות שכבות בודדות ולהשאיר את השאר, הגדירו את משתנה הסביבה המתאים:
| משתנה | השפעה |
|---|---|
ENABLE_PATTERN_RULES=0 | השבתת בדיקת התבנית לכל עריכה |
ENABLE_STOP_REVIEW=0 | השבתת סקירת ה-diff בסוף התור |
ENABLE_COMMIT_REVIEW=0 | השבתת סקירת הקומיט וה-push |
ENABLE_CODE_SECURITY_REVIEW=0 | השבתת כל הסקירות שמגובות במודל בבת אחת |
SECURITY_GUIDANCE_DISABLE=1 | השבתת התוסף כולו בלי להסיר אותו |
כדי להשהות את התוסף בהיקף המשתמש שלכם:
/plugin disable security-guidance@claude-plugins-officialכדי להסיר אותו מהיקף המשתמש שלכם:
/plugin uninstall security-guidance@claude-plugins-officialאם התוסף הופעל דרך .claude/settings.json של פרויקט, הסרתו דרך /plugin כותבת עקיפה אל .claude/settings.local.json שלכם במקום לערוך את הקובץ שנשמר במאגר, כך שהתוסף נשאר כבוי אצלכם וחברי הצוות לא מושפעים. אותה תיבת דו שיח גם מציעה להסיר את התוסף עבור כולם, על ידי הסרתו מ-.claude/settings.json המשותף. אם הוא הופעל דרך הגדרות מנוהלות, רק מנהל יכול להשבית אותו.
#איך התוסף משתלב עם Claude Code
התוסף בנוי כולו על hooks, המנגנון להרצת קוד משלכם בנקודות מסוימות בלולאה של Claude. הוא רושם:
| אירוע hook | מטרה |
|---|---|
SessionStart | אתחול סביבת Python של התוסף |
UserPromptSubmit | לכידת קו הבסיס של עץ העבודה, שסקירת סוף התור מחשבת diff מולו |
PostToolUse על Edit, Write ו-NotebookEdit | התאמת תבנית לכל עריכה |
Stop | סקירת diff בסוף התור, שרצה ברקע |
PostToolUse על Bash, מסונן ל-git commit ול-git push | סקירת קומיט ו-push, שרצה ברקע |
אם אתם בונים hooks משלכם, קוד המקור של התוסף הוא דוגמה עובדת להרצת קריאת מודל נפרדת מתוך hook ולהחזרת התוצאה לשיחה.
#איך זה משתלב עם כלי אבטחה אחרים
התוסף הוא שכבה אחת בגישה של הגנה לעומק. הוא תופס בעיות בשלב המוקדם ביותר, כשהקוד עדיין בעורך, אבל הוא אינו ערובה ואינו מחליף בדיקות מאוחרות יותר. מחסנית טיפוסית:
| שלב | כלי | מה הוא מכסה |
|---|---|---|
| בשיחה | תוסף security guidance | חולשות נפוצות בקוד ש-Claude כותב, שתוקנו באותה שיחה |
| לפי דרישה, מעבר אחד | /security-review | מעבר אבטחה חד פעמי על הענף הנוכחי, שרץ כשאתם מבקשים |
| לפי דרישה, סריקה עמוקה | תוסף Claude Security | סריקת חולשות מרובת סוכנים של מאגר או של diff, עם ממצאים ותיקונים שנבדקו בנפרד |
| בבקשת משיכה | Code Review, תוכניות Team ו-Enterprise | סקירה מרובת סוכנים של נכונות ושל אבטחה, עם הקשר מלא של בסיס הקוד |
| ב-CI | כלי הניתוח הסטטי וסורקי התלויות הקיימים שלכם | כללים ספציפיים לשפה, בדיקות שרשרת אספקה, ואכיפת מדיניות שהתוסף לא מנסה לבצע |
כדי למצוא בעיות אבטחה בקוד שכבר יש לכם, ולא בשינויים ש-Claude כותב, בקשו מ-Claude בשיחה לסקור קובץ או תיקייה מסוימים לאיתור חולשות, או השתמשו בתוסף Claude Security לסריקה מרובת סוכנים עמוקה יותר של כל המאגר. /security-review מכסה רק את השינויים בענף הנוכחי שלכם. בשני המקרים, הסקירה קוראת את קוד המקור ב-checkout שלכם, לא אתר שרץ או שירות שפורס.
#פתרון בעיות
התוסף כותב אבחון זמן ריצה אל ~/.claude/security/log.txt. בדקו שם תחילה אם ביקורות אינן מופיעות.
סיבות נפוצות לכך ששכבת ביקורת מדלגת בלי הודעה בשיחה:
- הספרייה אינה מאגר git: ביקורות סוף התור וביקורות הקומיט דורשות מצב git ומדלגות מחוץ למאגר
- בסשן אין אימות Anthropic ואין ספק צד שלישי מוגדר: הביקורות המגובות במודל מדלגות, ורק בדיקת התבניות לכל עריכה רצה
- קיים קובץ
security-patterns.yamlאבל לא ניתן לייבא את PyYAML: מתעלמים מהקובץ. השתמשו ב-security-patterns.jsonבמקום
#משאבים קשורים
כדי להעמיק ברכיבים שהדף הזה נוגע בהם:
- סקירת קוד: הגדרת ביקורת מרובת סוכנים בזמן PR
- אוטומציה של פעולות עם hooks: בניית בדיקות משלכם באותן נקודות במחזור החיים
- מציאת תוספים בשוק הרשמי: היכן לעיין בתוספים הרשמיים האחרים