ferret-scan: شکار دادههای حساس قبل از لو رفتن
خلاصهٔ کاملتر
ferret-scan یه CLI تکباینری نوشتهشده با Go از awslabsه که PII، سکرتها و نشانگرهای مالکیت فکری رو تو فایلها و استریمها پیدا میکنه و بعد همونجا ماسکشون میکنه. مدل ذهنیش تو مستنداتش روشنه: دادههای حساس از درزهای بین سیستمها بیرون میزنن — یه شماره تأمین اجتماعی تو یه خط لاگ، یه کلید AWS تو یه دیف، یه ترنسکریپت پشتیبانی که رو S3 آرشیو شده — و این ابزار همون کنترلیه که جلوی اون درزها میذاری. هیچ دادهای هم از هاست بیرون نمیره.
دو ویژگی متمایزش redaction و امتیازدهیه. ماسککردن بهطور پیشفرض format-preserving انجام میشه؛ یعنی شکل داده سر جاش میمونه تا تستها، لاگپایپلاینها و ابزارهای پاییندست نشکنن. سه استراتژی داره: simple، format_preserving و synthetic که مقادیر جعلیِ واقعنما میسازه و برای ساخت دیتاست تست به کار میاد. دروازهٔ stdin هم بایتهای ماسکشده رو به stdout و یافتهها رو به stderr میده، پس تو هر pipe یونیکسی یا استپ CI جا میشه.
echo "card 5500-0000-0000-0004 from jordan@example.com" | ferret-scan --stdin --enable-redactionامتیازدهی context-awareه، نه صرفاً regex: یه شمارهٔ کارت تو یه سند مالی امتیاز بالاتری از همون رقمها تو یه fixture تست میگیره، چون موتور بر اساس نوع سند و دامنهٔ اطرافش وزنها رو دوباره تنظیم میکنه. یافتهها تو سه باند میشینن: HIGH (۹۰ تا ۱۰۰)، MEDIUM (۶۰ تا ۸۹) و LOW (۰ تا ۵۹).
نوزده ولیدیتور داره و هرکدوم برای یه چیز ساخته شده: کارت اعتباری با اعتبارسنجی Luhn و فیلتر الگوهای تست، سکرتها با تحلیل انتروپی و بیش از ۴۰ الگو (کلید AWS، توکن گیتهاب، Stripe و...)، شماره تأمین اجتماعی با درک زمینهٔ HR و مالیات و سلامت، حساب بانکی با چکسام ABA و IBAN، کدهای OTP و بازیابی، شناسههای پزشکی، پاسپورت، VIN، منابع کلاد و متادیتای EXIF.
رویکردش «آفلاین و قابلتوضیح»ه: فلگ --explain به هر یافته یه دلیل به زبان ساده، یه verdict (واقعی/تستی/نامطمئن) و یه پیشنهاد دلیلِ suppression میچسبونه، و کل فرایند قطعیه — نه شبکه، نه LLM. مقادیر پیداشده هم بهطور پیشفرض مخفی میمونن تا گزارش رو بشه بیخطر تو تیکت پیست کرد؛ برای دیدنشون باید --show-match بدی.
برای جاگذاری تو خط لولهٔ کار، خروجی رو با فرمتهای sarif، gitlab-sast و junit میده که مستقیم به GitHub code scanning، ریپورت SAST گیتلب و داشبوردهای تست وصل میشن. hook آمادهٔ pre-commit، ایمیج داکر حدود ۵ تا ۱۰ مگابایت، پکیج pip و tap هومبرو هم داره و رابط وبش پیشفرض به 127.0.0.1 بایند میشه با محافظت CSRF و هدرهای CSP.
اگه بخوای درونبرنامهای استفاده کنی دو پکیج Go جدا هست: pkg/scan برای تشخیص (روی متن یا فایل، بیش از ۹۰ نوع فایل) و pkg/redact برای تشخیص و ماسک در یه فراخوانی با یه Engine قابلاستفادهٔ مجدد و امن برای استفادهٔ همزمان. رکورد ممیزی خروجی payload-freeه — فقط تعداد و حجم و زمان، هیچوقت خود بایتهای حساس — و همین باعث میشه بشه یه سرویس ماسککردن ساخت که هیچوقت دادهٔ حساس رو رو دیسک یا تو لاگ نمینویسه.
نکات کلیدی:
- تکباینری Go، بدون وابستگی رانتایم و کاملاً آفلاین؛ هیچ دادهای از هاست خارج نمیشه
- ماسککردن format-preserving بهعلاوهٔ حالت synthetic برای ساخت دیتاست تست
- امتیازدهی context-aware با سه باند HIGH، MEDIUM و LOW
- نوزده ولیدیتور از کارت و سکرت و SSN تا VIN و متادیتای EXIF
- خروجی sarif و gitlab-sast و junit برای اتصال به CI؛ hook آمادهٔ pre-commit
- دو پکیج Go برای استفادهٔ درونبرنامهای با رکورد ممیزی بدون payload




