Montez un quizz à propos du terme Signal. Un féru de sécurité informatique ne manquera certainement pas de vous faire une réponse contenant les mots application et Snowden. Signal est une application permettant de communiquer de façon chiffrée. Edward Snowden, ex-employé de la CIA et de la NSA, la recommande aux personnes désireuses de garder leurs communications des « yeux indiscrets » dont la toile regorge. 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 (
<div className="text" dangerouslySetInnerHTML={{ __html: text }} />
);
}
...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<QuotedAttachment>;
authorColor: string;
@@ -111,7 +113,9 @@ export class Quote extends React.Component<Props, {}> {
if (text) {
return (
- <div className="text" dangerouslySetInnerHTML={{ __html: text }} />
+ <div className="text">
+ <MessageBody text={text} />
+ </div>
);
} |
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....
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.