【Linux】Linuxカーネルが「$ORIGIN」を限定サポートへ!動的ローダーのハードコード地獄から開放されるか?
投稿日時: 2026/07/21 15:29
■ 概要・編集部サマリー
【背景・課題】従来ELFバイナリのPT_INTERP(ローダー)はカーネルがロードするため絶対パスのハードコードが必要で、ポータブルな実行ファイル配布の障害だった。 【焦点・技術】カーネルレベルで$ORIGIN(実行ファイルが存在するディレクトリ)相対のローダー指定がサポートされ、独自ld.soの同梱やNix/Bazel等でのポータブル化が期待される。 【評価・議論】アプリごとのローダー同梱はアンチパターンという異論や、シバン(#!)のPATH検索(カーネルではなくlibc/シェル側の役割)に関する議論で盛り上がっている。
1. 動的ライブラリ参照における「$ORIGIN」の役割
LinuxのELFバイナリにおいて、rpathに`$ORIGIN`を指定することで、実行ファイルが存在するディレクトリからの相対パスで共有ライブラリを検索・ロードできる。
ハードコードされた`/usr/lib`等の絶対パス依存を回避し、ポータブルなアプリケーション配布を可能にする必須機能である。
2. SUID/SGIDバイナリでのセキュリティホールと制限付きパッチ
SUIDバイナリでの`$ORIGIN`利用は過去に無数のローカル権限昇格攻撃に悪用されたため、カーネル層で呼び出し元のセキュアビッドを検証する処理が追加された。
セキュリティを確保しつつ、コンテナやポータブルパッケージ(AppImage等)での正常動作を阻害しない絶妙なロジック調整が行われた。
3. システムセキュリティと利便性のトレードオフ
動的ローダーとカーネルの境界線における高度なセキュリティ設計例であり、低レイヤエンジニア必見の改修内容だ。
Linuxエコシステムの安全性を高める着実な進展といえる。
海外掲示板の反応・まとめ
■ 記事概要 Linuxカーネルにおいて、ELFバイナリの動的ローダー(PT_INTERP)指定時に「$ORIGIN(実行ファイルの存在するディレクトリ)」を相対パスとして解釈可能にするパッチが話題を呼んでいます。従来はカーネルが直接ローダーを呼び出すため絶対パス指定が必須でしたが、この変更によりバイナリとローダー(ld.so)をセットでポータブルに配布することが容易になります。 ■ 議論のハイライト ・PT_INTERPの制約とポータブル化(Nix/Bazelユーザーからの歓喜) ・「各アプリが個別にld.soを持つのはオーバーキル/アンチパターンでは?」という技術的懸念 ・シバン(#!)実行時のPATH検索をカーネルがやらない理由(execvp(3)とexecve(2)の役割分担)
ついにカーネルレベルで$ORIGINサポートかよ! 今までELFのPT_INTERPだけはリロケータブルにできなくて、/lib64/ld-linux-x86_64.so.2 みたいな絶対パスをラッパースクリプトで誤魔化したりバイナリ書き換えたりしてたから朗報すぎるわ。
>>2 ほんこれ。NixとかBazelでビルドしたバイナリを別の場所に持って行くとき、絶対パスのハードコードが一番のネックだったんよな。 これでバイナリと同階層にld.so置けばどこでも動くポータブルバイナリが作れるようになるで。
いや待てや。アプリごとに独自の動的ローダー(ld.so)を抱え込ませるのって普通にアンチパターンちゃうか? そんなんオーバーキルだし、OS側で1つの標準ローダーを共有すればええ話やんけ。
>>4 Linuxカーネルから見たら「ユーザー空間の標準ローダー」なんて存在しないんやで? たまたまGNUが作ったglibcのld.soが広く使われてるだけで、カーネル自体はユーザー空間から完全に独立しとる。 だからアプリ側が好きなローダーを選べる自由度がある方がカーネルの設計としては正しいんや。
シバン(#!)の指定でも$ORIGIN使わせてくれへんか? POSIXで『#!/usr/bin/env sh』とか書くのダサいし、カレントディレクトリやRelative pathで指定したいんだが。
>>6 それ「なんでカーネルはシバンのPATHを探してくれないの?」って昔から言われるやつな。 そもそもカーネル(execveシステムコール)はPATH環境変数なんて一切知らんのよ。 PATHを検索して解決するのはlibcの『execvp(3)』とかシェルの役割やからな。カーネルにPATH探させようとするとセキュリティ的にも荒れるし。
まあシバン周りはbinfmt_misc使えば今でも一応トリッキーに解決デモはできるけどな。 何はともあれ、OBSみたいなデカいプロジェクトでも配布しやすくなるし、カーネル本家にこの手の柔軟性が入るのは素直に胸熱やわ。
>>8 現場でのパフォーマンスチューニングと実運用での注意点がすごく勉強になる。