Bug 45003 - После установки firefox-esr-config-privacy микрофон/камера продолжают работать в браузере
Summary: После установки firefox-esr-config-privacy микрофон/камера продолжают работат...
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: firefox-esr-config-privacy (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: pav@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-01-23 14:57 MSK by Osmolovskaya Anastasia
Modified: 2023-10-11 19:14 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Osmolovskaya Anastasia 2023-01-23 14:57:19 MSK
Воспроизводится в p10 и Sisyphus

Данная проблема актуальна для firefox и для firefox-esr

Версия пакетов: 
firefox-esr-config-privacy-102.6.0-alt1.x86_64
firefox-esr-102.6.0-alt1.x86_64

firefox-config-privacy-109.0-alt1.x86_64
firefox-109.0-alt1.x86_64

Шаги для воспроизведения: 
1. Установить пакеты firefox-esr и firefox-esr-config-privacy: 
# apt-get install firefox-esr firefox-esr-config-privacy

2. Запустить Firefox -> Проверить работу камеры и микрофона на следующих сайтах: 
* https://webcammictest.com/
* https://webcasts.com/webrtc

Ожидаемый результат: 
Микрофон и камера блокированы - сайты не могут получить к ним доступ

Реальный результат: 
Камера и микрофон продолжают работать в обычном режиме. Сайты получают к ним доступ
Comment 1 Nikolai Zurabishvili 2023-10-11 19:13:41 MSK
firefox-esr-115.3.1-alt2.x86_64
firefox-esr-config-privacy-115.3.1-alt2.x86_64

За отключение WebRTC отвечает файл all_privacy.js со строкой:

/* Disable WebRTC */
pref("media.peerconnection.enabled", false); 

По факту WebRTC отключен, в это можно убедиться зайдя на https://browserleaks.com/webrtc и посмотреть что WebRTC Support Detection в строках RTCPeerConnection и RTCDataChannel отображено значение False, однако это не означает что микрофон/камера перестанут определяться и работать в браузере. 

Если нужно полностью отключить использование устройств и передачу медиа, то в all_privacy.js следует добавить строки:

pref("dom.gamepad.enabled", false);
pref("dom.gamepad.non_standard_events.enabled", false);
pref("dom.imagecapture.enabled", false);
pref("dom.presentation.discoverable", false);
pref("dom.presentation.discovery.enabled", false);
pref("dom.presentation.enabled", false);
pref("dom.presentation.tcp_server.debug", false);
pref("media.getusermedia.aec_enabled", false);
pref("media.getusermedia.audiocapture.enabled", false);
pref("media.getusermedia.browser.enabled", false);
pref("media.getusermedia.noise_enabled", false);
pref("media.getusermedia.screensharing.enabled", false);
pref("media.navigator.enabled", false);
pref("media.navigator.video.enabled", false);
pref("media.navigator.permission.disabled", true);
pref("media.video_stats.enabled", false);
pref("dom.battery.enabled", false);
pref("dom.vibrator.enabled", false);
pref("dom.vr.require-gesture", false);
pref("dom.vr.poseprediction.enabled", false);
pref("dom.vr.openvr.enabled", false);
pref("dom.vr.oculus.enabled", false);
pref("dom.vr.oculus.invisible.enabled", false);
pref("dom.vr.enabled", false);
pref("dom.vr.test.enabled", false);
pref("dom.vr.puppet.enabled", false);
pref("dom.vr.osvr.enabled", false);
pref("dom.vr.external.enabled", false);
pref("dom.vr.autoactivate.enabled", false);
pref("media.webspeech.synth.enabled", false);
pref("media.webspeech.test.enable", false);
pref("media.webspeech.synth.force_global_queue", false);
pref("media.webspeech.recognition.force_enable", false);
pref("media.webspeech.recognition.enable", false);

Можно еще дополнительно расширить колонку /* Disable WebRTC */ параметрами:

pref("media.peerconnection.ice.default_address_only", true);
pref("media.peerconnection.ice.no_host", true);
pref("media.peerconnection.ice.relay_only", true);
pref("media.peerconnection.ice.tcp", false);
pref("media.peerconnection.identity.enabled", false);
pref("media.peerconnection.turn.disable", true);
pref("media.peerconnection.use_document_iceservers", false);
pref("media.peerconnection.video.enabled", false);
pref("media.peerconnection.default_iceservers", "[]");