
On la dit à suffisance, en matière de test de logiciels, l’absence de bogues est une utopie. Signal ne déroge pas à la règle ; les versions desktop antérieures à 1.11.0 (et postérieures à 1.8.0) exhibent une faille qui touche à l’aspect pour lequel on apprécie le plus l’application : la confidentialité des échanges entre utilisateurs. Dans un billet de blog paru il y a peu, le chercheur en sécurité Matt Bryant explique que les versions non patchées de l’application peuvent tomber sous le coup d’attaques XSS. Il suffit, d’après les développements de ce dernier, qu’un attaquant insère du code malicieux HTML/JavaScript au sein d’un message destiné à une victime, puis qu’il réponde au message d’origine avec du texte aléatoire pour que le contenu HTML du message d’origine soit exécuté.
La faille référencée CVE-2018-11101 réside dans un choix de design de l’application. Les développeurs de Signal ont fait usage de la prop React dangerouslySetInnerHTML pour rendre le contenu des messages cités par un utilisateur de l’application.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | public renderText() { const { i18n, text, attachments } = this.props; if (text) { return ( ); } ...trimmed for brevity… |
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | @@ -4,6 +4,8 @@ import classnames from 'classnames'; import * as MIME from '../../../ts/types/MIME'; import * as GoogleChrome from '../../../ts/util/GoogleChrome'; +import { MessageBody } from './MessageBody'; + interface Props { attachments: Array |
Toutefois, attention, car les attaquants sont capables d’aller plus loin sur des postes de travail faisant tourner des versions non corrigées de l’application. En effet, en s’inspirant des publications relatives aux failles référencées CVE-2018-11101 et CVE-2018-10994, les chercheurs ont publié une PoC. Elle illustre la possibilité de contourner le chiffrement de l’application pour transmettre (en clair) le contenu des conversations d’une victime vers le poste de travail d’un attaquant. Pour y parvenir, l’attaquant procède en trois étapes.
Primo, il monte un serveur Samba et y place du contenu HTML conçu à dessein et accessible en lecture.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
|
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | DATALIMIT) { $data = substr($data, 0, DATALIMIT); } $filename = date('Y-m-d_Hi') . '_' . bin2hex(random_bytes(5)) . '.txt'; $datafile = DATADIR . '/' . $filename; file_put_contents($datafile, 'Server date: ' . date('Y-m-d H:i:s') . "\nData:\n" . $data . "\n", FILE_APPEND); die('OK'); header('HTTP/1.0 403 Forbidden'); die(' |
Sources : hackerblog, barrero1, barrero2
Et vous ?



Voir aussi :


