TimThumb و باز هم یک باگ امنیتی خطرناک
گرچه از روزهایی که متوجه شدیم نباید هرگز از اسکریپت تغییر سایز تصاویر TimThumb برای تغییر اندازه ی تصاویر در قالب استفاده کنیم، زمان بسیار بسیار زیادی گذشته است اما به نظر میرسد که TimThumb به این راحتی ها دست بردار ما نیست. شخصا فکر میکردم با این همه باگ و انواع ناسازگاری که تیم تامب در سرور های مختلف از خود نشان میدهد و با این همه خطرات امنیتی، تا امروز تقریبا همه ی طراحان قالب وردپرس و نویسندگان برخی از افزونه ها، دست از سر این افزونه برداشته اند اما متاسفانه اصلا اینطور نیست. علیرقم اینکه مدتهاست خطرات استفاده از این افزونه به همه گوشزد شده و اینکه در حال حاضر سایت های معتبری مثل ThemeForest اصلا اجازه نمیدهند چنین اسکریپتی در قالب هایشان به کار برود، اما باز هم عده ای از طراحان قالب و شاید مدیران سایت ها، دست از سر این اسکریپت که ضررش بیشتر از سودش است بر نمیدارند.
از این مقدمه چینی ها که بگذریم، 3 روز پیش (25 ژوئن 2014) وبسایت امنیتی sucuri اعلام کرد که یک باگ امنیتی بسیار خطرناک در اسکریپت پیدا شده است که به هکر ها اجازه میدهد به سادگی به فایلهای روی هاست شما دسترسی پیدا کرده و هر چیزی که دوست دارند را در سایت شما تغییر دهند و به طور کلی، کنترل همه چیز را به دست بگیرند. این باگ امنیتی که از ویژگی WebShot در تیم تامب بهره میگیرد به سادگی میتواند کنترل کامل سایت شما را در اختیار افراد تخریبگر و سودجو قرار دهد. به عنوان مثال به url های زیر توجه کنید :
1 2 3 | http://vulnerablesite.com/wp-content/plugins/pluginX/timthumb.php?webshot=1&src=http://vulnerablesite.com/$(rm$IFS/tmp/a.txt) http://vulnerablesite.com/wp-content/plugins/pluginX/timthumb.php??webshot=1&src=http://vulnerablesite.com/$(touch$IFS/tmp/a.txt) |
در url اول، با استفاده از دستور rm یک فایل را حذف کرده ایم و در url دوم با دستور touch یک فایل در سایت مورد حمله، ایجاد کرده ایم. طبعا استفاده از این باگ به این دو دستور محدود نیست و دستوراتی که میتوان در اینجا استفاده کرد بسیار گسترده و خطرناک تر از دو دستور ذکر شده هستند.
اگر از TimThumb استفاده میکنید …
اگر سایت شما در قالب خود یا در هر یک از افزونه هایش از این اسکریپت استفاده کرده باشد لازم است که با مراجعه به فایل مربوط به این اسکریپت (معمولا timthumb.php) اطمینان حاصل کنید که ویژگی WebShots غیر فعال باشد. مثلا در کد زیر مقدار WEBSHOTS را برابر false قرار داده و این امکان را غیر فعال کرده ایم.
1 | define (‘WEBSHOT_ENABLED’, false); |
و راه حل منطقی شما …
لطفا اگر طراح هستید، یا برای وردپرس پلاگین مینویسید و … همین امروز دست از سر TimThumb بردارید و به سراغ تابع استاندارد و بسیار خوب add_image_size که مدتهاست در کتابخانه وردپرس وجود دارد بروید. به این شکل یک بار برای همیشه خود را از شر هرچه باگ مسخره که از تیم تامب قسمت شما شده، خلاص خواهید شد و زندگی هم خیلی شیرین تر میشود.
لطفا این خبر را کاملا جدی بگیرید و در صورتی که از timthumb استفاده میکنید همین حالا برای رفع این مشکل اقدام نمایید.
مرسی من از سایت شما خیلی یاد گرفتم!
خوشحالم که از مطالب رضایت داشتید.