דלגו לתוכן
CYBER WATCH

Claude Code שומר סיסמאות שאישרתם בקובץ הגדרות, ואלפים מהן חשופים ב-GitHub

מחקר של Apiiro מצא 1,122 עותקים ציבוריים של settings.local.json עם סיסמה או מפתח פעיל לכאורה. הסיבה: הכפתור Yes, and don't ask again.

Claude Code שומר סיסמאות שאישרתם בקובץ הגדרות, ואלפים מהן חשופים ב-GitHub

TL;DR בקצרה

  • כשמאשרים פקודה ב-Claude Code עם Yes, and don't ask again, הכלי שומר את הפקודה המלאה, כולל סיסמאות שבתוכה.
  • Apiiro מצאה 104,185 עותקים ציבוריים של settings.local.json ב-GitHub, ו-1,122 מהם מכילים סוד אמיתי.
  • מחיקת הקובץ לא מספיקה: הסודות נשארים בהיסטוריית git ובמאגרים מפוצלים, ולכן קודם מחליפים סיסמאות.
  • Anthropic אמרה שהיא בודקת פתרון, כולל סריקת סודות בסיסית.

חברת האבטחה Apiiro פרסמה מחקר שמראה שהקובץ settings.local.json של Claude Code חושף ב-GitHub סיסמאות, טוקנים ומפתחות ענן של מפתחים. החוקרים מצאו 1,122 עותקים ציבוריים של הקובץ שמכילים לפחות סוד אחד. חברה אחת שקיבלה התראה אישרה שהמפתח שלה היה פעיל.

איך סיסמה מגיעה ל-settings.local.json

Claude Code מבקש אישור לפני שהוא מריץ פקודת מערכת. אחת האפשרויות היא Yes, and don't ask again. מי שבוחר בה חוסך את השאלה בפעם הבאה. אבל הכלי מוסיף כלל הרשאה לקובץ .claude/settings.local.json שבתיקיית הפרויקט.

לפעמים הכלל הוא תבנית כללית, למשל npm test. לפעמים הוא הפקודה המדויקת, מילה במילה. אם בפקודה הזו הופיעה סיסמה למסד נתונים או טוקן של API, גם היא נכנסת לכלל. הכלי מעתיק אותה בטקסט גלוי. לפי Apiiro, זו התנהגות של הכלי עצמו ולא של מודל מסוים. החוקרים שחזרו אותה גם עם Opus 5.5 ו-Fable 5.1.

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

מה Apiiro מצאה במאגרים הציבוריים

החוקרים סרקו את GitHub הציבורי בתחילת נובמבר. הם מצאו 104,185 עותקים של settings.local.json ב-103,617 מאגרים. בכ-1.1% מהם, 1,122 קבצים, יש לפחות סוד אמיתי אחד. בסך הכול החוקרים ספרו 1,379 סודות שונים.

מעל שליש מהסודות פותחים גישה ישירה למסד נתונים. ברשימה 379 סיסמאות למסדי נתונים ו-122 מפתחות שירות של Supabase. יש גם 43 פרטי התחברות SSH לשרתים ציבוריים. לצדם 42 טוקנים של GitHub, GitLab ו-npm, ו-23 מפתחות AWS.

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

נתון מטריד במיוחד: החוקרים בדקו 1,105 מאגרים. ב-539 מהם, commit שבו Claude רשום ככותב שותף שינה את הקובץ. החוקרים מסיקים מכך שבמקרים רבים הסוכן עצמו הכניס את הסוד למאגר.

למה מחיקת settings.local.json לא פותרת את הבעיה

מחיקת הקובץ מהפרויקט לא מוחקת את העבר. בגרסאות קודמות של הקובץ מצאו החוקרים עוד 734 סודות ב-509 מאגרים. בנוסף, 211 עותקים מפוצלים (forks) של 74 מאגרים מחזיקים את אותם סודות. כשסופרים גם את הקובץ המשותף settings.json ותמלילי שיחות של סוכנים, הסכום מגיע ל-2,539 סודות ב-1,994 מאגרים.

גם כלי הסריקה הנפוצים מפספסים. gitleaks זיהה 564 מתוך 1,122 הקבצים, ו-TruffleHog זיהה 643. אף אחד מהם לא זיהה 215 קבצים. הסיבה פשוטה: הכלים מחפשים מפתחות בפורמט מוכר. סיסמה שמופיעה בתוך פקודה, למשל אחרי mysql -p, נראית להם כמו מילה רגילה.

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

מה Anthropic אומרת

משתמשים דיווחו על ההתנהגות הזו ב-GitHub כבר מאוגוסט 2025. לפי Apiiro, אף דיווח לא קיבל תגובה מ-Anthropic, ובוט סגר את רובם בגלל חוסר פעילות. אחרי פרסום המחקר הגיב Boris Cherny, שמוביל את Claude Code. הוא כתב ב-Hacker News שהחברה בודקת מה אפשר לעשות. לדבריו, סריקת סודות בסיסית היא אחד הכיוונים שייבדקו. עד שיגיע תיקון, האחריות נשארת אצל המפתחים.

מה זה אומר עבורכם

  • חפשו בארגון ה-GitHub שלכם את .claude/settings.local.json ואת .claude/settings.json. בדקו גם את היסטוריית git, גם אם הקובץ כבר לא קיים.
  • מצאתם סוד? החליפו מיד את הסיסמה או המפתח, ורק אחר כך נקו את המאגר.
  • הסירו את הקובץ מהמעקב עם git rm –cached .claude/settings.local.json. הוסיפו אותו ל-.gitignore של הפרויקט עצמו.
  • פתחו את הקובץ גם במחשב שלכם ומחקו כל כלל שמכיל סיסמה. אל תקלידו סודות בתוך פקודות. השתמשו במשתנה סביבה כמו $DB_URL.
  • אשרו תבניות כמו Bash(npm run:*) במקום פקודות בודדות. צוותי אבטחה: הוסיפו את תיקיות הסוכנים לסריקת הסודות ב-CI.

מקורות והרחבה

  1. Coding Agents Copy Your Secrets to a Hidden File. Thousands Are on GitHubApiiro
  2. Claude Code settingsAnthropic
  3. Claude Code's "Don't Ask Again" File Exposes Passwords and Keys in 1,122 Public Copies on GitHubThe Hacker News

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

מצאתם טעות? דווחו לנו
עקבו אחרי GEEKLIK

MORE FROM CYBER WATCH

לכל הכתבות בסייבר ואבטחה