به گزارش ایران نت، پژوهشگران امنیت سایبری شرکت Apiiro از یک ضعف امنیتی در ابزار برنامهنویسی مبتنی بر هوش مصنوعی Claude Code خبر دادهاند که میتواند باعث انتشار ناخواسته اطلاعات محرمانه کاربران در مخازن عمومی گیتهاب شود. بررسیهای این شرکت نشان میدهد فایلهای تنظیمات محلی این ابزار در موارد متعددی حاوی اطلاعات حساسی مانند رمز عبور پایگاه داده، توکنهای دسترسی به API و حتی اطلاعات ورود با سطح دسترسی روت بودهاند. این مشکل از نحوه ذخیره تأییدیههای اجرای خودکار دستورها ناشی میشود و میتواند اطلاعاتی را که قرار بوده فقط روی سیستم شخصی توسعهدهنده باقی بمانند، در معرض دسترسی عمومی قرار دهد.
ریشه باگ امنیتی Claude Code کجاست؟
Claude Code دستیار برنامهنویسی شرکت آنتروپیک است که به توسعهدهندگان کمک میکند وظایف مختلف مرتبط با کدنویسی را از طریق دستورات متنی انجام دهند. این ابزار میتواند برای اجرای دستورهای ترمینال، بررسی فایلها، تغییر کد و انجام برخی عملیات توسعه نرمافزار از کاربر اجازه بگیرد.
یکی از قابلیتهای این ابزار، امکان ذخیره تأییدیههای کاربر برای اجرای دوباره برخی دستورها است. به این ترتیب، اگر توسعهدهنده بخواهد یک دستور مشخص را در دفعات بعدی بدون درخواست مجدد مجوز اجرا کند، میتواند هنگام نمایش پیام تأیید، گزینه «Yes, and don’t ask again» را انتخاب کند؛ عبارتی به معنای «بله، و دیگر درباره این دستور سؤال نکن».
مشکل امنیتی از جایی آغاز میشود که انتخاب این گزینه بهصورت یک قاعده در فایل تنظیمات محلی با نام settings.local.json ذخیره میشود. این فایل در پوشه .claude در سیستم کاربر قرار دارد و برای نگهداری تنظیمات اختصاصی همان محیط استفاده میشود.
بر اساس بررسی پژوهشگران Apiiro، قاعده ذخیرهشده در برخی موارد بهصورت یک الگوی عمومی ثبت میشود؛ اما در موارد دیگر، خود دستور Shell همراه با تمام جزئیات آن بهطور مستقیم در فایل تنظیمات قرار میگیرد. اگر دستور حاوی اطلاعات محرمانه باشد، این اطلاعات نیز ممکن است بدون رمزگذاری و به شکل متن قابل خواندن در فایل باقی بمانند.
برای مثال، ممکن است یک دستور ترمینال شامل رمز عبور پایگاه داده، کلید دسترسی یک سرویس یا توکن احراز هویت باشد. در چنین شرایطی، اگر دستور کامل در فایل تنظیمات ذخیره شود، اطلاعات حساس نیز به بخشی از محتوای آن فایل تبدیل خواهند شد. بنابراین، مسئله فقط ذخیره شدن یک ترجیح ساده برای اجرای خودکار دستور نیست؛ بلکه ممکن است اطلاعاتی که برای دسترسی به زیرساختهای مهم استفاده میشوند نیز در همان فایل ثبت شوند.
چرا فایل تنظیمات میتواند وارد گیتهاب شود؟
در حالت عادی، ذخیره فایل تنظیمات محلی روی رایانه توسعهدهنده بهتنهایی به معنای افشای عمومی اطلاعات نیست. این فایل قرار است برای نگهداری تنظیمات اختصاصی کاربر استفاده شود و نباید به مخزن کد پروژه منتقل شود.
آنتروپیک در مستندات Claude Code توضیح داده است که فایل settings.local.json به فهرست سراسری Git Ignore کاربر اضافه میشود تا از ثبت تصادفی آن در مخازن Git جلوگیری شود. Git Ignore سازوکاری است که به توسعهدهندگان اجازه میدهد فایلها و پوشههای مشخصی را از فرایند ثبت تغییرات در یک مخزن مستثنا کنند.
با این حال، پژوهشگران Apiiro میگویند این محافظت در سطح مخزن اعمال نمیشود و همین موضوع میتواند در برخی سناریوها مشکلساز باشد. برای نمونه، اگر پروژه روی سیستم دیگری کپی شود یا یک پوشه معمولی بعداً به مخزن Git تبدیل شود، ممکن است تنظیمات محلی موردنظر دیگر تحت پوشش همان فهرست استثنا قرار نگیرد.
در چنین وضعیتی، فایل تنظیمات میتواند در فهرست فایلهای قابل ثبت قرار بگیرد و همراه سایر تغییرات پروژه به مخزن منتقل شود. اگر مخزن عمومی باشد، اطلاعات ذخیرهشده در فایل نیز ممکن است برای کاربران دیگر قابل مشاهده شود.
نکته نگرانکنندهتر در گزارش پژوهشگران این است که در برخی موارد، تغییرات مربوط به فایل تنظیمات بدون دخالت مستقیم کاربر در گیتهاب ثبت شدهاند. این موضوع نشان میدهد اتکا به این فرض که فایلهای محلی همیشه از مخزن دور میمانند، برای جلوگیری از نشت اطلاعات کافی نیست.
بیش از ۱۰۰ هزار فایل تنظیمات در مخازن عمومی
ابعاد بررسی Apiiro نشان میدهد این مسئله صرفاً به چند نمونه محدود یا یک پروژه خاص مربوط نمیشود. کارشناسان امنیتی این شرکت بیش از ۱۰۰ هزار مورد بارگذاری فایل تنظیمات محلی Claude Code را در مخازن عمومی گیتهاب شناسایی کردهاند.
از میان این موارد، حدود ۱۱۰۰ فایل متعلق به ۶۳ سازمان حاوی اطلاعات بسیار حساس بودهاند. این اطلاعات طیف متنوعی از دادههای محرمانه را شامل میشدهاند و از جمله موارد شناساییشده میتوان به رمزهای عبور پایگاه داده، توکنهای دسترسی به API و اطلاعات ورود با سطح دسترسی روت اشاره کرد.
اهمیت این اطلاعات از آن جهت است که هرکدام میتوانند در صورت سوءاستفاده، دسترسی به بخشهایی از زیرساخت دیجیتال یک سازمان را در اختیار افراد غیرمجاز قرار دهند. برای مثال، افشای رمز پایگاه داده ممکن است امکان دسترسی به اطلاعات ذخیرهشده را فراهم کند. توکن API نیز بسته به سطح دسترسی تعریفشده میتواند برای استفاده غیرمجاز از یک سرویس یا انجام عملیات به نام صاحب حساب به کار برود.
اطلاعات ورود روت نیز بهدلیل سطح بالای دسترسی اهمیت ویژهای دارد. حساب روت در بسیاری از محیطهای لینوکسی و سامانههای مشابه، اختیارات مدیریتی گستردهای در اختیار دارنده آن قرار میدهد. به همین دلیل، افشای چنین اطلاعاتی میتواند خطر جدیتری نسبت به انتشار یک تنظیم ساده یا اطلاعات عمومی پروژه ایجاد کند.
حذف فایل از گیتهاب همیشه برای رفع نشت اطلاعات کافی نیست
یکی دیگر از نکات مهم در گزارش Apiiro، باقی ماندن اطلاعات افشاشده در نسخههای مشتقشده از مخازن عمومی است. حتی اگر صاحب پروژه فایل حاوی اطلاعات محرمانه را از مخزن اصلی حذف کند، نسخههای فورکشده یا کپیهای ایجادشده از آن ممکن است همچنان اطلاعات قبلی را در خود داشته باشند.
فورک (Fork) در گیتهاب به ایجاد نسخهای مستقل از یک مخزن گفته میشود که معمولاً برای توسعه جداگانه یا مشارکت در پروژههای دیگر مورد استفاده قرار میگیرد. اگر یک فایل حساس پیش از حذف شدن در نسخه عمومی پروژه ثبت شده باشد، ممکن است در تاریخچه یا نسخههای کپیشده نیز باقی بماند.
به همین دلیل، حذف فایل از آخرین نسخه مخزن لزوماً به معنای پایان خطر نیست. اطلاعات محرمانهای که یکبار منتشر شدهاند، ممکن است در تاریخچه تغییرات، نسخههای دیگر پروژه یا نسخههای ذخیرهشده توسط اشخاص ثالث باقی بمانند.
در چنین شرایطی، اگر رمز عبور یا توکن دسترسی افشا شده باشد، صرف حذف آن از مخزن کافی نیست. سازمان یا توسعهدهنده باید اعتبارنامه افشاشده را باطل یا تعویض کند و دسترسیهایی را که ممکن است از طریق آن اطلاعات ایجاد شده باشند، مورد بررسی قرار دهد.
این مشکل از چه زمانی شناخته شده بود؟
بر اساس اطلاعات منتشرشده، نخستین گزارش خطای مرتبط با این مشکل در اوت ۲۰۲۵ ثبت شده بود. در آن گزارش و موارد مشابه، به شرایطی اشاره شده بود که فایل settings.local.json به فهرست Git Ignore اضافه نمیشد یا دستورهای حاوی اطلاعات حساس به فایل تنظیماتی دیگری منتقل میشدند که از محافظت مشابهی برخوردار نبود.
با وجود ثبت این گزارشها، موارد یادشده پس از ۶۰ روز عدم فعالیت بسته شدند. این موضوع اکنون با توجه به ابعاد افشای اطلاعات شناساییشده اهمیت بیشتری پیدا کرده است؛ زیرا نشان میدهد بخشی از خطرهای مربوط به نحوه ذخیره تنظیمات محلی پیشتر نیز مطرح شده بود.
البته بسته شدن گزارشهای خطا پس از دوره عدم فعالیت، بهتنهایی مشخص نمیکند که مشکل عمداً نادیده گرفته شده یا در آن زمان اطلاعات کافی برای ارزیابی ابعاد آن وجود نداشته است. آنچه از یافتههای جدید مشخص میشود، وجود موارد متعدد انتشار فایلهای تنظیمات و افشای اطلاعات حساس در تعدادی از آنها است.
واکنش تیم توسعه Claude Code و توصیه به کاربران
بوریس چرنی، از اعضای تیم توسعه Claude Code، اعلام کرده است که این تیم در حال بررسی راههایی برای جلوگیری از تکرار چنین اتفاقی است. او تأکید کرده که فایلهای تنظیمات محلی اساساً نباید در سیستم کنترل نسخه ثبت شوند.
چرنی همچنین استفاده از Auto Mode و ابزارهای اسکن اطلاعات حساس را بهعنوان اقدامهایی برای کاهش خطر مطرح کرده است. هدف از این توصیهها، کاهش نیاز به تأییدهای مکرر و شناسایی اطلاعات محرمانهای است که ممکن است ناخواسته در فایلهای پروژه یا مخازن کد قرار گرفته باشند.
با این حال، یافتههای پژوهشگران Apiiro نشان میدهد ابزارهای اسکن رایج نیز همیشه قادر به شناسایی تمام اطلاعات حساس نیستند. طبق گزارش این شرکت، ۲۱۵ مورد از اطلاعات محرمانه افشاشده حتی توسط ابزارهای شناختهشدهای مانند Gitleaks و TruffleHog شناسایی نشده بودند.
این موضوع اهمیت محدودیتهای ابزارهای امنیتی خودکار را نشان میدهد. اسکنرهای اطلاعات محرمانه معمولاً از الگوها و روشهای تشخیص مشخصی استفاده میکنند و ممکن است برخی رمزها، توکنها یا اطلاعاتی را که قالب غیرمعمولی دارند، شناسایی نکنند. بنابراین، نتیجه موفقیتآمیز یک اسکن بهتنهایی تضمین نمیکند که هیچ داده محرمانهای در مخزن وجود ندارد.
توسعهدهندگان برای کاهش خطر چه اقداماتی انجام دهند؟
تا زمانی که راهکار اصلاحی کامل برای این مشکل ارائه و وضعیت آن بهطور شفاف مشخص شود، توسعهدهندگان و سازمانهایی که از Claude Code استفاده میکنند بهتر است فایلهای تنظیمات محلی و نحوه ثبت آنها در مخازن Git را با دقت بیشتری بررسی کنند.
- بررسی فایل تنظیمات: فایل settings.local.json در پوشه .claude باید از نظر وجود رمز عبور، توکن API و سایر اطلاعات حساس بررسی شود.
- کنترل Git Ignore: اطمینان حاصل کنید فایلهای تنظیمات محلی در فهرست استثناهای مخزن قرار دارند و این محافظت در تمام محیطهای کاری مورد استفاده برقرار است.
- بررسی تاریخچه مخزن: فقط به فایلهای موجود در آخرین نسخه پروژه اکتفا نکنید و تاریخچه تغییرات را نیز برای یافتن اطلاعات افشاشده بررسی کنید.
- اسکن اطلاعات محرمانه: استفاده از ابزارهایی مانند Gitleaks و TruffleHog میتواند به شناسایی بخشی از اطلاعات حساس کمک کند، اما نباید تنها روش بررسی امنیتی باشد.
- تعویض اعتبارنامههای افشاشده: در صورت مشاهده رمز عبور یا توکن منتشرشده، آن را باطل و اعتبارنامه جدیدی ایجاد کنید. حذف فایل از مخزن بهتنهایی کافی نیست.
- محدود کردن دسترسیها: برای کلیدها و توکنهای دسترسی، فقط مجوزهای ضروری را تعریف کنید تا افشای احتمالی یک اعتبارنامه به دسترسی گستردهتر از نیاز منجر نشود.
اهمیت امنیت ابزارهای برنامهنویسی مبتنی بر هوش مصنوعی
ابزارهایی مانند Claude Code با هدف سادهتر کردن فرایند توسعه نرمافزار طراحی شدهاند و میتوانند در انجام وظایف مختلف، از اجرای دستورهای ترمینال تا تغییر ساختار پروژه، نقش فعالی داشته باشند. همین سطح از دسترسی باعث میشود نحوه ذخیره تنظیمات، مدیریت مجوزها و محافظت از اطلاعات محرمانه در آنها اهمیت ویژهای پیدا کند.
در محیطهای توسعه نرمافزار، دستورهای ترمینال ممکن است شامل اطلاعاتی باشند که برای اتصال به سرویسهای داخلی، پایگاههای داده یا زیرساختهای ابری استفاده میشوند. اگر این اطلاعات بهصورت ناخواسته وارد فایلهای قابل انتشار شوند، یک خطای ساده در مدیریت تنظیمات میتواند به مسئلهای امنیتی در سطح سازمان تبدیل شود.
پرونده اخیر نشان میدهد امنیت ابزارهای هوش مصنوعی برنامهنویسی فقط به کیفیت کدی که تولید میکنند محدود نیست. نحوه تعامل آنها با فایلهای محلی، ذخیره مجوزهای کاربر و ارتباط با سیستم کنترل نسخه نیز باید بهدقت بررسی شود. تا زمانی که اصلاحات فنی و راهکارهای پیشگیرانه بهطور کامل اجرا نشدهاند، توسعهدهندگان باید فایلهای تنظیمات و مخازن عمومی خود را با حساسیت بیشتری مدیریت کنند.
برای دنبال کردن تازهترین اخبار امنیت سایبری، ابزارهای هوش مصنوعی و آسیبپذیریهای نرمافزاری، به ایران نت مراجعه کنید.
“`