Hi Jeff: Am 14.10.17 22:10 schrieb(en) Jeffrey Stedfast:
This is all interesting. Does the slide talk about the pros and cons of each behavior or suggest what might be the best way to handle each case?
Maybe I should add a little background about this presentation… The author works for a German company which among other things produces security gateways (genua <https://www.genua.de/en.html>; competitors are e.g. Fireeye, Palo Alto Networks, Cisco, …; no, I *don't* work for any of them!). These devices are able to decode traffic, in particular http, https and emails, and to scan the decoded content for “usual” malware as well as for advanced persistent threats (APTs). The problem: if (in the case of emails) the security appliance and the final MUA interpret creatively crafted half-broken MIME structures /differently/, the attack may pass the gateway unrecognised and thus reach the target. And as MUA's also tend to interpret these messages differently, the attack message may look benign on, say, iOS, whereas it will successfully infect a machine running Outlook on Windows (the usual target). As to mitigate the attack, some of the gateways re-write emails to a sane RFC-compliant format, so the final MUA will see *exactly* the content which has been inspected by the gateway (however, this approach /may/ also break cryptographic signatures; think of the RFC 2633 and 3156 requirements). Therefore, I think it is not possible to define a “correct” behaviour for the cases presented in the talk, with the exception that odd but standard-compliant content should of course be interpreted correctly. Afaict, GMime handles unexpected but legal line folding (slide 21) properly. I did not test the case of unnecessarily RFC 2231 encoded header tokens (example on slide 22). The NUL byte inserted by GMime when decoding base64 content with “=” inside the block (slide 32) looks like a bug to me, though. So, instead of guessing what the sender (or attacker…) did actually want to transmit, IMO the proper approach is to detect these cases and to treat the messages as possibly dangerous. This applies to both a MUA as well as to some kind of “security checker” (think of a milter). Thus, it would be crucial to get detailed information if the parser detected something odd in the message. The severity would of course be very different. E.g. unencoded 8-bit characters in message headers are a common problem of some web mailers (Balsa already displays a notice, and the Milter would just accept them). But the other examples presented (maybe with the exception of the line folding on slide 21) should raise a *BIG* warning in the MUA that the message may be an attack (a milter/gateway should probably shift it into quarantine). This leads to the question if it would be possible to extract this information from the GMime parser. Although Balsa is probably not a target (due to the regrettably small number of installations and the robustness of Linux), it should be able to display a warning as mentioned above, just in case the user reads the messages using different MUA's (think of IMAP, plus Outlook/iOS/Android/…). But it would be an *extremely* helpful feature for writing some kind of “security scanner”. Cheers, Albrecht.
Attachment:
pgpwb3PxFbJPg.pgp
Description: PGP signature