- شناسه CVE-2025-47906 :CVE
- N/A :CWE
- yes :Advisory
- منتشر شده: سپتامبر 18, 2025
- به روز شده: سپتامبر 18, 2025
- امتیاز: 6.5
- نوع حمله: Path Manipulation
- اثر گذاری: Information Disclosure
- حوزه: برنامه نویسی
- برند: Go standard library
- محصول: os/exec
- وضعیتPublished :CVE
- Yes :POC
- وضعیت آسیب پذیری: patch شده
چکیده
آسیبپذیری در تابع LookPath از بسته os/exec زبان Go زمانی رخ میدهد که متغیر محیطی PATH شامل مسیری به یک فایل اجرایی (بهجای دایرکتوری) باشد. در این شرایط، ورودیهای خاص مانند “”، “.” و “..” ممکن است بهجای خطا، بهطور غیرمنتظره مسیر همان فایل اجرایی را بازگرداند. این ضعف که در نسخههای پیش از 1.23.12 و 1.24.0 تا پیش از 1.24.6 وجود دارد، میتواند منجر به اجرای ناخواسته برنامههای مخرب یا پنهان ماندن اجرای دستورات از دید بررسیکنندگان کد شود.
توضیحات
آسیبپذیری CVE-2025-47906 در تابع LookPath از بسته os/exec کتابخانه استاندارد Go رخ میدهد. این تابع برای جستجوی مسیر کامل یک فایل اجرایی در متغیر محیطی PATH استفاده میشود. اگر PATH شامل مسیری باشد که خود یک فایل اجرایی و نه یک دایرکتوری است (برای مثال /tmp/malicious) و ورودیهایی مانند رشته خالی “”، نقطه “.” یا دو نقطه “..” به LookPath داده شود، تابع بهجای بازگرداندن خطای مورد انتظار (ErrNotFound) مسیر همان فایل اجرایی را باز می گرداند.
بهرهبرداری از این ضعف بهسادگی قابل خودکارسازی است؛ مهاجم میتواند با اسکریپتها یا ابزارهای خودکار، بهصورت لوکال یا در برخی سناریوها از راه دور (در صورت کنترل ورودی و PATH)، بدون تعامل کاربر و بدون نیاز به دسترسی اضافی، ورودیهای مخرب را به LookPath ارسال کند. برای مثال، اگر /bin/date در PATH باشد و ورودی “” داده شود، LookPath ممکن است /bin/date را بازگرداند و exec.Command آن را اجرا کند در حالی که رفتار صحیح، بازگرداندن خطا (ErrNotFound) است.
در ویندوز، این ضعف حتی بدون کنترل کامل PATH نیز قابل بهرهبرداری است. اگر در دایرکتوری والد یک المنت PATH، فایلی با نام همان المنت و یکی از پسوندهای PATHEXT (مانند .cmd یا .exe) وجود داشته باشد، فراخوانی (“”)LookPath میتواند به همان فایل اشاره کند. پیامدهای آسیبپذیری شامل تأثیر منفی محدود بر محرمانگی با افشای جزئی اجرای دستور و تأثیر بر در دسترسپذیری با اجرای ناخواسته فایل های اجرایی است. این ضعف بهویژه در برنامههایی ریسک بالایی دارد که ورودی کاربر را مستقیماً به LookPath میدهند یا PATH را از محیط ناامن دریافت می کنند. همچنین میتواند برای پنهان کردن اجرای دستورات مخرب از دید بررسی کنندگان کد یا ابزارهای تحلیل ایستا استفاده شود.
کد اثبات مفهومی (PoC) عمومی منتشر شده است که نشان میدهد چگونه با افزودن مسیر برنامه فعلی به PATH، (“”)LookPath و (“.”)LookPath بهطور غیرمنتظره مسیر همان برنامه را بازمی گرداند و اجرای ناخواسته رخ میدهد. این آسیبپذیری با اصلاح عملکرد LookPath و رد زودهنگام ورودیهای نامعتبر (“”، “.”، “..”) در نسخههای 1.23.12 و 1.24.6 بهطور کامل پچ شده است.
CVSS
| Score | Severity | Version | Vector String |
| 6.5 | MEDIUM | 3.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L |
لیست محصولات آسیب پذیر
| Versions | Product |
| affected from 0 before 1.23.12
affected from 1.24.0 before 1.24.6 |
os/exec |
لیست محصولات بروز شده
| Versions | Product |
| 1.23.12
1.24.6 |
os/exec |
استفاده محصول در ایران
در این جدول، تعداد صفحات ایندکسشده در گوگل با دامنه .ir که Go standard library را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.
| Approx. Usage in .ir Domain via Google
(Total Pages) |
Search Query (Dork) | Product |
| 500 | site:.ir “Go standard library” | Go standard library |
نتیجه گیری
این آسیبپذیری با شدت متوسط در کتابخانه استاندارد Go، امکان اجرای ناخواسته دستورات را از طریق دستکاری متغیر PATH و ورودیهای خاص تابع LookPath فراهم میکند و میتواند برای دور زدن مکانیزمهای امنیتی یا پنهان کردن عملکرد مخرب مورد سوءاستفاده قرار گیرد. با توجه به انتشار پچهای رسمی، اجرای اقدامات زیر برای جلوگیری از بهرهبرداری و کاهش سطح ریسک ضروری است:
- بهروزرسانی فوری: تمام پروژههای Go را به نسخههای 1.23.12، 1.24.6 یا بالاتر بهروزرسانی کنید. این اقدام، مؤثرترین و قطعیترین راهکار برای رفع آسیبپذیری است و باید در اولویت قرار گیرد. سایر اقدامات میتوانند به کاهش ریسک این آسیب پذیری و مقابله با حملات مشابه کمک کنند.
- اعتبارسنجی ورودی: پیش از فراخوانی LookPath، ورودیها را بررسی کنید و از پذیرش رشته خالی “”، “.” یا “..” جلوگیری نمایید.
- کنترل محیط PATH: از دریافت متغیر PATH از منابع ناامن (مانند ورودی کاربر) خودداری کرده و تنها از مسیرهای ثابت و معتبر استفاده کنید.
- استفاده از محیط ایزوله: برنامههای Go را در محیطهای ایزوله مانند gVisor یا Docker با PATH محدود اجرا کنید.
- نظارت و ثبت لاگ: اجرای دستورات خارجی را با ابزارهایی مانند strace یا auditd مانیتور کنید و لاگهای Command را با سطح جزئیات بالا ثبت نمایید.
- تست امنیتی: کد را با ابزارهای تحلیل ایستا مانند gosec یا staticcheck اسکن کنید تا استفاده ناامن از LookPath شناسایی شود. همچنین از Fuzzing ورودیهای LookPath بهره ببرید.
- آموزش توسعهدهندگان: تیمهای توسعه را درباره ریسکهای PATH و ورودیهای نامعتبر در os/exec آموزش دهید و استفاده از CommandContext با محدودیت زمانی را توصیه کنید.
اجرای این اقدامات، بهویژه بهروزرسانی سریع و اعتبارسنجی دقیق ورودیها، ریسک بهرهبرداری از این آسیبپذیری را بهطور چشمگیری کاهش داده و امنیت اجرای دستورات خارجی در برنامههای Go را بهصورت قابلتوجهی افزایش میدهد.
امکان استفاده در تاکتیک های Mitre Attack
Initial Access (TA0001)
این ضعف معمولاً در مسیر ورودی اولیه بهعنوان یک اکسپلویت مستقیم استفاده نمیشود، اما اگر اپلیکیشن Go متکی بر ورودی کاربر برای فراخوانی LookPath باشد، مهاجم میتواند با تزریق ورودیهای خاص (مثل “” یا “.”) رفتار اجرای برنامه را تغییر دهد و بهصورت غیرمستقیم سطح حمله ایجاد کند؛ مخصوصاً در سرویسهایی که از PATH ناشی از محیط ناامن برای اجرای فرمان استفاده میکنند.
Execution (TA0002)
LookPath در برخورد با ورودیهای نامعتبر مثل “”، “.” یا “..” بهجای خطا، به فایلهای موجود در PATH اشاره میکند و exec. Command همان فایل را اجرا میکند. این یعنی مهاجم میتواند اجرای غیرمنتظره، ناخواسته یا مخرب را بدون نیاز به دسترسی اضافی یا تعامل کاربر رقم بزند، مشروط به اینکه ورودی یا محیط PATH را کنترل کند.
Defense Evasion (TA0005)
اجرای غیرمنتظره ناشی از LookPath میتواند باعث شود دستورات مخرب به شکل طبیعی و قابلقبول جلوه کنند، چون مسیر اجرای فرمان ظاهراً معتبر بهنظر میرسد و ابزارهای تحلیل ایستا یا بررسیکنندگان کد ممکن است نتوانند تشخیص دهند که رفتار ناشی از ورودی نامعتبر بوده است. این قابلیت، امکان مخفیسازی بخشی از رفتار اجرایی را فراهم میکند.
Discovery (TA0007)
مهاجم ممکن است با آزمون مسیرهای مختلف روی PATH رفتار LookPath را ارزیابی کند تا بفهمد برنامه چگونه فرمان اجرا میکند، اما این تاکتیک در منابع عمومی بهعنوان تاکتیک رسمی گزارش نشده است و حالت ثانویه دارد.
Impact (TA0040)
اثرگذاری اصلی در حوزه اجرای ناخواسته فرمانها، تغییر جریان عادی برنامه و ایجاد اختلال در دسترسپذیری است. تأثیر بر محرمانگی محدود است (نمایش غیرمستقیم اینکه چه فرمانی اجرا شده) اما در یک محیط misconfigured میتواند به اجرای برنامههای مخرب یا رفتارهایی منجر شود که جریان سیستم را مختل کنند.
منابع
- https://www.cve.org/CVERecord?id=CVE-2025-47906
- https://www.cvedetails.com/cve/CVE-2025-47906/
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-47906
- https://vuldb.com/?id.319192
- https://go.dev/cl/691775
- https://go.dev/issue/74466
- https://groups.google.com/g/golang-announce/c/x5MKroML2yM
- https://pkg.go.dev/vuln/GO-2025-3956
- http://www.openwall.com/lists/oss-security/2025/08/06/1
- https://nvd.nist.gov/vuln/detail/CVE-2025-47906