Wie das so mit komplexer Software ist, CVE Meldungen sind quasi vorprogrammiert, aber einfache Programmierfehler tun es meistens auch đ
PVA: kleines Sicherheitsloch im IMAP Modul
Jetzt ist der Einschlagkrater durch die im PVA gefundene SicherheitslĂŒcke nicht besonders groĂ, man mĂŒĂte Ihn vermutlich mit der Lupe suchen, weil kaum wer von dem neuen Feature wuĂte und es ausprobiert hat, aber, zur Vermeidung gleichartiger zukĂŒnftiger UnfĂ€lle, soll die LĂŒcke seziert und dokumentiert werden.
Was ist passiert?
In der MailConnection-Komponente, die macht die IMAP Verbindung auf, war ein Programmierfehler drin, der die verschlĂŒsselte Verbindung zum IMAP Server unterband. Wer also die neue Funktion schon ausprobiert hat , muĂ mindestens auf diesen Commit updaten: 685ee5ecaa486006a0cee04cac763ee479160e6e
Hier der fehlerhafte Code:
Properties props = System.getProperties(); if ( m.secure == true ) { props.setProperty("mail.store.protocol", "imaps"); } else props.setProperty("mail.store.protocol", "imap"); Session session = Session.getInstance(props, null); Store store = session.getStore("imap"); store.connect(m.servername, m.username, m.password);
Statt die laut Konfiguration (m.secure) gewĂŒnschte Verbindungsart „imaps“ zu wĂ€hlen, zog es der Code vor, dann doch unabhĂ€ngig davon „imap“ zu verwenden. Korrekt wĂ€re diese Zeile gewesen:
Store store = session.getStore();
Was war die Ursache?
Als Ursache konnte „mangelndes VerstĂ€ndnis“ der Methode getStore(…) ausgemacht werden, um genau zu sein, wurde erwartet, daĂ es sich um den Unterschied zwischen „POP3“ oder „IMAP“ handelt, weil der Sicherheitslevel wurde ja vorher schon festgelegt, aber leider ĂŒberschrieb der Aufruf diese Voreinstellung wieder.
Was mĂŒĂt Ihr tun?
Im Repo ist das Update bereits enthalten, so daĂ alle die, die Automatische Updates einspielen, schon sicher sind.
Wer seinen PVA selbst baut, der muĂ einmal updaten und compilieren.
Wie wurde es gefunden?
Vor 11 Jahren, ja, einfach weiterlesen, entschied ich, daĂ meine POP3/IMAP Serverlogs von einer Software auf genau diese unverschlĂŒsselten Verbindungen prĂŒft und den Benutzer darĂŒber informiert, daĂ er irgendwo eine unsichere Konfig hat. 11 Jahre lang habe ich keine Email erhalten, und jetzt rettet dieses kleine Script dem PVA den Arsch đ
PS: Falls wer dachte, daĂ man im Github einfach mal so ein Security Advisory schreiben könnte, der hat das noch nie versucht und mir ist jetzt klar, warum so viele Projekte mit LĂŒcken, keine SecurityeintrĂ€ge haben đ