متغیرهایی هستند که توسط سیستمعامل، شِل یا برنامهها ذخیره میشوند و اطلاعات مهمی مانند مسیرها، تنظیمات، شناسهها و متغیرهای پیکربندی را در خود نگه میدارند. این متغیرها معمولاً خارج از کد برنامه ذخیره میشوند تا توسعهدهندگان مجبور نباشند مقادیر حساس را داخل کد قرار دهند. برای مثال، اطلاعاتی مثل Token ها، API Keyها، رمزهای پایگاه داده، مسیر فایلها، تنظیمات کاربری، و پارامترهای سرویسها در قالب Environmental Variable ذخیره میشود.
مزیت اصلی این روش، جداسازی کد از تنظیمات و امکان تغییر سریع مقادیر بدون نیاز به دستکاری برنامه است. اما این ساختار یک ریسک بزرگ امنیتی دارد: اگر مهاجم به محیط سیستم دسترسی پیدا کند، میتواند این متغیرها را مشاهده یا سرقت کند. به همین دلیل Environmental Variables یکی از اهداف رایج در حملات APT، مهاجمان ابری (Cloud Attackers) و بدافزارهای مدرن هستند.
بررسی ۵ نمونه حمله بزرگ و شناختهشده جهانی که در آنها Environmental Variables نقش مستقیم یا غیرمستقیم در موفقیت حمله داشتهاند.
۱) حمله SolarWinds (SUNBURST) – سوءاستفاده از Environment Variables برای مخفیسازی رفتار و فرار از تحلیل
حمله SolarWinds که در سال ۲۰۲۰ کشف شد، یکی از پیچیدهترین عملیاتهای APT تاریخ بود که به صدها سازمان دولتی آمریکا نفوذ کرد. در این حمله، Backdoor موسوم به SUNBURST از Environment Variables برای تصمیمگیری در مورد فعال شدن، نوع رفتار، و مکانیزم فرار از تحلیل استفاده میکرد.
مهاجمین برای جلوگیری از شناسایی در Sandboxes و Endpoint Security، رفتار بدافزار را به متغیرهای محیطی وابسته کرده بودند:
اگر Environment Variableهای مربوط به ابزارهای تحلیل وجود داشت → بدافزار خاموش میماند.
اگر کامپیوتر در محیط Domain معتبر بود → Payload فعال میشد.
SUNBURST از «USERNAME»، «COMPUTERNAME»، و «PROCESSOR_ARCHITECTURE» برای گرفتن fingerprint امنیتی سیستم استفاده میکرد.
این تکنیک باعث شد بدافزار در آزمایشگاهها و محیطهای sandbox رفتار متفاوتی داشته باشد و بسیاری از سیستمهای تحلیل نتوانند شاخصهای واقعی حمله را ثبت کنند.
۲) Log4Shell (CVE-2021-44228) – سوءاستفاده از Environment Variables در JNDI Lookup
در حمله تاریخی Log4Shell، مهاجمان از قابلیت Log4j برای resolve کردن رشتههای حاوی ${env:...} سوءاستفاده کردند. این یک نقطهضعف بسیار خطرناک بود زیرا Log4j اجازه میداد از طریق رشتههای Log، Environment Variables سرور بازیابی شوند.
با استفاده از Payloadهایی مثل:
${env:AWS_SECRET_ACCESS_KEY}
${env:DB_PASSWORD}
${env:JAVA_HOME}
مهاجم میتوانست اطلاعات بسیار حساسی را استخراج کند. بسیاری از کسبوکارها (بهخصوص Cloud) رمزهای بسیار مهمی را در Environment Variable نگه میداشتند، و Log4Shell این متغیرها را بدون نیاز به کد اضافی لو میداد.
در ادامه حملات پیشرفتهتری انجام شد که:
ابتدا Environment Variables را استخراج کردند
سپس براساس آنها exploit chain بعدی را تنظیم نمودند
مثلاً اگر KUBERNETES_SERVICE_HOST وجود داشت → حمله به K8s ادامه پیدا میکرد
۳) حملات Kubernetes / Docker Breakouts – سوءاستفاده گسترده از ENV برای دسترسی به توکنها
در حملات گستردهای که علیه Kubernetes و Docker رخ داده، یکی از رایجترین تکنیکها سوءاستفاده از Environment Variables بوده است.

در سالهای ۲۰۱۹ تا ۲۰۲۳، چندین موج حملات بزرگ گزارش شد که از طریق استخراج ENV VARIABLES در کانتینرها انجام شده بود:
K8S_SERVICE_ACCOUNT_TOKEN
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
GCP_SERVICE_ACCOUNT
DATABASE_URL
REDIS_PASSWORD
مهاجم با اجرای دستورات ساده زیر میتوانست کل توکنهای سرویس را بدست آورد:
printenv
env | grep KEY
cat /proc/1/environ
حمله مشهور Tesla Kubernetes Breach نیز دقیقاً از این روش استفاده کرده بود. یک image اشتباه در K8s توکن AWS را داخل Environment قرار داده بود و مهاجم توانست به هزاران سرور تسلا دسترسی پیدا کند.
این حمله نشان داد که قرار دادن اسرار امنیتی در ENV VARIABLES یک ضدالگوی بسیار خطرناک است.
۴) حمله مشهور Apache Struts / Equifax Breach – استفاده از ENV برای شناسایی سیستم هدف
در حمله Equifax، مهاجمان از آسیبپذیری Apache Struts S2-052 استفاده کردند. این آسیبپذیری اجازه میداد مهاجم روی سرور:
دستورات سیستم عامل اجرا کند
Environment Variables را استخراج کند
مهاجمین ابتدا با اجرای دستوراتی مانند:
env
set
printenv
اطلاعات حیاتی شامل:
مسیرهای حیاتی سرور
نسخه جاوا
دسترسیهای سیستم
توکنهای سرویس
پیکربندی دیتابیس
را بدست آوردند و سپس زنجیره حمله را کامل کردند.
اگر ENV حساس در آن سیستم ذخیره نمیشد، حمله Equifax تا این حد عمیق و مخرب نبود. این حمله نشان داد که مهاجمان از ENV بهعنوان مرحله Recon اولیه استفاده میکنند.
۵) حملات APT0x / بدافزارهای Python RAT – استفاده از ENV برای تشخیص Sandbox و تغییر رفتار (Evasion)
بسیاری از APTهای مدرن از Environmental Variables برای Evasion استفاده میکنند. مخصوصاً Backdoorهای مبتنی بر Python مانند:
Snake / Turla Framework
APT29 Python Loader
MuddyWater Python Implants
Lazarus Python Stagers
این بدافزارها با کدهایی مثل:
if "VBOX" in os.environ.get("PATH", ""):
exit()
if os.environ.get("USERNAME") in ["sandbox", "test", "malware"]:
exit()
یا:
if os.environ.get("APPDATA") is None:
exit()
تشخیص میدهند که سیستم:
در Sandbox است
کاربر جعلی دارد
ساختار PATH طبیعی نیست
حافظه و CPU کم است
در نتیجه، Payload فعال نمیشود.
این تکنیک با نام Environmental-based Anti-Analysis شناخته میشود و در بسیاری از حملات APT واقعی مشاهده شده است.