جزئیاتی در مورد یک نقص امنیتی تازه پچ شده با شدت بالا در برنامه شورتکات های اپل (Apple Shortcuts) منتشر شده است که میتواند اجازه دسترسی به اطلاعات حساس بر روی دستگاه را برای یک شورتکات، بدون رضایت کاربران فراهم آورد.
این آسیب پذیری که با شناسه CVE-2024-23204 دنبال میشود (امتیاز CVSS: 7.5)، توسط اپل در بیست و دوم ژانویه 2024 با انتشار نسخههای iOS 17.3، iPadOS 17.3، macOS Sonoma 14.3 و watchOS 10.3 برطرف شده است.
سازنده آیفون در توصیه ای اذعان داشت که “یک شورتکات اپل ممکن است بدون اینکه از کاربر خواسته شود، بتواند از دادههای حساس با اقدامات خاصی استفاده کند”.
Apple Shortcuts (یا شورتکات های اپل) یک برنامه اسکریپت نویسی است که به کاربران اجازه میدهد، گردش کار شخصی سازی شده (معروف به ماکروها) را برای اجرای وظایف خاص در دستگاه خود ایجاد نمایند. این برنامه به طور پیش فرض روی سیستم عاملهای iOS، iPadOS، macOS و watchOS نصب میشود.
Jubaer Alnazi Jabin، محقق امنیتی Bitdefender که باگ Shortcuts (شورتکات های اپل) را کشف و گزارش نموده است، خاطرنشان کرد که میتوان از آن برای ایجاد یک شورتکات مخرب استفاده نموده که بتواند سیاست های شفافیت، رضایت و کنترل (TCC[1]) را دور بزند.
TCC یک فریمورک امنیتی اپل میباشد که برای محافظت از دادههای کاربر در برابر دسترسی غیرمجاز بدون درخواست مجوزهای اولیه طراحی شده است.
این نقص به طور خاص، ریشه در یک فرآیند شورتکات به نام «Expand URL» دارد که میتواند URLهایی را که با استفاده از یک سرویس کوتاه کننده URL مانند t.co یا bit.ly کوتاه شدهاند گسترش دهد، در حالی که پارامترهای ردیابی UTM را نیز حذف می نماید.
اشاره به این نکته ضروری است که امکان انتقال دادههای کدگذاری شده با Base64 برای یک عکس به یک وب سایت مخرب با استفاده از این قابلیت فراهم شده است.
این روش شامل انتخاب هرگونه داده حساس (عکسها، مخاطبین، فایلها و دادههای کلیپ بورد) در شورتکاتها، وارد کردن آن، تبدیل آن با استفاده از گزینه کدگذاری base64 و در نهایت ارسال آن به سرور مخرب است.
دادههای استخراج شده سپس با استفاده از یک برنامه Flask به عنوان یک تصویر در سمت مهاجم ذخیره میشود و راه را برای سوء استفاده و اکسپلویت بعدی هموار میسازد. این رویکرد ظریف ماهیت پیچیده آسیبپذیری را برجسته میکند و بر نیاز به اقدامات امنیتی قوی برای محافظت در برابر چنین اکسپلویتهایی تأکید میکند.
# Endpoint to receive and save Base64-encoded image, overwriting the existing file
@app.route('/', methods=['GET'])
def upload_image():
# Get the Base64-encoded image from the query parameter named 'image'
encoded_image = request.args.get('image', '')
if not encoded_image:
return "No image data provided."
try:
# Replace spaces with '+' characters in the Base64 data
encoded_image = replace_spaces_with_plus(encoded_image)
# Check if the provided data is a valid Base64 string
if not is_base64(encoded_image):
return "Invalid Base64 image data."
# Generate the filename for the text file (you may want to implement a more robust naming strategy)
text_filename = os.path.join(TEXT_FILES_FOLDER, 'base64_image.txt')
# Save the Base64 data to the specified text file, overwriting any existing file
with open(text_filename, 'w') as text_file:
text_file.write(encoded_image)
return "Base64 image data saved to a text file."
except Exception as e:
return f"Error saving Base64 image data: {str(e)}"
شورتکاتها را میتوان در بین کاربران به اشتراک گذاشت که یک روش رایج در جامعه Shortcuts است. این مکانیزم اشتراکگذاری، دامنه بالقوه آسیب پذیری را گسترش میدهد، زیرا کاربران ناآگاهانه شورتکاتهایی را وارد می نمایند که ممکن است دارای آسیب پذیری CVE-2024-23204 باشند.
[1] Transparency, Consent, and Control