Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-12960 — CVE-2026-12960 - Некорректный экспорт компонентов Android-приложения в приложении ASUS Router (com.asus.aihome). PoC, эксплойт APK, видео и отчёт вендору. Исправлено в версии 1.0.0.9.74. | Kitploit
Инструменты/GitHubGitHub/l0lsec/cve-2026-12960
Безопасность AndroidАнализ уязвимостейЭксплуатацияПентестинг мобильных приложенийТестирование на ПроникновениеМобильная безопасность
GitHubl0lsec/cve-2026-12960

CVE-2026-12960

CVE-2026-12960 - Некорректный экспорт компонентов Android-приложения в приложении ASUS Router (com.asus.aihome). PoC, эксплойт APK, видео и отчёт вендору. Исправлено в версии 1.0.0.9.74.

Репозиторий
292 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

CVE-2026-12960

Некорректный экспорт компонентов Android-приложения в приложении ASUS Router

Компонент, встроенный в Android-приложение ASUS Router (com.asus.aihome), был объявлен с android:exported="true" и без атрибута android:permission. Любое другое приложение на том же устройстве, не имеющее ни одного разрешения, могло отправить ему специально сформированный Intent и заставить приложение ASUS Router открыть подконтрольный атакующему URI от имени пользователя.

Сообщено в ASUS 2026-03-17. Исправлено компанией ASUS и опубликовано как CVE-2026-12960 2026-07-03.

Обнаружено и сообщено Седриком Луиссентом из Show Up Show Out Security.


Сводка

CVECVE-2026-12960
ПродуктПриложение ASUS Router для Android (com.asus.aihome)
Затронуто≤ 1.0.0.9.71
Исправлено в1.0.0.9.74
СлабостьCWE-926: Некорректный экспорт компонентов Android-приложения
CVSS 4.06.0 Средний CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N
CNAASUS
Рекомендация производителяhttps://www.asus.com/security-advisory/
Протестировано наcom.asus.aihome 1.0.0.9.71 (Google Play), эмулятор Android 11

Технические подробности

В приложение встроен Baidu Push SDK, в котором объявляется:

<service
    android:name="com.baidu.android.pushservice.CommandService"
    android:exported="true" />

Атрибут android:permission отсутствует, поэтому контроль доступа на уровне компонентов Android не срабатывает. Любое установленное приложение может вызвать startService() для этого компонента.

CommandService.onStartCommand() извлекает Parcelable PublicMsg из extra public_msg входящего Intent и передаёт его в handlePrivateNotification(), которая выполняет ветвление по полю mOpenType, заданному атакующим:

mOpenTypeПоведение
1startActivity(ACTION_VIEW, Uri.parse(mUrl)) с mUrl атакующего
2Intent.parseUri(mPkgContent, 0) с последующим startActivity() / sendBroadcast()

Ни отправитель, ни полезная нагрузка не проверяются. Поскольку итоговая activity запускается из собственных UID и процесса приложения ASUS, всё, что появляется на экране, выглядит так, будто пришло из доверенного приложения управления роутером, которое пользователь только что открыл.

По сути, в этом нет ничего специфичного для Baidu. SDK поставляет экспортированный компонент, приложение-хост наследует его, и заимствуется именно идентичность приложения-хоста.

Цепочка атаки

  1. Вредоносное приложение создаёт Parcelable PublicMsg, соответствующий раскладке полей целевого объекта.
  2. Устанавливает mOpenType = 1, а mUrl — в подконтрольный атакующему URI.
  3. Отправляет Intent в CommandService. Разрешений не требуется, SecurityException не возникает.
  4. onStartCommand() → handlePrivateNotification().
  5. startActivity(ACTION_VIEW, Uri.parse(mUrl)) запускается из процесса приложения ASUS.

Порядок полей PublicMsg, восстановленный из writeToParcel в декомпилированном smali и повторно реализованный в poc/PublicMsg.java:

