מה שה-linter שלך לא רואה, ולמה זה עלול לעלות לך ביוקר
בדיקת CI עברה ירוק. הקוד נראה תקין. עמית אמר LGTM. ועדיין, שורת קוד אחת גרמה לדליפת 400,000 רשומות עובדים בחברת SaaS ישראלית בתחום ה-HR. הגורם: SQL injection שלא עבר שום security review מסודר. ב-2025 Anthropic השיקה פקודת /security-review ב-Claude Code ו-GitHub Action רשמי שעושים security review על כל PR אוטומטית. אבל גם בלי Claude Code, כל מפתח יכול לקבל ממצאים מדויקים תוך דקות עם פרומפט נכון ב-claude.ai. המפתח הוא לדעת לבקש.
security review לעומת code review רגיל, מה שונה?
ב-code review רגיל שואלים: "האם הקוד עובד?" ב-security review שואלים: "האם הקוד יכול להיות מנוצל?" קוד יכול לעבור כל בדיקה אוטומטית ועדיין להכיל פגיעות שתוקף ינצל ב-30 שניות. ה-OWASP Top 10:2025 מגדיר את הקטגוריות הנפוצות ביותר, ושים לב שהרשימה עודכנה לאחרונה: Injection ירד ממקום 3 למקום 5, Supply Chain Failures נכנסה כ-A03, ו-Broken Access Control נשאר בראש. Claude מכיר את הרשימה המעודכנת ומפרש אותה בהקשר הספציפי של הקוד שלך.
| code review רגיל | security review |
|---|---|
| האם הלוגיקה נכונה? | האם תוקף יכול לעקוף את הלוגיקה? |
| קריאות ומבנה | וקטורי תקיפה ו-impact |
| linter + unit tests | OWASP Top 10 + הקשר עסקי |
| תיקון: שיפור קוד | תיקון: חסימת exploit ספציפי |
הפרומפט שמביא ממצאים אמיתיים, לא רשימת buzzwords
ההבדל בין תשובה גנרית לתשובה שמפתח יכול לפעול לפיה הוא ההקשר שנותנים ל-Claude. השוו:
ארבעה מרכיבים שמשנים הכל: (1) תפקיד מומחה, מסגר את Claude כ-reviewer, לא כמסביר קוד. (2) הקשר טכנולוגי, JWT שונה מ-session cookies; PostgreSQL שונה מ-MongoDB מבחינת injection surfaces. (3) רמת רגישות, PII הופך MEDIUM ל-HIGH. (4) מבנה מובנה, חומרה + וקטור + תיקון + בדיקה, שאפשר להדביק ישירות ב-PR comment.
שלושת הממצאים שמפתחים מפספסים, ו-Claude תופס
חברת fintech ישראלית בת"א ביקשה מ-Claude לבדוק endpoint חדש לניהול תשלומים. שלושה ממצאים זוהו שאיש לא ראה בקוד review הרגיל:
- [HIGH] IDOR, Insecure Direct Object Reference (A01:2025): הנתיב
/api/payments/:idלא אימת שה-payment שייך למשתמש המחובר. משתמש רגיל יכל לשנות את המספר ב-URL ולצפות בתשלומים של לקוחות אחרים. זה OWASP A01, Broken Access Control. Claude הציע middleware שמאמת ownership לפני כל גישה. - [HIGH] Mass Assignment: קוד שעשה
Object.assign(payment, req.body)ללא allowlist איפשר לשלוחstatus: "approved"ב-request body ולשנות שדות פנימיים ישירות. Claude הציע destructuring עם allowlist מפורש. - [MEDIUM] Missing Rate Limiting: אין הגבלת בקשות על endpoint האימות, פתוח לניסיונות Brute Force על CVV. Claude הציע express-rate-limit עם window ומקסימום ניסיונות.
שלושתם תוקנו לפני deployment. עלות התיקון: כמה שעות פיתוח. עלות פגיעה: קנסות PCI-DSS, הפסקת רישיון, נזק תדמיתי.
מה Claude מצטיין בו, ומה הוא מפספס
מחקר של Semgrep מ-2025 בחן את Claude Code על אפליקציית web מלאה. התוצאות גילו תמונה מפתיעה: Claude מצטיין ב-IDOR (22% true positive rate), פגיעויות שדורשות הבנת לוגיקת עסק, לא רק דפוסי קוד. אבל ב-SQL injection cross-file הוא מגיע רק ל-5%, כשמשתנה מסונן בקובץ A, מועבר לקובץ B, ומשמש בשאילתה בקובץ C, Claude מתקשה לעקוב אחרי ה-taint. המסקנה: שלח endpoints בנפרד עם הקשר מלא, לא dumps של אלפי שורות. וחשוב, הפעל שני passes נפרדים ושווה בין הממצאים, כי Claude אינו דטרמיניסטי: אותו פרומפט על אותו קוד מחזיר ממצאים שונים בכל הרצה.
אינטגרציה: /security-review ו-GitHub Action
Anthropic שחררה ב-2025 שני כלים רשמיים שמוסיפים security review לתהליך הפיתוח בלי מאמץ:
- פקודת
/security-reviewב-Claude Code: מריצים בספריית הפרויקט לפני כל commit. סורקת את כל הקבצים שעברו שינוי ומחזירה ממצאים עם חומרה ופתרונות. - GitHub Action (anthropics/claude-code-security-review): מתנעת אוטומטית על כל PR, מוסיפה inline comments ישירות על השורות הבעייתיות. מודל ברירת מחדל: claude-opus-4-1-20250805. תומכת ב-custom-security-scan-instructions לכללים ספציפיים לארגון.
אזהרה חשובה: אל תריצו GitHub Action אוטומטית על PRs מ-contributors חיצוניים. חוקרי Checkmarx הוכיחו שניתן להטמיע הוראות זדוניות בתוך comments בקוד ולגרום ל-Claude לאשר קוד מסוכן (CVE-2025-59536). הגבילו לrepos פנימיים או דרשו approval ידני לפני הרצה.
טעות נפוצה: לסמוך על pass יחיד
שני טעויות שמפתחים עושים כשמשתמשים ב-Claude לsecurity review:
- בקשה ללא הקשר: "בדוק אם הקוד בטוח" מחזיר תשובה גנרית שקשה לפעול לפיה. תמיד ציין שפה, framework, מסד נתונים, שיטת auth, ורמת רגישות הנתונים.
- pass יחיד ומסקנה סופית: Claude אינו דטרמיניסטי, הממצאים משתנים בין הרצות. הרץ לפחות שניים, השווה, ובדוק כל ממצא ידנית לפני סגירה.
סיכום, מה לקחת מהשיעור הזה
- Claude לא מחליף Snyk, SonarQube, או pentest ידני, הוא שכבה נוספת שתופסת ממצאים שעיניים עייפות מפספסות
- OWASP Top 10:2025 שונה מ-2021, Injection ירד, Supply Chain עלה, בדוק שאתה מתייחס לרשימה הנכונה
- Claude מצטיין ב-IDOR וב-Mass Assignment; פחות אמין ב-SQL injection cross-file, דע את המגבלות
- הרץ תמיד שני passes ובדוק כל ממצא ידנית לפני סגירה
- אל תסרוק PRs חיצוניים אוטומטית, קוד זדוני יכול לרמות את Claude (CVE-2025-59536)
מקורות: Anthropic, Automate Security Reviews | GitHub Action רשמי | OWASP Top 10:2025
