PTrace یا Proccess Trace در کلود لینوکس چیست؟
Ptrace یا Process Trace یک تابع برای عیب یابی در کلود لینوکس است که اجازه می دهد.همچنین به ما این امکان را می دهد که پراسس های Memory را تغییر و ثبت کنیم.کاربرانی که دسترسی روت را ندارند میتوانند از ptrace() برای گرفتن دسترسی بالاتر، از نرم افزار های در حال اجرا سوءاستفاده کنند پس فعال بودن آن بر روی یک سرور هاست که در اشتراک کاربران است می تواند خطرناک باشد.به مهاجم اجازه می دهد تا بتواند به تابع setuid دسترسی داشته باشد و با استفاده از ptrace یا سایر فانکشن ها دستورات خود را با دسترسی روت اجرا کند و تغییراتی در نتیجه اجرای پراسس ها ایجاد کند.
راهکار غیر فعال کردن PTrace در کلودلینوکس
باید در نظر داشته باشید که به صورت پیش فرض ptrace() در کلود لینوکس فعال می باشد و مقادیر آن به صورت زیر تنظیم شده است:
kernel.user_ptrace = 1
kernel.user_ptrace_self = 1
در اینجا ما از kernel.user_ptrace استفاده می کنیم برای غیر فعالسازی PTRACE_ATTACH، و از kernel.user_ptrace_self استفاده می کنیم برای غیر فعال سازی PTRACE_TRACEME، پس بریم که اصل کار رو شروع کنیم.ما باید مقدار هر دو مورد رو به 0 تغییر دهیم تا غیر فعال شوند برای اینکه باید از طریق sysctl اقدام کنیم. با استفاده از دستور زیر در ویرایشگر nano فایل /etc/sysctl.conf را باز می کنیم:
nano /etc/sysctl.conf
مقادیر را به صورت زیر قرار می دهیم:
## CL. Disable ptrace for users
kernel.user_ptrace = 0
kernel.user_ptrace_self = 0
##
و بعد از طریق دستور زیر تغییراتی که داده ایم را اعمال می کنیم:
sysctl -p