Ticket #45656

LibreSSL 3.7.2

Date d'ouverture: 2022-09-16 21:49 Dernière mise à jour: 2023-07-18 17:46

Rapporteur:
Propriétaire:
Type:
État:
Atteints
Composant:
(Aucun)
Jalon:
Priorité:
6
Sévérité:
5 - moyen
Résolution:
Fixed
Fichier:
1
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Détails

LibreSSL 3.5.3

LibreSSL 3.5.3 がリリースされていました。

https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.5.3-relnotes.txt

LibreSSL 3.6.1

LibreSSL 3.6.1 がリリースされていました。

https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.7.0-relnotes.txt

LibreSSL 3.7.1

LibreSSL 3.7.1 がリリースされていました。

https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.7.1-relnotes.txt

LibreSSL 3.7.2

LibreSSL 3.7.2 がリリースされていました。

https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.7.2-relnotes.txt

対応状況

  • trunk
    • LibreSSL 3.7.2 でコンパイルエラーは起こらなくなった。r10688 で切り替え済み
  • 4-stable
    • 対応しない(問題は起こらない)

問題点

LibreSSL 3.5.0 から、カスタム cipher を作っている部分でコンパイルエラーとなる。

ttssh2\ttxssh\cipher-ctr.c(152,20): error C2079: 'aes_ctr' が 未定義の struct 'evp_cipher_st' で使用しています。
ttssh2\ttxssh\cipher-ctr.c(154,40): error C2027: 認識できない型 'evp_cipher_st' が使われています。
libs\libressl\include\openssl\ossl_typ.h(117): message : 'evp_cipher_st' の宣言を確認してください
ttssh2\ttxssh\cipher-ctr.c(155,10): error C2224: '.nid' : 左側が構造体または共用体型ではありません。
(以下たくさんエラー)

カスタム cipher は des3_ctr, aes_ctr, blowfish_ctr, cast5_ctr, camellia_ctr のサポートのために作っているようです。

