למה Code Review הוא קו ההגנה הראשון, ולמה רוב הצוותים מפספסים אותו
ב-2025 גילה Check Point Research שניתן לגנוב API keys דרך PR content שגורם ל-Claude Code להריץ קוד זדוני. בשנה שעברה Anthropic עצמם גילו שני vulnerabilities קריטיים בקוד הפנימי שלהם, RCE דרך DNS rebinding ו-SSRF בcredential proxy, בדיוק בגלל שהשתמשו ב-Claude לsecurity review לפני deployment. ה-Veracode 2023 Report מצא ש-76% מהאפליקציות מכילות פגיעויות שניתן היה לזהות ב-code review רגיל.
המסקנה פשוטה: Security review הוא לא שלב שעושים לפעמים ב-big PRs. זה תהליך שחייב לקרות בכל PR, עם Claude כpartner שיטתי.
OWASP Top 10:2025, מה השתנה ולמה זה חשוב לך
OWASP פרסם את Top 10:2025 עם שינויים שמשנים סדרי עדיפויות. הנה מה שחשוב לביצוע code review:
| דירוג 2025 | קטגוריה | שינוי מ-2021 |
|---|---|---|
| #1 | Broken Access Control (כולל IDOR + SSRF) | נשאר ראשון, 90%+ מהאפליקציות |
| #2 | Security Misconfiguration | קפץ מ-#5, CORS, headers, כלים חשופים |
| #3 | Software Supply Chain Failures | חדש, dependencies, build systems |
| #4 | Cryptographic Failures | ירד מ-#2, כולל Sensitive Data Exposure |
| #5 | Injection (SQL, XSS, Command) | ירד מ-#3 |
| #10 | Mishandling of Exceptional Conditions | חדש, error handling שלא מחשיב edge cases |
הנקודה: Security Misconfiguration עלה מאוד בדירוג. בישראל, סטארטאפים רבים בת"א מגדירים CORS כ-wildcard (*) כי "זה פשוט יותר", זו בדיוק הבעיה שCORS עולה ל-#2.
ה-Checklist המלא לביצוע Secure Code Review
OWASP Application Security Verification Standard (ASVS) מגדיר מה לבדוק. ל-SaaS רגיל, רמה L2 מספיקה:
- Input Validation: כל user input עובר validation לפני שימוש. SQL queries, parameterized בלבד. HTML output, escaped. File uploads, בדיקת content, לא רק extension.
- Broken Access Control / IDOR: כל endpoint דורש authentication. כל object ID נבדק שהוא שייך למשתמש המחובר (לא רק קיים ב-DB). אין IDOR, GET /api/reports/12345 לא מחזיר נתונים של לקוח אחר.
- Secrets ו-Data: אין hardcoded strings (API keys, passwords, connection strings). PII לא מופיע ב-logs. Error messages לא חושפים stack traces ב-production. Response לא מחזיר יותר שדות ממה שנדרש.
- Configuration: CORS מוגדר ל-explicit allowlist, לא wildcard. Security headers מוגדרים: CSP, HSTS, X-Frame-Options. Rate limiting על endpoints חשופים. Dependencies, אין CVEs ידועים.
פרומפט 1, Automated PR Security Review
זה הפרומפט הבסיסי שעובד על כל PR. כל שורה שלו עושה עבודה:
אתה security reviewer מנוסה.
Stack: Node.js + PostgreSQL + JWT auth
רמת רגישות: SaaS B2B עם נתוני לקוחות
בדוק את ה-diff הבא לפי OWASP Top 10:2025:
1. Broken Access Control:
- כל endpoint חדש דורש authentication?
- יש IDOR? object IDs מ-URL נבדקים כשייכים ל-user המחובר?
- SSRF potential בבקשות HTTP חיצוניות?
2. Injection:
- SQL queries, parameterized? אין string concatenation?
- HTML rendering, escaped? אין unescaped user content?
- Command injection בshell calls?
3. Secrets ו-Data:
- hardcoded strings שנראים כsecrets?
- PII חדש ב-logs?
- Error handling חדש חושף stack traces?
4. Configuration:
- CORS headers חדשים, wildcard?
- Dependencies חדשות, npm audit לפני merge
לכל ממצא: [חומרה: CRITICAL/HIGH/MEDIUM/LOW], שורה מדויקת, הסבר קצר, תיקון מוצע.
Diff:
[הדבק git diff כאן]ה-stack הספציפי בשורה 2 קריטי, SQL injection ב-Python עם SQLAlchemy נראה שונה מ-Node.js עם pg. Claude יודע את ההבדל.
פרומפט 2, GitHub Action לSecurity Gate אוטומטי
הפרומפט הזה מיועד לצוותים שרוצים security review על 100% מה-PRs, בלי שמישהו יצטרך לזכור:
כתוב GitHub Action שרץ על כל PR ומריץ security pre-check:
1. npm audit, נכשל אם יש CVE בdependency (CRITICAL או HIGH)
2. gitleaks, סורק secrets ב-diff החדש
3. semgrep עם OWASP ruleset על ה-changed files בלבד
ה-action:
- מוסיף PR comment עם summary של הממצאים
- נכשל ב-CRITICAL ו-HIGH; warning בMEDIUM; pass בLOW
- exclude: node_modules, dist, .env.example
- רץ רק על PRs, לא על pushes ישירות ל-main
החברה: SaaS ב-Node.js, repo ב-GitHub, secrets ב-GitHub Secrets.זה security gate שעובד 24/7 ולא עולה שכר לאיש. בסטארטאפ ת"א עם 5 מפתחים, זה אומר שאף PR לא עובר בלי לפחות בדיקה בסיסית.
טעויות נפוצות שכדאי להכיר
טעות 1, Security checklist כtick-box: לסמן checkboxes בלי לחשוב על ה-implementation הספציפי. כל שורת קוד חדשה שמקבלת user input = שאלה ספציפית על validation. לא מספיק לשאול "יש validation?", יש לשאול "איזה validation בדיוק, ואיפה?"
טעות 2, דילוג על dependency check בPRs קטנים: PR שמוסיף npm package אחד מוסיף את כל ה-transitive dependencies שלו. הרצת npm audit לפני merge היא שורת קוד אחת שיכולה לחסוך incident. בSemgrep research 2025 נמצא שClaude מצא IDOR ב-22% מהמקרים, אבל SQL injection cross-file רק ב-5%. כלים אוטומטיים משלימים, לא מחליפים.
סיכום, מה לקחת מהשיעור הזה
- Security review הוא על כל PR, גם one-liners. רוב ה-IDORs נכנסים ב-PRs שנראים תמימים.
- OWASP Top 10:2025 שינה סדרי עדיפויות: Security Misconfiguration עלה ל-#2, Supply Chain חדש כ-#3.
- הפרומפט לClaude חייב לכלול stack ספציפי + רמת רגישות + checklist מובנה, בלי context תקבל הרבה false positives.
- Claude הוא complement לא replacement: 22% IDOR detection rate, 5% SQL injection cross-file. בנה GitHub Action שמשלב Claude + semgrep + npm audit + gitleaks.
- קוד עם IP ארגוני רגיש = API פרטי (Bedrock), לא claude.ai.
מקורות: Anthropic claude-code-security-review (GitHub) | Automate Security Reviews, Anthropic Blog | OWASP Top 10:2025
