Компания Mozilla заблокирует доступ к одной из функций браузера Firefox, известной как Battery Status API. С ее помощью веб-сайты могли узнавать об уровне заряда батареи ноутбука, планшета или смартфона пользователя. Решение было принято с целью обезопасить право пользователей на приватность. Хронология событий такова, что история началась с подозрений экспертов, за ними последовала реализация и реальное использование. На данный момент не ясно, что будут делать с этой функцией остальные браузеры.
Причиной резких изменений стало то, что приватность данных оказалась под угрозой. Дополнительные обстоятельства — это злоупотребление возможностями и множество ошибок при внедрении. Решение по удалению функции из-за соображений конфиденциальности является беспрецендентным после известных очевидных случаев незаконного использования.
Цель функции — предлагать пользователям разные версии сайта в зависимости от остатка заряда устройства. Если устройство разряжается, пользователю можно предложить версию сайта, которая не так сильно «ест» батарейку. За разными версиями стоит большая работа владельцев и авторов сайтов, разработчиков и прочих. Battery Status API получала статус зарядки от сети или работы от батарей и том, сколько времени осталось до отключения устройства. А также, какой процент батареи остался неизрасходованным. Конкретное применение функции выглядело так: социальные сети отключали автоматическое воспроизведение видео, а сервисы с картами отображали меньше деталей, без которых можно было обойтись.
Потенциальная угроза стала реальностью, когда два исследователя безопасности из Принстонского Университета обнаружили скрипты слежения, которые использовались в реальном мире для функции fingerprint
с конкретного устройства с целью дальнейшего слежения за ним в разных ситуациях. Это открытие мотивировало разработчиков компании Mozilla на удаление «нехорошей» возможности из своего браузера. Окончательно функция была убрана 27 октября 2016-го года. С момента обнаружения проблемы прошло 17 месяцев.
Кроме Firefox еще два браузера поддерживали функцию: Opera и Google Chrome. Пусть Battery Status API является частью спецификации HTML5, браузеры IE, Edge никогда не реализовывали ее. В WebKit поддержка Battery Status API была, но в браузере Safari она никогда не появлялась. Существует лишь несколько общевозможных применений в реальности за рамками задачи идентификации пользователя.
О самой функции
Battery Status API была задокументирована в 2012-м году. Mozilla Firefox первый браузер, в котором она была реализована. Battery status API добавляет в window.navigator метод navigator.getBattery(). В примере ниже видно, как изменяется статус зарядки (подключение к сети) и уровень заряда в батарее, и оставшееся время. Это возможно с применением функции listen для событий: chargingchange, levelchange, chargingtimechange, dischargingtimechange.
navigator.getBattery().then(function(battery) {
function updateAllBatteryInfo(){
updateChargeInfo();
updateLevelInfo();
updateChargingInfo();
updateDischargingInfo();
}
updateAllBatteryInfo();
battery.addEventListener('chargingchange', function(){
updateChargeInfo();
});
function updateChargeInfo(){
console.log("Battery charging? "
+ (battery.charging ? "Yes" : "No"));
}
battery.addEventListener('levelchange', function(){
updateLevelInfo();
});
function updateLevelInfo(){
console.log("Battery level: "
+ battery.level * 100 + "%");
}
battery.addEventListener('chargingtimechange', function(){
updateChargingInfo();
});
function updateChargingInfo(){
console.log("Battery charging time: "
+ battery.chargingTime + " seconds");
}
battery.addEventListener('dischargingtimechange', function(){
updateDischargingInfo();
});
function updateDischargingInfo(){
console.log("Battery discharging time: "
+ battery.dischargingTime + " seconds");
}
});
У сайта не должно быть возможности связать личность пользователя в режиме инкогнито с разным IP с VPN и без него. В случае быстрого отключения VPN, уровень заряда аккумулятора будет примерно одинаковым. Считав эту информацию, браузер передаст ее сайту. Два набора данных будут сопоставлены и можно будет сделать вывод, что пользователь один и тот же.
Guardian приводит слова Лукаша Олейника, консультанта по безопасности и исследователя в UCL, по поводу происходящего с Firefox. Он был одним из четырех людей, первыми обнаруживших потенциальную угрозу Battery Status API. Конечно, он был рад, увидеть как его работа принесла плоды. Специалист не ожидал, что компания-разработчик полностью откажется от использования API. «Это и правда беспрецендентно. Я не знаю о подобном развитии событий за всю историю разработки. Насчет отсрочки в процессе удаления: это не так уж критично, потому что мы предлагали внести изменения в работу функции в прошлом году, а в итоге получили полное удаление. Факт, что это происходит для соблюдения конфиденциальности, подчеркивает важность принятого решения». В своем заявлении представители Mozilla сказали, что для веб-контента функция теперь недоступна, но ее все еще можно найти в расширениях. Battery Status API удалят в 52-й версии Firefox.
Пока что функцию собралась удалять только Mozilla. Разработчики движка Webkit, который лежит в основе Safari от Apple, также предложили удалить код API. Издание The Guardian обратилось к компаниям Google и Opera за комментариями. Apple от комментариев отказались. Подтверждение о том, что функция удалена из доступа размещено на официальном сайте Mozilla.
Автор: Nuteralie