LibreSSL, OpenSSL3 の対応の時に、EVP_CIPHER_meth_new が LibreSSL にはなくて行ったり来たりした箇所。(r9623, r9658

これまで

  • OpenSSL ... EVP_CIPHER_meth_new() を使う
  • LibreSSL 3.4.3 ... 構造体を使う

いま

  • OpenSSL ... EVP_CIPHER_meth_new() を使う
  • LibreSSL 3.4.3 まで ... 構造体を使える
  • LibreSSL 3.5.0 から ... 構造体を使えないし、EVP_CIPHER_meth_new() もない

ちなみに OpenSSL3 では EVP_CIPHER_meth_new() は非推奨になった。代わりに OSSL_PROVIDER API を使うように書いてある。

Ticket History (3/31 Histories)

2022-09-16 21:49 Updated by: nmaya
  • New Ticket "FYI: LibreSSL 3.5.3" created
2022-12-21 01:47 Updated by: nmaya
  • Propriétaire Update from (Aucun) to nmaya
  • Résolution Update from Aucun to Accepted
  • Details Updated
  • Summary Updated
2022-12-21 01:50 Updated by: nmaya
  • Details Updated
2022-12-23 22:23 Updated by: nmaya
  • Details Updated
2022-12-23 22:29 Updated by: nmaya
Commentaire

ここまでの作業を r10432 でコミットしました。

問題点は ticket の詳細に書いたとおりです。書き方を変えたら通るようになるでしょうか?

2022-12-23 23:01 Updated by: nmaya
  • Summary Updated
2022-12-24 13:01 Updated by: nmaya
Commentaire

LibreSSL の issue に、同じように SSH で CTR の暗号方式をサポートしようとして、同じことを書いている人がいました。

https://github.com/libressl-portable/portable/issues/790

LibreSSL 3.5 から構造体が opaque になり、これは変わらなそうです。LibreSSL 3.7 で EVP_CIPHER_meth_* 関数を追加することについては、検討が必要なようです。

3.7.0 (development release, 2022-12-12) には、これらの関数はありませんでした。リリースノートを見ると API の変更は development release のときに行われているようなので、入るとしたら 3.8 になるかもしれませんね。

(Edited, 2022-12-24 13:13 Updated by: nmaya)
2022-12-27 23:59 Updated by: zmatsuo
Commentaire

3.8まで待ってみましょう。

2023-01-04 22:19 Updated by: nmaya
Commentaire

3.8.0 が出るのが 2023 春になり、3.8.1 (stable) が出るのがさらに先になるでしょうか。

少なくともそれまでは LibreSSL 3.4.x で止めておく、ということでよいですか?

2023-01-08 01:06 Updated by: zmatsuo
Commentaire

はい。LibreSSL 3.4.x で止めておいてはどうでしょうか。

リリースページ をみると、3.4.x はまだサポートされている印象です。

別の方針のほうがよさそうでしょうか?

2023-01-08 08:03 Updated by: nmaya
Commentaire

確認したかったこと

wiki:決定事項

「最新」を使うことになっているもので、最新にしたことで不具合が出た場合には協議する

が発動するということを確認しました。

LibreSSL のサポート

3.4.x はまだサポートされている印象です

おそらくいいえ。

2022-10-20 に OpenBSD 7.2 が出て、OpenBSD 7.0(LibreSSL 3.4.1を含む)のサポートが切れました。

LibreSSL のリリースは OpenBSD から生えてくるもので、OpenBSD がサポート対応するリリースは「過去2回ぶん」です。(OpenBSD 7.1 は LibreSSL 3.5.2 です。)

将来の話

LibreSSL が今のまま EVP_CIPHER_meth_* を追加しなかったら、ずっとアップデートできないことになります。

その場合に取れる対応:

  • LibreSSL を新しくする代わりに *-ctr のアルゴリズムを切る
  • OpenSSL 3 にする

なお、OpenSSL 3 では、同じ箇所(*-ctr のアルゴリズム)で使っている EVP_CIPHER_meth_* 関数は非推奨になりました。

これを回避する方法が、今のところわかっていません。

現時点で取れる対応

LibreSSL 3.4.3 で止めておく。ただしすでにサポート(security fix の提供)は切れている。

ここまでの確認よろしいでしょうか。

2023-01-08 13:37 Updated by: zmatsuo
Commentaire

LibreSSL 3.4.3 で止めておく。ただしすでにサポート(security fix の提供)は切れている。 ここまでの確認よろしいでしょうか。

了解です。

2023-01-08 15:12 Updated by: nmaya
Commentaire

確認ありがとうございました。

LibreSSL の次のリリースでどうなるか様子を見ましょう。できることとして、issue に「EVP_CIPHER_meth_* を使いたい人が他にもいる」と書いておきました。

2023-01-08 17:50 Updated by: zmatsuo
Commentaire

ありがとうございます。

試しに、LibreSSL 3.7.0 を使って *-ctr アルゴリズムを切ったバイナリを 手もとで作ってみました。

クラッシュせず動作して、WSLのsshに接続できました。

設定GUIなど全然見てませんが、とりあえず接続できたので安心しました。

2023-01-09 00:31 Updated by: nmaya
Commentaire

書き忘れました。wiki:決定事項 を更新しました。

2023-01-10 19:46 Updated by: nmaya
  • Priorité Update from 5 - moyen to 6
Commentaire

「ライブラリのバージョンアップについて行く必要性」は低いものではないので、優先度を上げておく。

2023-02-03 23:44 Updated by: zmatsuo
Commentaire

まえに試しに LibreSSL 3.7.0 を使ってビルドしたときの修正を整理して libreSSL_370 ブランチに置きました。

2023-03-03 00:44 Updated by: nmaya
Commentaire

LibreSSL に EVP_CIPHER_meth_* 関数が作られました

2023-03-17 08:14 Updated by: nmaya
  • Jalon Update from (Aucun) to Tera Term 5.0
  • Details Updated
  • Summary Updated
Commentaire

LibreSSL 3.7.1 に入りました。LibreSSL 3.7.1 は development release で、3.7.x の最後の development release だそうです。

OpenBSD 7.3 には LibreSSL 3.7.2(stable release)が入る予定ですので「LibreSSL 3.7.2 が出たら TTSSH は追従する」にしましょう。

数日中に LibreSSL 3.7.1 で問題なくビルドできるか確認します。

2023-03-22 22:22 Updated by: nmaya
Commentaire

LibreSSL 3.7.1 でビルド/aes256-ctrで接続できることを確認しました。

2023-03-28 23:20 Updated by: nmaya
Commentaire

r10648 で LibreSSL -3.4.3, 3.5.0-3.7.0, 3.7.1- のどれでもコンパイルできるようになった。

LibreSSL 3.5.0-3.7.0 では以下のアルゴリズムが無効になる

  • 3des-ctr
  • blowfish-ctr
  • cast128-ctr
  • camellia128-ctr
  • camellia192-ctr
  • camellia256-ctr
2023-03-30 01:00 Updated by: zmatsuo
Commentaire

手もとでLibreSSL 3.7.1 に置き換えてみました。 エラーで通りませんでした。

3.7.1をダウンロードする修正を添付します。

2023-03-30 08:00 Updated by: nmaya
Commentaire

zmatsuo への返信

手もとでLibreSSL 3.7.1 に置き換えてみました。

エラーで通りませんでした。

このエラーが、「LibSSL のスタティックリンクライブラリのファイル名が crypto-47.lib から crypto-50.lib に変わっていてリンクできない」というものであれば、それはそうと言うしかないです。そこは ifdef でカバーできず、vcxproj を編集する必要があります。ソースが OpenSSL と共通でも vcxproj は共通に出来ないのと同じです。今のところ「まだ 3.4.3 を使う」で合意していて「3.7.2 が出たら追従しましょう」の段階ですので、そこは変更していません。

違うエラーでしたら、エラーの内容を教えて頂けますか。

2023-03-31 00:03 Updated by: zmatsuo
Commentaire

エラー内容はこんな感じで

27>cipher-3des1.obj : error LNK2019: 未解決の外部シンボル _EVP_CIPHER_meth_new が関数 _evp_ssh1_3des で参照されました
27>cipher-ctr.obj : error LNK2001: 外部シンボル _EVP_CIPHER_meth_new は未解決です
27>cipher-3des1.obj : error LNK2019: 未解決の外部シンボル _EVP_CIPHER_meth_set_iv_length が関数 _evp_ssh1_3des で参照されました
27>cipher-ctr.obj : error LNK2001: 外部シンボル _EVP_CIPHER_meth_set_iv_length は未解決です
 :
 :

「LibSSL のスタティックリンクライブラリのファイル名が crypto-47.libから crypto-50.lib に変わっていてリンクできない」

の指摘通りでした。失礼しました。

パッと見た感じ3.7.1に入れ替えて問題なく動作しました。 よさそうな感じです。手もとでは3.7.1で試してみようと思います。

(Edited, 2023-03-31 01:12 Updated by: zmatsuo)
2023-04-08 00:16 Updated by: zmatsuo
Commentaire

手もとでは3.7.1で試してみようと思います。

手もとの修正をsvnに入れました。libressl_3_7_1です。

引き続き試しに使ってみます。

2023-04-16 13:17 Updated by: nmaya
  • Details Updated
Commentaire

LibreSSL 3.7.2 (stable) が出ていました。問題なさそうなので、あとで trunk にコミットします。

2023-04-17 00:41 Updated by: zmatsuo
Commentaire

nmaya への返信

👍

2023-04-26 22:59 Updated by: nmaya
Commentaire

r10688 でコミットしました。

2023-04-26 23:10 Updated by: nmaya
  • État Update from Ouvert to Atteints
  • Résolution Update from Accepted to Fixed
2023-07-18 17:46 Updated by: nmaya
  • Details Updated

Attachment File List

Modifier

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Connexion