Wipe Cache Partition что это на Андроид

websecurity Прошивки

Введение

Отравление веб-кэша (Web Cache Poisoning) долгое время было неуловимой уязвимостью, «теоретической» угрозой, используемой главным образом для того, чтобы напугать разработчиков, которое никто не мог использовать.

В этой статье я покажу вам, как скомпрометировать веб-сайты с помощью эзотерических веб-функций, чтобы превратить их кэши в системы доставки вирусов, предназначенные для всех, кто совершает ошибку, посещая их страницы.

Я проиллюстрирую и опишу эту технику с помощью уязвимостей, которые дали мне контроль над многочисленными популярными веб-сайтами и фреймворками, начиная от простых атак по одному запросу и заканчивая замысловатыми цепями эксплойтов, которые перехватывают JavaScript, перемещаются между слоями кэша, разрушают социальные сети и дезинформируют облачные сервисы. В завершение я расскажу о защите от отравления кешем.

Вы также можете посмотреть мою презентацию об этом исследовании или просмотреть ее в виде документа.

Что такое wipe cache partition?

Чтобы ускорить работу смартфона и повысить производительность приложений, можно сделать сброс кэша — Wipe Cache Partition. Другими словами, это процедура очистки кэша из памяти Android-устройства.

Понять, нужно ли делать Wipe Cache Partition, понять очень — необходимо оценить быстродействие системы и работы смартфона с программами и играми. Если заметны сбои, подтормаживания и медлительная загрузка, сначала можно попробовать почистить Android от мусора и освободить оперативную память, а затем сделать Wipe cache partition.

Стоит отметить, что при проведении данной процедуры никакие данные пользователя не удаляются — происходит только очистка кэша. Другие режимы в меню Recovery могут очистить телефонную книгу, сбросить настройки, а также удалить приложения, поэтому нужно быть осторожным.

Основы отравления

Несмотря на свою внушающую страх репутацию, отравление кэша часто очень легко использовать. Чтобы начать, давайте посмотрим на домашнюю страницу Red Hat. Param Miner на которой сразу же обнаружил unkeyed input:

Общее описание проблемы

Как было сказано выше, каждое приложение во время своей работы использует некоторые временные файлы, которые хранятся в особом разделе системы, называемом кэшем. Интересно отметить, что эти файлы могут оставаться там даже после того, как само приложение было удалено.

Cache poisoning (отравления веб-кэша)

Целью отравления веб-кэша является отправка запроса, который вызывает вредоносный ответ, который сохраняется в кэше и передается другим пользователям.

Cross-cloud отравление

Как вы, наверное, догадались, некоторые из этих отчетов об уязвимостях вызвали интересные реакции.

Один из экспертов, оценивающих мою отправку с использованием CVSS, дал отчету об отравлении кеша CloudFront сложность выполнения «высокий», поскольку злоумышленнику может понадобиться арендовать несколько VPS, чтобы отравить все кеши CloudFront. Не поддаваясь искушению спорить о том, что представляет собой «высокую» сложность, я использовал это как возможность исследовать, возможны ли межрегиональные атаки без использования VPS.

https://www.youtube.com/watch?v=pLte7SomUB8

Оказалось, что у CloudFront есть полезная карта их кэшей, и их IP-адреса можно легко идентифицировать с помощью бесплатных онлайн-сервисов, которые выдают DNS-запросы из различных географических местоположений. Отравить определенный регион, не выходя из своей спальни, так же просто, как направить атаку на один из этих IP-адресов, используя функции переопределения имени хоста curl/Burp.

Поскольку у Cloudflare большое количество региональных кешей, я решил посмотреть и на них. Cloudflare публикует список всех своих IP-адресов в Интернете, поэтому я написал быстрый скрипт для запроса waf.party/cgn-cgi/trace через каждый из этих IP-адресов и записи, какой кеш я использовал:

Dom отравление

