2022年10月31日~11月6日に読んだ中で気になったニュースとメモ書き(TLSらじお第79回の前半用原稿)です。
[OpenSSL: CVE-2022-3602]
こちらのツイートから。
OpenSSLのやつ、実はcriticalっていうほどじゃありませんでした、という話だったのか https://t.co/lMrcoFZq8E
— keiichiro shikano λ♪ (@golden_lucky) 2022年11月1日
リンク先はBulletproof TLS Newletterの最新号。月末なのに出ないな、と思っていたらOpenSSLの件をトップに持ってきた。
OpenSSLのサイトでの脆弱性報告はこちら。
https://www.openssl.org/news/secadv/20221101.txt
国際化メールアドレスの処理に問題があるらしい、ということはなんとなく分かったが、X.509証明書のどこにメールアドレスが入るんだっけ?と思っていたらRFC 8389なる仕様があるらしい。
国際化メールアドレスをX509に埋め込む仕様RFC8398に対応するためAug 26, 2020に追加されたpunycode.cのバグなので、Opensslのみの問題https://t.co/yJ8qftYQif
— ますだまさる (@m_masaru) 2022年11月1日
ただRFC8389の著者の片方googleの人なのにboringssl対応してないの酷くねwというわけでboringsslも脆弱性なしhttps://t.co/VLL4C5ht5A
RFCはこちら。
X.509証明書の仕様を定義したRFC 5280では、subjectAltNameの種類に、dNSNameやiPAddressなどと合わせて、rfc822Nameを利用できる。RFC 822はメールアドレスに関する最初期の仕様である。
RFC 5280では、メールアドレスに関する最新の仕様であるRFC 5321で定義されたASCII文字の一部しかrfc822Nameとして利用できなかった。
これをRFC 6531で定義された国際化メールアドレスも利用できるようにしたのが上述のRFC 8398ということらしい。
知らない仕様がいっぱいある...。
影響を受けるソフトウェアも早速まとまっているらしい。
OpenSSL-2022/software at main · NCSC-NL/OpenSSL-2022 https://t.co/7wqTle8Eok 今回ので影響を受ける(受けない)ソフトウェア一覧が GitHub 上で共有されてる。
— V (@voluntas) 2022年11月1日
Alpine LinuxとかAmazon Linuxに混じってJira Cloud、Bitbucket Cloud、ClamAV、Node.jsやPHPも影響を受けている。
ただ、OpenSSLから派生したLibreSSLとかBoringSSLは影響を受けないらしい。
CVE-2022-3786 はCVE-2022-3602の予備的修正。https://t.co/zu4g7EzQvr
— ますだまさる (@m_masaru) 2022年11月1日
Criticalな部分をCVE-2022-3602の1行修正に集約する予定が、CVE-2022-3602がHighに落ちたので分けた意味があまりなくなったのだと思う。
修正箇所は同様にOpenssl独自のpunycode実装なので、libresslにこの脆弱性はない
比較的新しめのOpenSSL3.0.X系ということであまり影響を受けないかな?と思っていたら意外と多いらしい。
OpnSSL3.xのCritical脆弱性が話題ですがShodanで台数や分布を調査。Globalで9063台、JPで615台とリリース期間の割に多い印象です。
— nekono_nanomotoni (@nekono_naha) 2022年11月1日
バナーでバージョンが露出したもののみカウント対象なので、この数字は”最低限”で、実際はこの数倍~十数倍存在すると思います。
今後数日は動向を注視しましょう🧐 pic.twitter.com/JubZkBbWiU
本件の修正で、OpenSSLのテストコードに金八先生などの文字列が入っているが、これはRFC 3492のサンプルとのこと。2003年3月のRFCなので平成ど真ん中という感じ。
RFC 3492: Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)
OpenSSLの脆弱性に際して、Punycodeのサンプルとして出てくる文字列に平成みがあふれており氷河期世代の心をガッチリ掴んでいることが話題ですが、これはRFC3492に出てくるサンプルによるものです pic.twitter.com/mzXuLc5wgU
— Moriyoshi Koizumi (@moriyoshit) 2022年11月2日
libfuzzerとかでランダムな値でファジング検査すればすぐ見つかるのに、という指摘もあった。テスト観点として大事だし、C言語で仕事することがあれば忘れないようにしたい...。
I have a question: Why was this not found before they put that code into a release? #OpenSSL pic.twitter.com/AJtlenD5Li
— hanno💉💉💉💉 (@hanno) 2022年11月2日
例のOpenSSL smtpUTF8Mailboxの名前制約のpunycodeの脆弱性、Filippoさんの解説は最高だ。なんでファジング検査してなかったの?というのとMEDIUMでも良かったんじゃね?というのはホント同意だ。3.0.0-3.0.5はインストールベースで1%もないし。 https://t.co/F4EjOkfwZr
— kjur セキュリティ IT 開発の私的情報収集用+少しつぶやき (@kjur) 2022年11月3日
国際化メールアドレスなんか誰も使わないからやめちまえばいいのにと思う。CABF S/MIME BRの投票が可決されたけどこれも国際化メールアドレス真剣に対応してんだよね。(誰も使わないのに)使わない機能はこの手の事故がおきがち。
— kjur セキュリティ IT 開発の私的情報収集用+少しつぶやき (@kjur) 2022年11月3日
[Windows CryptoAPI: CVE-2022-34689]
こちらのツイートから。
The NSA-reported certificate parsing vuln that MS stealth patched in August is almost certainly way worse than this OpenSSL thing in practical significance. But no one's talking about it because no one hyped it.
— Brian in Pittsburgh (@arekfurt) 2022年11月1日
OpenSSLのニュースよりもっと大事な話があるけどみんな触れてない件があるらしい。詳細はこちらのツイートから。
ICYMI, yesterday Microsoft fixed a nasty sounding cryptographic issue reported by NSA and GCHQ/NCSC:
— Brian in Pittsburgh (@arekfurt) 2022年10月12日
"An attacker could manipulate an existing public x.509 certificate to spoof their identify and perform actions such as authentication or code signing...."https://t.co/ymASgKpM0Y
リンク先はこちら。
アメリカのNSAとイギリスのGCHQから報告されたWindows CryptoAPIの脆弱性があり、既存の公開 x.509 証明書を操作して身元を偽装し、認証やコード署名などを実行できるらしい。重大度はCriticalになっているものの、詳細は語られていない。
8月に修正パッチがリリースされているものの、情報の公開は10月に入ってから、というのは、攻撃の容易性を考慮してパッチが行き渡るのを待つとか、何か目的があったのだろうか...。
[その他のニュース]
▼Crt.shのDB直接アクセス
こちらのツイートから。
TIL: https://t.co/u8t0KzHdBg allows direct postgresql access and there goes my evening... pic.twitter.com/EXbWopWEl2
— Jan Schaumann (@jschauma) 2022年11月2日
Crt.shのWebサイト上ではSANのotherNameを検索することはできないが、DBに直接アクセスすればできる、とのこと。そういう意味では便利なのか?
So https://t.co/u8t0KzHdBg web-ui doesn't really let you search SAN 'otherName' and won't even display them for certs that have them, but direct sql search can.
— Jan Schaumann (@jschauma) 2022年11月3日
There, I only find a handful of certs with XMPP (OID 1.3.6.1.5.5.7.8.5) UTF8 otherNames though... pic.twitter.com/hbnVQWRNvk
実際に接続してクエリを投げてみたが、コネクションが頻繁に切れるし、使い勝手はあまり良くなさそう...。
とりあえずOpenSSLの脆弱性で話題になっているSAN=rfc822Nameの証明書を探してみたけど、やはり普通にASCIIのメールアドレスだった(全部調べたわけじゃないけど)。
▼ErlangのkTLS対応
こちらのツイートから。
Erlang/OTP 26 で maybe 構文がデフォルトになる。マップ内包表記も入る。そして kTLS (kernel TLS) 対応!! TLS 遅い問題が一気に解決する。あとは JIT による改善。Erlang shell の書き直し、盛りだくさん過ぎる。サイコーだ。 https://t.co/anQKgyOuv0
— V (@voluntas) 2022年11月5日
やっぱりカーネルにすると速くなるのかな...。
[まとめ]
OpenSSLの件、事前情報ほどやばくなくてよかった。