_ オレオレ CA 証明書をつっこんで HTTPS なサイトに MITM で広告つっこむよ、と。
_ うーん。セキュリティゲートウェイやアンチウイルスソフト、あるいは Web アプリケーションの開発補助ツールでも同じような動作をするものが多いので、このやりかたを批判するとしたらこういう製品もすべて批判することになっちゃうんだよなぁ。かるくぐぐってみただけで こんなに見つかった。ほかにもまだまだいっぱいある。Superfish は広告追加というユーザにはとくに益のない目的でやってるので叩き放題だけど、こういう製品の場合はセキュリティ向上やら開発やらという大義名分があって、実際わりと広く受け入れられてるんだよね。自分としてはそういう目的であってもひじょーに気持ち悪くて勘弁願いたいんだけど。
_ アンチウイルスの場合、通信経路に割り込むのではなく、ブラウザの内部で動くプラグインとして実装して、ブラウザに復号してもらった後で検知させるような作りのものも存在する。AdBlock が HTTPS なサイトの広告を消せるのも、ブラウザの内部で動くから。ただ、プラグインをブラウザごとに(場合によっては同じブラウザでもバージョンごとに)開発する必要があって工数がバカにならないし、そもそもプラグインの仕組みが存在しなかったりすると実現できないという問題がある。プラグイン方式だったならばこういう問題は起きなかっただろうと思うんだけど、広告屋としてはそんな手間をかけるよりもお手軽な MITM の方に流れるわなぁ。…って、 ブラウザ拡張版もあるのかよ!
_ Superfish が何より致命的だったのはオレオレ CA の秘密鍵をぶっこ抜かれてしまったということと、その鍵がすべて共通だったということ。せめて端末ごとに異なる鍵、異なる CA 証明書を生成していたのであれば、攻撃者がそれを悪用した何かをおこなうためにはその PC に侵入して鍵を盗む必要があった。実際はぜんぶ共通なので、攻撃者はわざわざ手間をかけて盗まなくても、手元でぶっこ抜いた鍵でなんでもできちゃう。
_ ところで、実はほかにもオレオレ CA 証明書を勝手に追加して出荷してた製品がある。お手元の RHEL5/CentOS5 をご覧ください。/etc/pki/tls/cert.pem にオレオレ CA が入ってんだよクソが。Superfish の件と違って秘密鍵は漏れてないけど、WebTrust for CA の正規の認証を取得してない怪しい CA 証明書がしれっとルート証明書の束に追加されてるのはまぎれもない事実。なお、RHEL6/CentOS6 には含まれていない。また RHEL5 に含まれていたものについても、現在はすべて期限が切れて無効になっている。
_ 以下、RHEL5 に入ってるオレオレ CA 証明書3枚のうち1枚の実物。
Certificate: Data: Version: 3 (0x2) Serial Number: 0 (0x0) Signature Algorithm: md5WithRSAEncryption Issuer: C=US, ST=North Carolina, L=Raleigh, O=Red Hat, Inc., OU=Red Hat Network, CN=RHN Certificate Authority/emailAddress=rhn-noc@redhat.com Validity Not Before: Aug 29 02:10:55 2003 GMT Not After : Aug 26 02:10:55 2013 GMT Subject: C=US, ST=North Carolina, L=Raleigh, O=Red Hat, Inc., OU=Red Hat Network, CN=RHN Certificate Authority/emailAddress=rhn-noc@redhat.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:bf:61:63:eb:3d:8b:2b:45:48:e6:c2:fb:7c:d2: 21:21:b8:ec:90:93:41:30:7c:2c:8d:79:d5:14:e9: 0e:7e:3f:ef:d6:0a:9b:0a:a6:02:52:01:2d:26:96: a4:ed:bd:a9:9e:aa:08:03:c1:61:0a:41:80:ea:ae: 74:cc:61:26:d0:05:91:55:3e:66:14:a2:20:b3:d6: 9d:71:0c:ab:77:cc:f4:f0:11:b5:25:33:8a:4e:22: 9a:10:36:67:fa:11:6d:48:76:3a:1f:d2:e3:44:7b: 89:66:be:b4:85:fb:2f:a6:aa:13:fa:9a:6d:c9:bb: 18:c4:04:af:4f:15:69:89:9b Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: 69:44:27:05:DC:2E:ED:A5:F4:81:C4:D7:78:45:E7:44:5D:F8:87:47 X509v3 Authority Key Identifier: keyid:69:44:27:05:DC:2E:ED:A5:F4:81:C4:D7:78:45:E7:44:5D:F8:87:47 DirName:/C=US/ST=North Carolina/L=Raleigh/O=Red Hat, Inc./OU=Red Hat Network/CN=RHN Certificate Authority/emailAddress=rhn-noc@redhat.com serial:00 X509v3 Basic Constraints: CA:TRUE Signature Algorithm: md5WithRSAEncryption 23:c9:ca:07:9f:5e:96:39:83:e0:4e:da:dd:47:84:30:ca:d4: d5:38:86:f9:de:88:83:ca:2c:47:26:36:ab:f4:14:1e:28:29: de:7d:10:4a:5e:91:3e:5a:99:07:0c:a9:2e:e3:fb:78:44:49: c5:32:d6:e8:7a:97:ff:29:d0:33:ae:26:ba:76:06:7e:79:97: 17:0c:4f:2d:2a:8b:8a:ac:41:59:ae:e9:c4:55:2d:b9:88:df: 9b:7b:41:f8:32:2e:ee:c9:c0:59:e2:30:57:5e:37:47:29:c0: 2d:78:33:d3:ce:a3:2b:dc:84:da:bf:3b:2e:4b:b6:b3:b6:4e: 9e:80 -----BEGIN CERTIFICATE----- MIID7jCCA1egAwIBAgIBADANBgkqhkiG9w0BAQQFADCBsTELMAkGA1UEBhMCVVMx FzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRAwDgYDVQQHEwdSYWxlaWdoMRYwFAYD VQQKEw1SZWQgSGF0LCBJbmMuMRgwFgYDVQQLEw9SZWQgSGF0IE5ldHdvcmsxIjAg BgNVBAMTGVJITiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEW EnJobi1ub2NAcmVkaGF0LmNvbTAeFw0wMzA4MjkwMjEwNTVaFw0xMzA4MjYwMjEw NTVaMIGxMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExEDAO BgNVBAcTB1JhbGVpZ2gxFjAUBgNVBAoTDVJlZCBIYXQsIEluYy4xGDAWBgNVBAsT D1JlZCBIYXQgTmV0d29yazEiMCAGA1UEAxMZUkhOIENlcnRpZmljYXRlIEF1dGhv cml0eTEhMB8GCSqGSIb3DQEJARYScmhuLW5vY0ByZWRoYXQuY29tMIGfMA0GCSqG SIb3DQEBAQUAA4GNADCBiQKBgQC/YWPrPYsrRUjmwvt80iEhuOyQk0EwfCyNedUU 6Q5+P+/WCpsKpgJSAS0mlqTtvameqggDwWEKQYDqrnTMYSbQBZFVPmYUoiCz1p1x DKt3zPTwEbUlM4pOIpoQNmf6EW1Idjof0uNEe4lmvrSF+y+mqhP6mm3JuxjEBK9P FWmJmwIDAQABo4IBEjCCAQ4wHQYDVR0OBBYEFGlEJwXcLu2l9IHE13hF50Rd+IdH MIHeBgNVHSMEgdYwgdOAFGlEJwXcLu2l9IHE13hF50Rd+IdHoYG3pIG0MIGxMQsw CQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExEDAOBgNVBAcTB1Jh bGVpZ2gxFjAUBgNVBAoTDVJlZCBIYXQsIEluYy4xGDAWBgNVBAsTD1JlZCBIYXQg TmV0d29yazEiMCAGA1UEAxMZUkhOIENlcnRpZmljYXRlIEF1dGhvcml0eTEhMB8G CSqGSIb3DQEJARYScmhuLW5vY0ByZWRoYXQuY29tggEAMAwGA1UdEwQFMAMBAf8w DQYJKoZIhvcNAQEEBQADgYEAI8nKB59eljmD4E7a3UeEMMrU1TiG+d6Ig8osRyY2 q/QUHigp3n0QSl6RPlqZBwypLuP7eERJxTLW6HqX/ynQM64munYGfnmXFwxPLSqL iqxBWa7pxFUtuYjfm3tB+DIu7snAWeIwV143RynALXgz086jK9yE2r87Lku2s7ZO noA= -----END CERTIFICATE-----