Использование unkeyed input не всегда так просто, как вставка полезной нагрузки XSS. Рассмотрим следующий запрос:

Drupal open redirect

Читая код переопределения URL в Drupal, я заметил крайне рискованную функцию — во всех ответах на перенаправление вы можете переопределить цель перенаправления, используя параметр запроса ‘destination’. Drupal пытается выполнить синтаксический анализ некоторых URL-адресов, чтобы гарантировать, что он не будет перенаправлен на внешний домен, но это, очевидно, легко обойти:

Partition-replica cache

NOTE: everything mentioned in Partitioned Cache is true here too.

Reference data vs. transactional data

Reference data is data that doesn’t change very frequently and you cache it to reach over and over again and occasionally update it. Transactional data, on the other hand, is data that changes very frequently and you may update it as frequently as you read it.

Caching a product catalog where prices do not change very frequently is reference data. On the other hand, ASP.NET Core Sessions storage is considered a transactional use because a session is read and updated once on every web request which may happen every few seconds.

In early days, a cache was considered good mainly for reference data because data that changed frequently would become stale and out of sync with the latest data in the database. But, NCache now provides very powerful features that enable the cache to keep its cached data synchronized with the database.

All caching topologies are good for reference data but only some caching topologies are especially better for transactional data. You need to determine how many reads versus writes you’ll be doing to figure out which topology is best for you. Additionally, some caching topologies don’t scale as much specially for updates so keep that in mind too.

Below is a list of caching topologies along with their impact on reads versus writes.

Web caching — an overview | sciencedirect topics

Wipe Cache Partition что это на Андроид

There are two basic types of Web caching: forward and reverse. ISA Server 2004 performs both of these types of Web caching.

Wipe Cache Partition что это на Андроид

Forward Web caching has the advantage of making access for internal users faster because they are retrieving the Web objects (pages, graphics, sound files, and so forth) over a fast LAN connection, typically 100Mbps or more, instead of a slower Internet connection at perhaps 1.5Mbps.

Wipe Cache Partition что это на Андроид

The primary “bottom line” benefit of ISA Server 2004’s forward caching is cost savings realized by reduced bandwidth usage on the Internet connection.

Wipe Cache Partition что это на Андроид

Reverse caching reduces traffic on the internal network and speeds access for external users when the company hosts its own Web sites. Frequently requested objects on the internal Web servers are cached at the network edge on a proxy server so that the load on the Web servers is reduced.

Wipe Cache Partition что это на Андроид

There are two principle benefits to the reverse-caching scenario: reverse caching reduces bandwidth usage on the internal network, and reverse caching allows Web content to be available when the Web server is offline.

Wipe Cache Partition что это на Андроид

Multiple Web caching servers can be used together to provide for more efficient caching. There are two basic caching architectures that use multiple caching servers working together: distributed and hierarchical.

Wipe Cache Partition что это на Андроид

You can combine the distributed and hierarchical methods to create a hybrid caching architecture. The combination gives you the “best of both worlds,” improving performance and efficiency.

Wipe Cache Partition что это на Андроид

There are a number of different protocols that can be used for communications between Web-caching servers. The most popular of these are CARP, ICP, HTCP, WCCP and Cache digests.

Wipe Cache Partition что это на Андроид

ISA Server 2004 uses CARP for communications between distributed Web-caching servers.

Wipe Cache Partition что это на Андроид

Web Proxy clients can also use CARP to locate the ISA Server that contains objects when distributed caching is enabled.

Wipe Cache Partition что это на Андроид

The Web Proxy filter is the mechanism that ISA Server 2004 uses to implement caching functionality.

Wipe Cache Partition что это на Андроид

The cache is an area on the ISA Server’s hard disk that is used to store the requested Web objects. You can control the amount of disk space to be allocated to the cache (and thus, the maximum size of the cache). You can also control the maximum size of objects that can be cached to ensure that a few very large objects can’t “hog” the cache space.