String mMsgId, mAppId, mTitle, mDescription, mUrl, mPkgName
int    mPkgVercode, mNotificationBuilder, mNotificationBasicStyle
int    mOpenType, mUserConfirm
String mCustomContent, mPkgContent
int    mAdvertiseStyle
String mAdvertiseSmallIconUrl, mAdvertiseLargeIconUrl, mAdvertiseClickUrl,
       mAdvertiseBigPictureUrl, mAdvertiseBigPictureClickUrl, mAdvertiseDownloadClickUrl

Ошибитесь в порядке — и Parcel распакуется в мусорные данные. Сделайте всё верно — и сервис примет сообщение так, будто его отправила собственная push-инфраструктура Baidu.

Продемонстрированные полезные нагрузки

Шесть URI-схем, один экспортированный сервис, ноль разрешений:

#СхемаРезультат
1https:Браузер открывает фишинговую страницу, контролируемую атакующим
2sms:Редактор SMS предзаполнен сообщением для социальной инженерии
3tel:Приложение набора номера предзаполнено номером, контролируемым атакующим
4mailto:Редактор электронной почты предзаполнен для кражи учётных данных
5market:Перенаправление в Play Store для установки вредоносного ПО
6geo:Перенаправление в Карты на поддельный сервисный центр

Доказательство концепции

media/poc_commandservice.mp4 — полная 31-секундная запись: сборка, установка, запуск и реакция эмулятора на каждую полезную нагрузку по очереди.

Атака 1: фишинговая страницаАтака 2: редактор SMSАтака 3: приложение набора номераРазрешения PoC-приложения
Браузер открыт по URL атакующегоРедактор SMS, предзаполненный поддельным предупреждением безопасности ASUSПриложение набора номера, предзаполненное номером атакующегоЭкран сведений о приложении Android, показывающий «No permissions requested»

Этот последний скриншот — и есть весь аргумент. Ни одного запрошенного разрешения. Приложение, которое только что выполнило шесть действий через приложение ASUS Router, вообще ничего не попросило у пользователя.

Воспроизведение

Требуются ADB, JDK и инструменты сборки Android SDK (aapt2, d8/dx, zipalign, apksigner), а также platforms;android-30.

./poc/poc_commandservice_exploit.sh <device_serial>

Скрипт выполняет три фазы:

  1. Проверка доступа. Отправляет три действия CommandService из com.android.shell и сообщает, было ли отклонено хоть одно из них. Защищённый разрешением сервис выбросил бы здесь SecurityException. Этот принял все три.
  2. Сборка. Компилирует PoC, упаковывает и подписывает exploit_commandservice.apk и устанавливает его. Готовая копия лежит в poc/, если хотите пропустить этот шаг.
  3. Запуск. Выводит приложение ASUS на передний план, запускает PoC из непривилегированного контекста приложения и собирает доказательства из logcat.

Вывод фазы 1 на уязвимом устройстве:

[ACCESS]  passthrough.notification.CLICK → service accepted intent
[ACCESS]  privatenotification.CLICK      → service accepted intent
[ACCESS]  privatenotification.DELETE     → service accepted intent

  Phase 1 result: 3/3 actions accepted without permission check

А также ServiceRecord из dumpsys activity services, в котором фиксируется вызывающий:

intent={act=com.baidu.android.pushservice.action.privatenotification.CLICK
        cmp=com.asus.aihome/com.baidu.android.pushservice.CommandService}
recentCallingPackage=com.android.shell
startRequested=true callStart=true

Фаза 3 — из реального непривилегированного приложения, а не из shell:

W PoCExploit: [OK] attack1_url_open → com.asus.aihome/com.baidu.android.pushservice.CommandService
W PoCExploit: [OK] attack2_sms_compose → ...
(all 6 succeed)

startService() вернул целевой ComponentName вместо null, а SecurityException выброшено не было. Android разрешил Intent и доставил его.

Содержимое репозитория

Скачать инструмент