« Le moteur de recherche qui ne vous espionne pas » est le slogan de DuckDuckGo, le navigateur qui se retrouve au centre de soupçons de pistage de ses utilisateurs. Code source à l’appui, certains ont établi que ce dernier (sous Android et iOS) envoie les noms de tous les hôtes visités vers son serveur, ce qui ouvre des possibilités au pistage des utilisateurs. Le cas qui suscite une crise de confiance (compte tenu de la proposition de valeur du navigateur en lien avec le respect de la vie privée) est en cours de résolution.Les signalements sont partis du morceau de code suivant qui n’a pas manqué d’attirer l’attention d’utilisateurs pointilleux sur Android.
1 2 3 4 5 6 7
| private const val faviconBaseUrlFormat = "https://icons.duckduckgo.com/ip3/%s.ico"
fun Uri?.faviconLocation(): Uri? {
val host = this?.host
if (host.isNullOrBlank()) return null
return Uri.parse(String.format(faviconBaseUrlFormat, host))
} |
Le fait ici est qu’il y a une fonction chargée de récupérer le nom de l’hôte courant et de l’envoyer à un service hébergé sur duckduckgo.com ; ce dernier a son URL sauvegardée au sein de la constante faviconBaseUrlFormat. Au sein de celle-ci, %s est remplacé par le nom d’hôte courant. Dit d’une autre façon, lors de la visite d’une page comme test.com sur la version Android ou iOS de DuckDuckGo, l’icône du site web est chargée depuis
https://icons.duckduckgo.com/ip3/test.com.ico qui se trouve être une page sur le serveur DuckDuckGo.
Sur iOS, même son de cloche :
1 2 3 4 5 6 7
| static let externalContentBase = "https://external-content.duckduckgo.com"
static let faviconService = "\(externalContentBase)/ip3/%@.ico"
public func faviconUrl(forDomain domain: String) -> URL? {
let urlString = String(format: Url.faviconService, domain)
return URL(string: urlString)
} |
En fait, cette disposition concerne, semble-t-il, chaque onglet ouvert dans le navigateur :
1 2 3 4 5 6 7 8 9 10 11 12 13
| private func configureFavicon(forDomain domain: String?) {
let placeholder = #imageLiteral(resourceName: "GlobeSmall")
favicon.image = placeholder
if let domain = domain {
let faviconUrl = AppUrls().faviconUrl(forDomain: domain)
favicon.kf.setImage(with: faviconUrl,
placeholder: placeholder,
options: [.downloader(NotFoundCachingDownloader())],
progressBlock: nil,
completionHandler: nil)
}
} |
Les marque-pages ne sont pas en reste si l’on en croit les retours des utilisateurs sur la version iOS :
1 2 3 4 5 6 7
| private func configureFavicon(forDomain domain: String?) {
favicon.image = BookmarkCell.placeholderFavicon
if let domain = domain {
let faviconUrl = AppUrls().faviconUrl(forDomain: domain)
favicon.kf.setImage(with: faviconUrl, placeholder: BookmarkCell.placeholderFavicon)
}
} |
La limite est mince quand on sait que cet état de choses peut impliquer l’envoi d’une adresse IP. Ainsi, bonjour aux possibilités de pistage des utilisateurs, toute chose qui est au contraire aux valeurs dont l’équipe qui est derrière le navigateur fait la promotion. La fonctionnalité a fait l’objet d’ajout au navigateur en mars 2018.
Dans une sortie en lien avec ces développements, le CEO de DuckDuckGo se veut rassurant : « Je viens d’avoir connaissance de ce problème et je suis heureux de prendre l’engagement que nous le fassions de façon locale dans le navigateur. Nous ferons en sorte que cela se fasse le plus rapidement possible. Cela dit, je tiens à préciser que nous n'avons pas collecté d'informations personnelles. Comme d'autres membres du personnel l'ont indiqué, nos services sont chiffrés et, de par leur conception, rejettent des informations comme les adresses IP. Cependant, j'estime qu'il est néanmoins plus sûr de le faire au niveau local et c'est ce que nous ferons. »
Source :
1,
2 Et vous ?
Êtes-vous un utilisateur de DuckDuckGo ? Si oui, cette situation est-elle de nature à effriter la confiance que vous avez en ce navigateur ?

Qu’est-ce qui d’un point de vue technique peut justifier l’approche adoptée par l’équipe DuckDuckGo pour retrouver l’icône d’un hôte courant ?

En tant que développeur web quelle approche suggérez-vous qui soit respectueuse de la vie privée ?
Voir aussi :
DuckDuckGo propose le Do Not Track Act, un projet de loi qui obligerait les sites à ne pas pister les internautes qui utilisent Do Not Track
DuckDuckGo utilise maintenant Apple Maps pour alimenter les résultats de la recherche privée
DuckDuckGo accusé de faire du profilage des utilisateurs malgré sa promesse d'être l'anti-Google, le moteur assure qu'il n'en est rien
Google cède et transfère Duck.com à DuckDuckGo afin de dissiper la confusion des utilisateurs, même si les détails de cette entente ne sont pas connus