Wipe Cache Partition что это на Андроид

Caching uses system memory. Objects are cached to RAM, as well as to disk. Objects can be retrieved from RAM more quickly than from the disk. ISA Server 2004 allows you to determine what percentage of random access memory can be used for caching (by default, ISA Server 2004 uses 10 percent of the RAM and then caches the rest of the objects to disk only).

Wipe Cache Partition что это на Андроид

Enabling caching on your ISA Server 2004 computer is done by configuring a cache drive. When you configure a cache drive, this enables both forward and reverse caching.

Wipe Cache Partition что это на Андроид

The file in which the cache objects are stored is named dir1.cdat. It is located in the urlcache folder on the drive that you have configured for caching. This file is referred to as the cache content file.

Wipe Cache Partition что это на Андроид

ISA Server 2004 uses cache rules to allow you to customize what types of content will be stored in the cache and exactly how that content will be handled when a request is made for objects stored in cache.

Wipe Cache Partition что это на Андроид

In addition to controlling content type and object size, a cache rule can control how ISA Server will handle the retrieval and service of objects from the cache. This refers to the validity of the object.

Wipe Cache Partition что это на Андроид

If you have multiple cache rules, they will be processed in order from first to last, with the default rule processed after all the custom rules.

Wipe Cache Partition что это на Андроид

The content download feature is used to schedule ISA Server 2004 to download new content from the Internet at pre-defined times so that when Web Proxy clients request those objects, updated versions will be in the cache.

Атака web cache deception обманом вынуждает серверы кешировать персональные данные

Израильский специалист Омер Гил (Omer Gil), сотрудник EY Hacktics Advanced Security Center, разработал технику атак на серверы кеширования, которую назвал web cache deception (что можно перевести как «обман веб-кеша»).

Исследователь заметил, что в ситуации, когда пользователь обращается к сайту и запрашивает некий несуществующий контент, например, файл CSS или JavaScript, которого нет на сервере, это приводит к некорректному кешированию страницы. Так, в кеш могут попасть персональные данные.

Гил пишет, что проблеме подвержены ресурсы многих крупных компаний. Проверив около тридцати сайтов, исследователь обнаружил, что три из них уязвимы. Например, от проблем с кешем страдала компания PayPal, но разработчики уже провели «работу над ошибками» и выплатили Гилу $3000 вознаграждения.

По словам исследователя, еще две крупные компании тоже исправили проблему в своих системах, однако они попросили опустить их имена в отчете. «Я сосредоточил свое исследование вокруг приложений, у которых есть bug bounty программы. Я нашел три. Но уверен, что [уязвимых компаний] куда больше, просто у них нет программ вознаграждений, и я их не проверял», — объясняет специалист.

Так как PayPal уже устранила проблему и не возражала против раскрытия данных о проблеме, Гил объясняет принцип работы атаки на примере PayPal. Если пользователь обращается к PayPal и запрашивает несуществующий на сервере файл, к примеру, https://www.paypal.com/myaccount/home/attack.css, то кеш будет создан для https://www.paypal.com/myaccount/home/. В данном случае кешированная страница также будет включать в себя информацию о пользователе: баланс его аккаунта, даты транзакций, email-адрес, последние четыре цифры банковской карты и так далее.

По сути, для эксплуатации web cache deception атакующему понадобится только убедить жертву открыть ссылку, ведущую к несуществующему контенту. Сервер создаст кеш с персональными данными жертвы, а затем злоумышленник и сам запросит вредоносный URL, получив не только страницу из кеша, но и персональные данные своей жертвы. Омир Гил записал три видеоролика с наглядной демонстрацией атак на PayPal.

