CUDAを glibc 2.41で動かすためのパッチ

glibc 2.41(Ubuntu 25.04 や debian sid で採用)で cuda toolkit を使うにはパッチが必要です

と言っても,以下のパッチを /usr/local/cuda/include/crt/math_functions.h に当てるだけで解決です

--- math_functions.h.orig~      2025-05-22 11:09:49.994627842 +0900
+++ math_functions.h    2025-05-22 11:11:05.624851346 +0900
@@ -2553,7 +2553,7 @@
  *
  * \note_accuracy_double
  */
-extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double                 sinpi(double x);
+extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double                 sinpi(double x) noexcept (true);
 /**
  * \ingroup CUDA_MATH_SINGLE
  * \brief Calculate the sine of the input argument 
@@ -2576,7 +2576,7 @@
  *
  * \note_accuracy_single
  */
-extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float                  sinpif(float x);
+extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float                  sinpif(float x) noexcept (true);
 /**
  * \ingroup CUDA_MATH_DOUBLE
  * \brief Calculate the cosine of the input argument 
@@ -2598,7 +2598,7 @@
  *
  * \note_accuracy_double
  */
-extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double                 cospi(double x);
+extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double                 cospi(double x) noexcept (true);
 /**
  * \ingroup CUDA_MATH_SINGLE
  * \brief Calculate the cosine of the input argument 
@@ -2620,7 +2620,7 @@
  *
  * \note_accuracy_single
  */
-extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float                  cospif(float x);
+extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float                  cospif(float x) noexcept (true);
 /**
  * \ingroup CUDA_MATH_DOUBLE
  * \brief  Calculate the sine and cosine of the first input argument 


経緯としては

  1. 2025年1月 glibc 2.41 登場
  2. cuda toolkit で不具合発生
    • forums.developer.nvidia.com
    • 今までのglibc は sinpi(double x) だったのに,glibc 2.41 で sinpi(double x) noexcept (true) に変更された
    • cuda側でも同じ変更が必要になった
  3. 2025年5月現在.まだ修正されず

という感じです

2025年5月時点で未だに修正されてないので,ブログに書いておくことにしました

GNU Screenにローカル特権昇格の脆弱性

GNU Screen 5.0.0 にセキュリティホールが見つかりました.条件によってはコマンドを3回実行するだけでroot権限を奪われるので注意が必要です
*1

概要

以下のディストリビューションで,サーバーにsshでログインしたあとscreen コマンドを使うだけで簡単にrootが奪えるそうです


影響を受けるのは以下のバージョンのscreenコマンドだけのようです

  • Screen 4.9 (4.9.1で修正済み)
  • Screen 5.0 (5.0.1で修正済み)

私が確認した限りでは,以下のディストリビューションではrootは奪えませんでした

詳細

公式の情報は以下のURLにあります
https://security.opensuse.org/2025/05/12/screen-security-issues.html

概要としては

  • 一部のディストリビューションで /usr/bin/screen が setuid-rootされている
  • 5.0系および4.9系を悪用すると root権限でファイルが編集できる.つまりrootが奪える
  • 修正済みの5.0.1,4.9.1がリリースされた

ということでした

まとめ

やばい!と思って,即調査したのですが,私が管理してるサーバには影響ありませんでした

本来 setuid-rootは不要なので, debian系は setuid-rootされておらず影響がないようです.debian偉い!

とはいえ心配なので,各自,パッケージを更新,状況を確認しておきましょう

*1:悪用されると困るので,rootを奪う手順については本エントリでは言及しません