نقص امنیتی در واتس‌اپ کشف شد

به نقل از سایت اخبار فناوری اطلاعات و ارتباطات ، فن آوری های نوین :    

به گزارش خبرگزاری مهر به نقل از مرکز ماهر، این حفره‌ امنیتی که توسط یک محقق با نام مستعار «Awakened» کشف شد، به عنوان یک اشکال double-free توصیف و به آن شناسه‌ CVE CVE-۲۰۱۹-۱۱۹۳۲ اختصاص داده شده است.

این نقص، در نسخه‌ ۲.۱۹.۲۳۰ واتس‌اپ در دستگاه‌های دارای اندروید ۸.۱ و ۹.۰ اجازه‌ اجرای کد از راه دور را می‌دهد و در نسخه‌های قبلی فقط می‌تواند برای حملات انکار سرویس (DoS) استفاده شود.

آسیب‌پذیری شناسایی‌شده، در یک کتابخانه‌ منبع‌باز به نام «libpl_droidsonroids_gif.so» وجود دارد که توسط واتس‌اپ برای تولید پیش‌نمایش پرونده‌های GIF استفاده می‌شود.

بهره‌برداری از این نقص، شامل ارسال یک GIF مخرب است که می‌تواند در هنگام بازکردن گالری واتس‌اپ توسط کاربر (به‌عنوان مثال، زمانی که کاربر می‌خواهد برای یکی از مخاطبین خود تصویری ارسال کند) به‌طور خودکار باعث آسیب‌پذیری ‌شود.

به‌گفته‌ این محقق، مهاجم نمی‌تواند تنها با ارسال یک GIF ویژه، از این نقص بهره‌برداری کند و کنترل تلفن همراه را در دست بگیرد. مهاجم ابتدا باید از آسیب‌پذیری دیگری که در تلفن کاربر وجود دارد سوءاستفاده کند تا به چیدمان حافظه دسترسی پیدا کند. زیرا یک اشکال double-free نیاز دارد تا یک مکان از حافظه را دوبار فراخوانی کند و این کار می‌تواند منجر به خرابی یک برنامه یا ایجاد یک آسیب‌پذیری شود.

در این حالت، هنگامی که یک کاربر واتس‌اپ، نمایه‌ گالری را برای ارسال پرونده‌ رسانه باز می‌کند، واتس‌اپ آن‌را با استفاده از یک کتابخانه‌ منبع‌باز برای تولید پیش‌نمایش GIF که شامل چندین فریم رمزگذاری‌شده است، تجزیه می‌کند.

این نقص به نرم‌افزار مخرب اجازه می‌دهد تا پرونده‌های موجود در سندباکس واتس‌اپ از جمله پایگاه‌داده‌ پیام را سرقت کند.

Awakend، فیس بوک را از این اشکال مطلع کرد و این شرکت، همزمان وصله‌ رسمی برای برنامه را در نسخه‌ واتس‌اپ ۲.۱۹.۲۴۴ منتشر کرد.

مرکز ماهر به کاربران توصیه کرده که واتس‌اپ خود را به این نسخه به‌روز کنند تا از این اشکال در امان بمانند.

123
0 0

لینک های مفید

طراحی لوگو دراصفهان

بانک اطلاعات مشاغل رایگان
لوازم یدکی جک JAC

کتاب های ادبیات آمریکای لاتین

سنگ چینی

کرم گریم


$(window).load(function () { 'use strict'; function activeStickyKit() { $('[data-sticky_column]').stick_in_parent({ parent: '[data-sticky_parent]' }); // bootstrap col position $('[data-sticky_column]') .on('sticky_kit:bottom', function (e) { $(this).parent().css('position', 'static'); }) .on('sticky_kit:unbottom', function (e) { $(this).parent().css('position', 'relative'); }); }; activeStickyKit(); function detachStickyKit() { $('[data-sticky_column]').trigger("sticky_kit:detach"); }; var screen = 768; var windowHeight, windowWidth; windowWidth = $(window).width(); if ((windowWidth < screen)) { detachStickyKit(); } else { activeStickyKit(); } // windowSize // window resize function windowSize() { windowHeight = window.innerHeight ? window.innerHeight : $(window).height(); windowWidth = window.innerWidth ? window.innerWidth : $(window).width(); } windowSize(); // Returns a function, that, as long as it continues to be invoked, will not // be triggered. The function will be called after it stops being called for // N milliseconds. If `immediate` is passed, trigger the function on the // leading edge, instead of the trailing. function debounce(func, wait, immediate) { var timeout; return function () { var context = this, args = arguments; var later = function () { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; }; $(window).resize(debounce(function () { windowSize(); $(document.body).trigger("sticky_kit:recalc"); if (windowWidth < screen) { detachStickyKit(); } else { activeStickyKit(); } }, 250)); });