При этом исследователь отмечает, что для атак можно использовать не только файлы JS или CSS. Гил обнаружил, что для обмана кеша подходят более 40 расширений файлов: aif, aiff, au, avi, bin, bmp, cab, carb, cct, cdf, class, css, doc, dcr, dtd, gcf, gff, gif, grv, hdml, hqx, ico, ini, jpeg, jpg, js, mov, mp3, nc, pct, ppc, pws, swa, swf, txt, vbs, w32, wav, wbmp, wml, wmlc, wmls, wmlsc, xsd, zip.

«В случае двух других компаний я сумел полностью перехватить контроль над аккаунтом пользователя, так как кеш содержал секретный вопрос или ID сессии, — рассказал специалист журналистам издания Bleeping Computer. — Важно, что речь идет не об уязвимости в каком-то специфическом кеш-компоненте, технологии или веб-сервере. Это лишь вектор атак. Он может работать на .NET, PHP, Java. Он может работать на IIS, Apache и других веб-серверах. Также он может работать с различными кеш-компонентами, включая CDN, обратными прокси и балансировщиками нагрузки».

Взлом mozilla shield

Правило сопоставления/замены «X-Forwarded-Host», которое я настроил, чтобы помочь разобраться с последней уязвимостью, имело неожиданный побочный эффект. В дополнение к взаимодействиям из catalog.data.gov я еще кое что узнал:

Взлом open graph

На другом сайте unkeyed input затрагивал исключительно URL-адреса Open Graph:

Вложенное отправление кеша

Другие сайты Drupal менее обязательны и не импортируют важные ресурсы через перенаправления. К счастью, если сайт использует внешний кеш (как практически все сайты с большим трафиком на Drupal), мы можем использовать внутренний кеш, чтобы отравить внешний кеш, и в процессе конвертировать любой ответ в перенаправление.

Внутреннее отправление кеша

Drupal часто используется со сторонними кешами, такими как Varnish, но он также содержит внутренний кеш, который включен по умолчанию. Этот кеш знает заголовок X-Original-URL и включает его в свой ключ кеша, но допускает ошибку, включая строку запроса из этого заголовка:

В то время как предыдущая атака позволила нам заменить путь другим путем, этот позволяет переопределить строку запроса:

Защита

Самая надежная защита от отравления кэша — отключение кэширования. Для большинства это просто нереалистичный совет, но я подозреваю, что довольно много веб-сайтов начинают использовать такой сервис, как Cloudflare для защиты от DDoS или простого SSL, и в конечном итоге становятся уязвимыми для отравления кеша просто потому, что кеширование включено по умолчанию.

Ограничение кеширования чисто статическими ответами также эффективно, если вы достаточно осторожно относитесь к тому, что вы определяете как ‘static’.

Аналогичным образом, предотвращение получения входных данных от заголовков и файлов cookie является эффективным способом предотвращения заражения кэша, но трудно понять, содержать ли другие уровни и фреймворки возможность изменения дополнительных заголовков.

Как только вы определили unkeyed inputs в своем приложении, идеальным решением будет их полное отключение. В противном случае вы можете удалить inputs на уровне кэша или добавить их в ключ кэша. Некоторые кэши позволяют использовать Vary header для unkeyed inputs, а другие позволяют вам определять пользовательские ключи кэша, но могут ограничивать эту функцию для «корпоративных» клиентов.

Кеширование 101

Чтобы понять, что такое кеширование, нам нужно взглянуть на основы кеширования. Веб-кэши располагаются между пользователем и сервером приложений, где они сохраняют и обслуживают копии определенных ответов. На диаграмме ниже мы видим трех пользователей, выбирающих один и тот же ресурс один за другим:

Кэширование предназначено для ускорения загрузки страниц за счет уменьшения задержек, а также снижения нагрузки на сервер приложений. Некоторые компании размещают свой собственный кэш с помощью программного обеспечения, такого как Varnish, а другие предпочитают полагаться на сеть доставки контента (CDN)

Существуют также другие типы кэшей, такие как клиентские кэши браузеров и DNS-кэши, но они не являются предметом данного исследования.

Ключи кеша

