Este artículo describe cómo crear un identificador entre navegadores aprovechando las vulnerabilidades en cuatro navegadores populares: Tor Browser, Safari, Chrome y Firefox. Enlaces a demostración , código fuente .
![](https://habrastorage.org/getpro/habr/upload_files/33d/209/ae4/33d209ae417b38589e48ea63b039eb78.png)
Hace dos meses, mientras investigaba el navegador Safari, tropecé accidentalmente con una vulnerabilidad que me permite buscar una aplicación específica en la computadora de un usuario directamente desde el navegador usando JavaScript.
24 24- . . , , .
, IDE Python, PostgreSQL . , , - , , Tor Browser. ?
, . , :
Linux. xdg-open, . Firefox - ;
, 8% ;
15% . , ;
-
. - Tor Browser PR .
. .
, . Deep Linking.
![Zoom de apertura Zoom de apertura](https://habrastorage.org/getpro/habr/upload_files/65d/21e/02c/65d21e02c66d0cc787c9bd646d4d9e5b.png)
- , , .
Chromium
. ( ). ( ), .
![](https://habrastorage.org/getpro/habr/upload_files/b60/69f/f04/b6069ff04d05c93e1e6b3ef9c7b64f4c.png)
, Extension () . , Extensions ( mailto:) . .
Chrome PDF Viewer, Extension. PDF .
:
location.replace();
input . , , ;
PDF , ;
1-3 , .
Firefox
same-origin policy. . , , JavaScript. about:blank, .
![](https://habrastorage.org/getpro/habr/upload_files/2ad/ffc/fb2/2adffcfb226489b6d025109d82d1889c.png)
:
window.open;
location.replace;
document . , ;
2-3 .
Safari
, Firefox. , ( location.reload) .
Tor Browser
, -, . , .
Aquí no se necesitan ventanas adicionales. Solo usaremos elementos de iframe y verificaremos la política del mismo origen .
![](https://habrastorage.org/getpro/habr/upload_files/ab6/ba6/8a9/ab6ba68a94671194daa820a60639c0ed.png)
Puede verificar pasivamente: verificamos cada 10 segundos en segundo plano sin requerir acciones del usuario.
Puede hacerlo de forma activa: muestre un captcha de 24 caracteres y compruébelo después de cada pulsación de tecla.
conclusiones
Esta vulnerabilidad existe desde hace varios años y muchos desarrolladores de navegadores son conscientes de ella, a juzgar por los informes de errores. Sin embargo, no he podido encontrar sitios que lo utilicen.
Enlaces: