نشت گسترده رمزهای عبور و کلیدهای API در مخازن عمومی گیتهاب به دلیل عملکرد Claude Code
Claude Code's “Don't Ask Again” File Exposes Passwords and Keys in 1,122 Public Copies on GitHub
ابزار برنامهنویسی هوش مصنوعی Claude Code به دلیل ذخیره دستورات حاوی اطلاعات حساس در فایلهای تنظیمات محلی، باعث نشت بیش از ۲۵۰۰ رمز عبور و کلید امنیتی در مخازن عمومی گیتهاب شده است. این مشکل زمانی رخ میدهد که کاربران گزینه «Don't ask again» را انتخاب میکنند و ابزار، دستورات کامل شامل اطلاعات حساس را به صورت متن ساده ذخیره میکند.
جزئیات فنی و نحوه نشت اطلاعات
ابزار Claude Code برای مدیریت دسترسیها، از فایلی به نام .claude/settings.local.json استفاده میکند. هنگامی که کاربر دستوری را تأیید کرده و گزینه «Yes, and don't ask again» را انتخاب میکند، این ابزار دستور مذکور را به صورت دقیق و کلمه به کلمه در این فایل ذخیره میکند تا در دفعات بعدی بدون پرسش اجرا شود. اگر دستور شامل رمز عبور یا کلید API باشد، این اطلاعات حساس نیز به صورت متن ساده در فایل ذخیره میشوند.
اگرچه Claude Code تلاش میکند با افزودن این فایل به تنظیمات جهانی git (global excludes) از کامیت شدن آن جلوگیری کند، اما این محافظت تنها در سیستم کاربر محلی اعمال میشود و برای فایلهایی که قبلاً کامیت شدهاند یا در مخازن فورک شده وجود دارند، کارایی ندارد. علاوه بر این، Claude Code هرگز این فایل را به .gitignore پروژه اضافه نمیکند، بنابراین امنیت فایل با پروژه منتقل نمیشود.
یافتههای تحقیقاتی Apiiro
شرکت امنیتی Apiiro با بررسی مخازن عمومی گیتهاب، ۱,۱۲۲ کپی از فایل .claude/settings.local.json را شناسایی کرده که حداقل حاوی یک راز (Secret) هستند. در مجموع، ۲,۵۳۹ مورد اطلاعات حساس شامل رمزهای عبور دیتابیس، کلیدهای AWS، و توکنهای GitHub، GitLab و npm در ۱,۹۹۴ مخزن یافت شده است. این نشت شامل ۶۳ سازمان مختلف از جمله شرکتهای نرمافزاری است.
تحقیقات نشان میدهد که ابزارهای اسکنر امنیتی رایج مانند gitleaks و TruffleHog در شناسایی این نشتها ضعیف عمل میکنند، زیرا بسیاری از این موارد رمزهای عبوری هستند که در میان دستورات خط فرمان قرار گرفتهاند و با فرمتهای استاندارد کلیدهای امنیتی متفاوتاند.
نکتههای کلیدی
- نشت ۲,۵۳۹ کلید امنیتی و رمز عبور در ۱,۹۹۴ مخزن گیتهاب.
- ذخیره دستورات حاوی اطلاعات حساس به صورت متن ساده در فایل .claude/settings.local.json.
- عدم کارایی اسکنرهای امنیتی متداول در شناسایی رمزهای عبور جاسازی شده در دستورات.
- بیاثر بودن حذف فایل از پروژه به دلیل باقی ماندن اطلاعات در تاریخچه گیت (git history) و فورکها.
- گزارشهای قبلی کاربران در مورد این باگ توسط رباتهای Anthropic بدون اقدام موثر بسته شدهاند.
چه باید کرد
- چرخش (Rotate) فوری تمام رمزهای عبور، توکنها و کلیدهایی که تاکنون در این فایلها ذخیره شدهاند.
- جستجوی فایلهای .claude/settings.local.json و .claude/settings.json در تاریخچه گیت تمام مخازن سازمان.
- حذف فایل از ردیابی گیت با دستور git rm --cached .claude/settings.local.json و افزودن آن به .gitignore.
- استفاده از متغیرهای محیطی (مانند $DB_URL) به جای وارد کردن مستقیم اطلاعات حساس در دستورات.
- افزودن پوشههای مربوط به ابزارهای هوش مصنوعی (مانند .claude/، .cursor/ و غیره) به لیست اسکنرهای امنیتی CI/CD و pre-commit.