Концепция кеширования может показаться понятной и простой, но она скрывает некоторые рискованные предположения. Всякий раз, когда кеш получает запрос к ресурсу, ему необходимо решить, имеет ли он копию этого ресурса, и может его вернуть, или ему нужно переслать запрос на сервер приложений.

Методология

Мы будем использовать следующую методологию, чтобы найти уязвимости отравления кэша:

Вместо того, чтобы пытаться начать подробно рассказывать об этом, я дам вам краткий обзор, а затем продемонстрирую, как это применяется к реальным веб-сайтам.

Первым шагом является определение неключевых входных параметров (unkeyed inputs). Делать это вручную утомительно, поэтому я разработал расширение Burp Suite с открытым исходным кодом под названием Param Miner, которое автоматизирует этот шаг, угадывая имена заголовков/файлов cookie и отслеживая, влияют ли они на ответ приложения.

После нахождения unkeyed input следующим шагом нужно оценить, какой ущерб вы можете нанести с ними, а затем попытаться сохранить их в кеше. Если это не помогло, вам нужно лучше понять, как работает кэш, и выявить целевую страницу, которую можно кэшировать, перед повторной попыткой.

Кэшированные ответы могут маскировать unkeyed inputs, поэтому, если вы пытаетесь вручную обнаружить или исследовать unkeyed inputs, решающее значение имеет очистка кеша. Если у вас загружен Param Miner, вы можете убедиться, что каждый запрос имеет уникальный ключ кэша, добавив параметр со значением $randomplz в строку запроса.

При проверке живого веб-сайта случайное отравление других посетителей представляет собой постоянную опасность. Param Miner смягчает это, добавляя кеш-буфер для всех исходящих запросов от Burp. Этот кеш-буфер имеет фиксированное значение, поэтому вы можете наблюдать за поведением кэширования, не влияя на других пользователей.

Отравление локального маршрута

До сих пор мы видели перехват параметра language на основе cookie и множества атак с использованием различных заголовков переопределяющих хост. На этом этапе исследования я также обнаружил несколько вариантов, использующих причудливые нестандартные заголовки, такие как «translate», «bucket» и «path_info».

Это выявило заголовки X-Original-URL и X-Rewrite-URL, которые переопределяют путь запроса. Я впервые заметил, что они влияют на сайты, работающие на Drupal, и копаясь в коде Drupal, выяснилось, что поддержка этого заголовка исходит от популярной PHP-платформы Symfony, которая, в свою очередь, взяла код от Zend.

Конечным результатом является то, что огромное количество PHP-приложений невольно поддерживают эти заголовки. Прежде чем мы попытаемся использовать эти заголовки для отравления кэша, я должен отметить, что они также отлично подходят для обхода WAF и правил безопасности:

Отравление маршрутизации запросов

Некоторые приложения глупо используют заголовки для генерации URL-адресов и глупо используют их для внутренней маршрутизации запросов:

Постоянный взлом перенаправления

Мы можем объединить атаку переопределения параметра с Open Redirect, чтобы постоянно перехватывать любое перенаправление. На некоторых страницах сайта Pinterest происходит импорт JavaScript с помощью перенаправления. Следующий запрос отравляет запись в кэше, показанную синим цветом, с параметром, показанным оранжевым:

Системное рекавери и как провести очиску кэша приложений

Для наиболее полного понимания вопроса стоит рассмотреть такой раздел системы, как Рекавери (Recovery). Говоря простыми словами, это второе дно системы, которое позволяет выполнить ряд базовых действий с ней. Чаще всего рекавери используется для смены прошивки устройства, резервного копирования или восстановления системы и тому подобных действий. В том числе через рекавери производится и очистка кэша приложений.

