Pull to refresh

Подмена SSL сертификатов Avast!'ом

Недавно экспериментировал с JavaMail и наткнулся на интересную «особенность» работы Avast! Mail Scanner (сканер). При включенном сканере не удавалось соединиться с SMTP сервером с включенным SSL/TLS, в частности с smtp.yandex.ru:465. Небольшое исследование показало, что эта проблема вызвана проблемой с сертификатом для этого сервера и эта проблема вызвана именно сканером.

При включенном сканере и попытке SSL соединения с smtp.yandex.ru:465 сертификат отдаваемый этим сервисом не проходит проверку. Внимательный взгляд на это сертификат показал, что выдан он «avast! Mail Scanner Root»:

[
  Version: V3
  Subject: EMAILADDRESS=pki@yandex-team.ru, CN=smtp.yandex.ru, ST=Russian Federation, L=Moscow, OU=ITO, O=Yandex LLC, C=RU
  Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5

  Key:  Sun RSA public key, 2048 bits
  modulus: <опущено>
  public exponent: 65537
  Validity: [From: Tue Dec 10 14:22:38 MSK 2013,
               To: Fri Dec 09 14:22:38 MSK 2016]
  Issuer: CN=avast! Mail Scanner Root, O=avast! Mail Scanner, OU=generated by avast! antivirus for SSL scanning
  SerialNumber: [    0104a020]

Certificate Extensions: 8
[1]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: B8 3B 67 E0 33 60 3B 54   68 48 C2 B9 6D 59 43 28  .;g.3`;ThH..mYC(
0010: A5 61 91 7A                                        .a.z
]


При отключении Avast! имеем:

[
  Version: V3
  Subject: EMAILADDRESS=pki@yandex-team.ru, CN=smtp.yandex.ru, ST=Russian Federation, L=Moscow, OU=ITO, O=Yandex LLC, C=RU
  Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5

  Key:  Sun RSA public key, 2048 bits
  modulus: <опущено>
  public exponent: 65537
  Validity: [From: Tue Dec 10 14:22:38 MSK 2013,
               To: Fri Dec 09 14:22:38 MSK 2016]
  Issuer: CN=Certum Level IV CA, OU=Certum Certification Authority, O=Unizeto Technologies S.A., C=PL
  SerialNumber: [    134114dc 3d88f814 806682cc 0ef22bd4]

Certificate Extensions: 10
[1]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
  [
   accessMethod: ocsp
   accessLocation: URIName: http://ocsp.certum.pl
, 
   accessMethod: caIssuers
   accessLocation: URIName: http://www.certum.pl/l4.cer
]

Соответственно, издатель сертификата валидный и всё работает нормально. Просто Java хранилище сертификатов не содержит доверенного сертификата от Avast! и закономерно ругается.

Вроде бы и понятно, что антивирус пытается сканировать шифрованый трафик, но таким макаром ему не составит никакого труда подписать/подменить и любой левый сертификат и пользователь даже не заметит этого, если пользуется штатными средствами Windows с использованием системного хранилища сертификатов, где авастовский прописывается при установке.

P.S Для просмотра сертификатов использовался InstallCert.java.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.