CIQ или Carrier iQ это, по сути, часть программного обеспечения, встроенного в большинство мобильных устройств, не только Android, но Nokia, Blackberry и, вероятно, во многих других. В основном, эта программа полностью скрыта от глаз и, что хуже всего, довольно сложно убивается. Программа имеет рут права, а это значит, что CIQ делает то что хочет и не спрашивает у вас по этому вопросу никакого разрешения.
Почему мы сейчас говорим об этом? Некоторое время назад разработчик по имени TrevE с форума XDA (именно тот, что нашел дыры в защите телефонов HTC и помог их заткнуть) начал задаваться вопросом по поводу того, что же такое этот зверь "CIQ" и, как оказалось, это одна из худших вещей, которая была в разобранном им коде.
Так что, TrevE решил копнуть глубже и выяснил, что CIQ это вовсе не пользовательская программа (что и понятно, потому как глубоко она сидит в системе), а очень полезный инструмент для админов и операторов наших сетевых провайдеров - она может быть очень полезна для устранения различных неполадок с сетью или самим телефоном.
Вот как это должно выглядеть:
Вот как оно смотрится в действительности на разных устройствах:
Видите разницу? Если интересно, это снято с телефонов оператора "Virgin". Наш дорогой Дэв нашел изначальную версию, вместе с тоннами информации, включая руководство по использованию, тренинговые видео и кучу материала, который поднимет ваши волосы дыбом. То что вы видите, это не просто косметические изменения. В устройстве от Samsungменю и опросы сильно урезаны, а у HTC почти полностью отсутствуют. Например, опция отказа от всего этого полностью убрана в HTC, а в Samsung запрятана так, что найти ее почти не возможно. Помимо этого вы можете увидеть некоторые "Ивенты" и "Тригеры", которые позволяют CIQ собирать информацию.
Вот часть уже известных HTC тригеров:
Key in HTCDialer Pressed or Keyboard Keys pressed - Intent – com.htc.android.iqagent.action.ui01
App Opened – Intent – com.htc.android.iqagent.action.ui15
Sms Received – Intent – com.htc.android.iqagent.action.smsnotify
UI01: screen tapped in any location, or InputMethod (any soft keyboard) key pressed. NT10: HTTP request read. NT0F: HTTP request send. UI11: unknown, located in the View class, which has its own IQClientThreadRunnable subclass. AL34: loading started in a browser frame – URL. AL35: loading started in a browser frame – data receive begin and end, page render begin and end. AL36: data length.
Интересно? Продолжим дальше? В оригинальной версии программы она должна собирать данные о статусе сети, идентификации устройства и много чего ещё. Что же происходит со всеми этими "замерами"? Все эти "замеры" затем направляются на "портал" где Администратор может видеть, фильтровать и располагоать всё, что прислало приложение так, как ему\ей удобно. В документах было описано, что CIQ может считать этими "замерами" что угодно и записывать их, если надо. Для примера - админ записывает дату по количеству прерванных звонков по Москве в 5 вечера. Так как все эти данные могуть быть доступы через разные триггеры, тот же админ может получить не только информацию по оборванному звонку, но и получить данные о том, где именно вы находились в тот момент времени, как часто и какими приложениями вы пользовались и даже что вы набирали на вашем смартфоне (увы, но это не преувеличение - CIQ может работать и как кейлоггер). Уже страшно? Нет? Если нет, вот вам вырезка из некоторых данных о том, что эта "штука" может собрать:
Кстати куски кода этой программы есть даже в кернелах именных интерфейсов Sense и Touchwiz, так что даже если вы сможете убрать CIQ из Рома, то не обязательно это получится сделать полностью. Вот вырезка из кода:
if (!strncmp(name, "SDIO_RPC_TEST”, strnlen("SDIO_RPC_TEST”, CHANNEL_NAME_SIZE))) return SDIO_RPC; else if (!strncmp(name, "SDIO_QMI_TEST”, strnlen("SDIO_QMI_TEST”, TEST_CH_NAME_SIZE))) return SDIO_QMI; else if (!strncmp(name, "SDIO_RMNT_TEST", strnlen("SDIO_RMNT_TEST”, TEST_CH_NAME_SIZE))) return SDIO_RMNT; else if (!strncmp(name, "SDIO_DIAG_TEST", strnlen("SDIO_DIAG”, TEST_CH_NAME_SIZE))) return SDIO_DIAG; else if (!strncmp(name, "SDIO_DUN_TEST”, strnlen("SDIO_DUN_TEST”, TEST_CH_NAME_SIZE))) return SDIO_DUN; else if (!strncmp(name, "SDIO_SMEM_TEST", strnlen("SDIO_SMEM_TEST”, TEST_CH_NAME_SIZE))) return SDIO_SMEM; else if (!strncmp(name, "SDIO_CIQ_TEST”, strnlen("SDIO_CIQ_TEST”, TEST_CH_NAME_SIZE))) return SDIO_CIQ; else return SDIO_MAX_CHANNELS;
return SDIO_MAX_CHANNELS; }
Я лично не "программер", но эта часть очень даже жива в большинстве Sense ROM-ов и закомпилирована в ядро, так что убирать это будет крайне сложно. Мы уже привели достаточное количество фактов, так что, давайте рассмотрим основную проблему с Carier-IQ на наших устройствах - это явное нарушение наших прав как потребителей и нарушение на неприкосновенность частной информации. К счастью, пока есть возможность увидеть, есть ли данный зверь на вашем устройстве (если вы с Андройдом) и даже подрезать возможности данной программы. TrevE позаботился о нас, написав Android Security Test, который можно взять в его оригинальном блоге.
После адресованного TrevE компанией Carier-IQ письма с требованием убрать все статьи об этой программе и изъять из доступа Android Security Test, Carier-IQ пытается "заткнуть" ему рот судом.