Для того чтобы войти в меню рекавери необходимо одновременно зажать несколько кнопок смартфона. Чаще всего это одновременной нажатие обеих клавиш изменения громкости и клавиши выключения устройства. Итак, алгоритм действий должен быть следующим:

  1. Выключить смартфон.
  2. Одновременно зажать качельку громкости (обе клавиши) и кнопку выключения. Держать до появления характерной заставки.
  3. В появившемся меню рекавери найти пункт Wipe Cache Partition и активировать его. (Переключение обычно происходит с помощью всё той же качельки громкости, а выбор кнопкой выключения).
  4. После нажатия на пункт меню дисплей отобразит производимые действия и по завершению подтвердит успешность проведения работ.
  5. Далее нужно выбрать перезапуск или выключение устройства.

После того, как устройство будет перезагружено, оно будет очищено от следов работы приложений. Это касается как установленных программ, так и уже деинсталированых. В результате проведения процедуры Wipe Cache Partition (что это означает мы разобрали выше) операционная система и приложения будут работать быстрее.

Скрытое отравление маршрутизации

Уязвимости отравления маршрутов не всегда так очевидны:

Шаги по очистке раздела кэша samsung galaxy s8

  1. Убедитесь, что вы выключили телефон.
  2. Нажмите и удерживайте клавишу увеличения громкости и кнопку Bixby, затем нажмите и удерживайте кнопку питания.
  3. Когда появится зеленый логотип Android, отпустите все клавиши («Установка обновления системы» будет отображаться в течение примерно 30-60 секунд, прежде чем появятся параметры меню восстановления системы Android).
  4. Несколько раз нажмите клавишу уменьшения громкости, чтобы выделить «Wipe cache partition».
  5. Нажмите клавишу питания, чтобы подтвердить выбор.
  6. Нажмите клавишу уменьшения громкости, чтобы выделить «Yes», и нажмите клавишу питания, чтобы подтвердить свой выбор.
  7. После завершения очистки раздела кэша будет выделен пункт меню «Reboot system now».
  8. Нажмите кнопку питания, чтобы перезапустить телефон.

Если вы хотите очистить кэш, который влияет на конкретное приложение, вы можете сделать это индивидуально. Следуйте приведенным ниже процедурам:

  1. Откройте меню приложений.
  2. Найдите «Настройки» и нажмите на них.
  3. В разделе «Настройки» нажмите «Приложения», а затем «Диспетчер приложений» (опционально).
  4. Выберите приложение, кэш которого вы хотите очистить.
  5. Теперь нажмите «Хранилище».
  6. Затем нажмите «Стереть данные», чтобы очистить кэш-память.

Samsung Galaxy имеет два разных типа кэша. Первый — системный кэш, а второй — отдельный кэш для приложений, хранящихся на устройстве. Вы можете очистить кэш программного обеспечения или отдельных приложений.

Заключение

Отравление веб-кэша — далеко не теоретическая уязвимость, и раздутые приложения могут сами того не подозревая доставить его в массы. Мы видели, что даже хорошо известные фреймворки могут скрывать опасные вездесущие функции, подтверждая, что никогда не безопасно предполагать, что кто-то другой прочитал исходный код только потому, что приложение с открытым исходным кодом и им пользуются миллионы пользователей.

Мы также видели, как размещение кэша перед веб-сайтом может сделать его полностью безопасным или критически уязвимым. Я думаю, что это является частью большей тенденции, когда веб-сайты все больше и больше укрываются во вспомогательных системах, и их безопасность все труднее адекватно оценить.

Наконец, я поставил перед людьми небольшую задачу проверить свои знания и с нетерпением жду возможности увидеть, когда другие исследователи будут отравлять веб-кеш в будущем.

Дальнейшие исследования по этой теме можно найти в моем последующем сообщении «Bypassing Web Cache Poisoning Countermeasures».

Обновление 2020: мы выпустили шесть бесплатных интерактивных лабораторий, чтобы вы могли сами попробовать отравить веб-кеш в рамках нашей Академии веб-безопасности:

Оцените статью
Huawei Devices