Back to the news overview

LXC 3.0.2 リリースのお知らせ

2018/08/21

はじめに

LXC チームは LXC 3.0.2 のリリースをおしらせできることをうれしく思います!

Stable に対するバグフィックスのためのリリースですので、大きな変更はありません。バグフィックスと細かな使い勝手の改良にフォーカスしています。

ハイライト

  • ユーザ名前空間内ではデバイスを作成できるがオープンできないという Linux 4.18 での変更に合わせました
  • コンテナの起動時にネットワーク名前空間の ID を割り当てるようにしました
  • static な liblxc をビルドするようにしました
    これは、Netlink 経由でネットワークインターフェースとそのアドレスを効率的に取得するのに役立ちます
  • コードベース全体でスレッドセーフが強化されました
  • 文字列をよりセキュアに扱うために、strncpy()strncat() のすべてのインスタンスに、効率的な strlcpy()strlcat() の実装を追加しました
  • lxc-* ツール群(例: lxc-attachlxc-start)が liblxc 共有ライブラリとシンボルを共有するようになりました
    これによりコードベースのサイズが大幅に減りました
  • コード全体でコーディングスタイルの修正を行いました
CVE-2018-6556

このリリースでは、コミット CVE 2018-6556: verify netns fd in lxc-user-nic によって CVE-2018-6556 が修正されました。この問題は、lxc-user-nic がネットワークインターフェースを削除する際に、無条件でユーザから与えられたパスを開いてしまう問題です。

このコードパスは、非特権ユーザーが到達できないパスの存在をチェックするのに使われる可能性があります。また、読み込み専用の特別なカーネルファイル(ptmxprocsys)をオープンすることによる副作用を引き起こす可能性があります。

影響を受ける LXC のリリースは、2.0.9 を含む 2.0 以上のバージョン、3.0.2 より前の、3.0.0 を含む 3.0 以上のバージョンです。

バグ修正 (LXC)

  • Coverity が見つけた一連のバグを修正しました
  • lxc-usernsexec: クリーンアップとバグフィックスを行いました
  • log: CMD_SYSINFO() を追加しました
  • log: CMD_SYSERROR() を追加しました
  • state: s/sleep()/nanosleep()/
  • lxclock: ファイルロックの改良を行いました
  • lxccontainer: ファイルロックの改良を行いました
  • lxccontainer: F_OFD_GETLK のチェックを修正しました
  • netlink: __netlink_{send,recv,transaction} を追加しました
  • netns: ネットワーク名前空間の ID を割り当てるようにしました
  • MAINTAINERS: Wolfgang Bumiller 氏を追加しました
  • CVE 2018-6556: lxc-user-nic で netns の fd をチェックするようにしました
  • pam_cgfs: クリーンアップを行いました
  • log: デフォルトのログプライオリティを追加しました
  • tree-wide: unsigned longprctl() に与えるようにしました
  • macro: 新しいマクロヘッダーを追加しました
  • conf: EINVAL の際は "max" なしで devpts をマウントするようにしました
  • tree-wide: read()write()EINTR を扱うようにしました
  • tree-wide: pipe()pipe2() に置き換えました
  • confile: マウントオプションをフラグとデータに分離しました
  • conf: rootfs のセットアップを改良しました
  • autotools: -Wvla -std=gnu11 をデフォルトにしました
  • tree-wide: VLA を削除しました
  • tree-wide: strtok_r()lxc_iterate_parts() に置き換えました
  • utils: lxc_iterate_parts() を追加しました
  • apparmor: start-containerlxc-** を許可しました
  • apparmor: 最新のプロファイルに更新しました
  • apparmor: /usr/lib* のパスで mountpivot_root を許可しました
  • conf: ユーザ名前空間内では atime をロックするようにしました
  • conf: 部分的に functional device ノードを扱うようにしました
  • conf: /dev ディレクトリを作成するようにしました
  • autotools: liblxc の共有ライブラリとスタティックライブラリの両方をビルドするようにしました
  • namespace: 名前空間を標準の識別子に変換する API を追加しました
  • tree-wide: MSG_NOSIGNAL を設定するようにしました
  • tree-wide: ダミーファイルを作成する際には mknod() を使うようにしました
  • cgfsng: lxc.cgroup.use を参照するようにしました
  • cgroups: is_crucial_cgroup_subsystem() を削除しました
  • tree-wide: 不要なログプレフィックスを削除しました
  • tests: 全テストをクリーンアップしました
  • terminal: pty ファイルディスクリプタに FD_CLOEXEC を設定するようにしました
  • conf: lxc_setup_dev_console() を簡素化しました
  • tools: ツール類を手直ししました
  • autodev: Linux 4.18 での変更に合わせました
  • log: strerror を使った DEBUG, INFO, TRACE, NOTICE マクロを SYS* マクロに変更しました
  • log: lxc_log_strerror_r マクロを追加しました
  • network: 非特権 LXC が lxc.net.[i].script.up を実行するようになりました
  • conf: 必要なときだけ newuidmapnewgidmap を使うようになりました
  • autotools: クロスコンパイル時に TLS をサポートするようになりました

バグ修正 (LXC templates)

  • fedora: Fedora 28 をサポートを追加しました
  • templates: opensuse: openSUSE Leap 15 のサポートを追加しました
  • templates: opensuse: EOL となったディストリビューションのサポートを削除しました
  • templates: lxc-opensuse.in: キャッシュが完全に存在していることを保証するようにしました
  • templates: lxc-opensuse.in: openSUSE Leap 15 のキャッシュ URL を修正しました

バグ修正 (python3 バインディング)

  • README.md 内の Typo を修正しました

サポートとアップグレード

LXC 3.0.2 は 2023 年 6 月までサポートされる最新の LTS リリースです。
利用可能になった最新のバグ修正リリースに更新することをお勧めします。

ダウンロード