ソフトウェアサンドボックスの基礎(2025)

2026/09/21 3:42

ソフトウェアサンドボックスの基礎(2025)

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

このドキュメントは、本質的なパフォーマンスを維持しながら非特権ユーザーとして安全に Docker コンテナを実行することを可能にするカスタマイズされた seccomp ポリシシーの導入について記述しています。アプローチは Docker のデフォルトのプロファイルに大きく影響を受けており、ルートが必要となる syscalls や指紋採取・プロファイリングに有用な syscalls(例:

mincore
,
cachestat
)を回避するための追加チューニングが施されています。Syscall ポリシーは、systemd のフィルターセットおよび OpenBSD の pledge モデルに着想を得た预先定義されたグループに分類されます:

  • POLICY Aio: io_cancel, io_destroy, io_getevents, io_pgetevents, io_setup, io_submit
  • POLICY BasicIo: read, readv, tee, vmsplice, write, writev, ioctl(一般的なストリーム/基本 I/O)
  • POLICY Clock: clock_getres, clock_gettime, gettimeofday, time, times
  • POLICY CompatX86: personality(古い ABI のエミュレーション), arch_prctl(x86 ファミリの ABI)
  • POLICY CompatDB32: remap_file_pages;POLICY CompatSystemd: name_to_handle_at(マウント ID サポート用)
  • POLICY CompatWine: modify_ldt
  • POLICY Credentials: getegid, geteuid, getgid, getgroups, getresgid, getresuid, getuid
  • POLICY CredentialsExtra: capget(プロセス間の関係性を照会するためのもの;主要な BPF を小さく保つため別扱い)
  • POLICY CredentialsMutation: capset, setfsgid, setfsuid, setgid, setgroups, setregid, setresgid, setresuid, setreuid, setuid
  • POLICY CRuntime: brk, exit, futex, mmap, getrandom(glibc の malloc 用)およびその他の C ランタイム関数
  • POLICY Debug: kcmp, ptrace など。これらは既に YAMA や CAP_PERFMON などのカーネルの safeguard によって制御されています。
  • POLICY Filesystem: access, open, stat, symlink, unlink および多数のファイル操作系コール
  • POLICY Process: clone, execve, fork, getpid, kill, prctl, wait4 など、プロセス制御に関するオペレーション

管理者は、これらの事前に定義されたポリシーセットの中から、特定のワークロードの要件に合わせて選択し、必要に応じてそれらを組み合わせるか、独自の BPF プログラムを書くことで個別の要件を満たすことができます。この標準化された方法は、攻撃対象領域を大幅に縮小しながらも、厳格なセキュリティと現代的なアプリケーションの要求の両方をバランスよく満たします。

Text to translate:

Summary:

This document introduces customized seccomp policies enabling Docker containers to run securely as unprivileged users while retaining essential performance. The approach is heavily influenced by Docker's default profile, with additional tuning to avoid syscalls requiring root or useful for fingerprinting/profiling (e.g.,

mincore
,
cachestat
). Syscall policies are categorized into predefined groups inspired by systemd's filter sets and OpenBSD's pledge model:

  • POLICY Aio: io_cancel, io_destroy, io_getevents, io_pgetevents, io_setup, io_submit
  • POLICY BasicIo: read, readv, tee, vmsplice, write, writev, ioctl (generic/stream/basic I/O)
  • POLICY Clock: clock_getres, clock_gettime, gettimeofday, time, times
  • POLICY CompatX86: personality (old ABI emulation), arch_prctl (x86-family ABI)
  • POLICY CompatDB32: remap_file_pages; POLICY CompatSystemd: name_to_handle_at (mount-id support)
  • POLICY CompatWine: modify_ldt
  • POLICY Credentials: getegid, geteuid, getgid, getgroups, getresgid, getresuid, getuid
  • POLICY CredentialsExtra: capget (for querying process relationships; kept separate to keep the main BPF small)
  • POLICY CredentialsMutation: capset, setfsgid, setfsuid, setgid, setgroups, setregid, setresgid, setresuid, setreuid, setuid
  • POLICY CRuntime: brk, exit, futex, mmap, getrandom (for glibc's malloc) and other C runtime functions
  • POLICY Debug: kcmp, ptrace and similar; these are already gated by kernel safeguards such as YAMA or CAP_PERFMON.
  • POLICY Filesystem: access, open, stat, symlink, unlink and many other file-operation syscalls
  • POLICY Process: clone, execve, fork, getpid, kill, prctl, wait4 and similar process-control operations

Administrators can choose from these predefined policy sets tailored to specific workload needs, optionally combining them or writing custom BPF programs for unique requirements. This standardized method significantly reduces the attack surface while balancing strict security with modern application demands.

本文

Docker セカーム(seccomp)ポリシーのカスタマイズと解説

Docker のデフォルト設定に加え、以下の点を考慮したカスタマイズが施されています。

  • 特権ユーザー回避: 本来
    root
    権限が必要なシステムコールを避けるため、特権を持たないユーザー向けに設計しています(完全な禁止ではありません)。これにより BPF プログラムの肥大化とオーバーヘッドを防ぎます。
  • 指紋採取防止: デスクトップアプリへの悪用やプロファイリングに使われやすいシステムコール(例:
    mincore
    ,
    cachestat
    など)を排除します。
  • 分類方式: systemd の seccomp や OpenBSD の pledge に着想を得た、カテゴリ別の分割を採用しています。

システムコールポリシーの定義

以下は、主要な機能領域別にシステムコールをカテゴライズしたポリシー例です。

基本入出力と互換性情報

  • Aio:
    io_setup
    ,
    io_submit
    などの IO スケジューリング関連。
  • BasicIo: ファイルやソケット、TTY 操作に関連する基本的な I/O。
    • ioctl()
      はデバイスドライバへのアクセス手段ですが、glibc で避けて通れないため含めています。
  • Clock: タイムベースの取得(
    clock_gettime
    ,
    time
    など)。
  • CompatX86: x86 ABI 互換のためのエミュレーション関連。
  • CompatDB32: データベース 32 ビット互換(
    remap_file_pages
    )。
  • CompatSystemd: systemd マウント ID 取得用(
    name_to_handle_at
    )。
  • CompatWine: Wine 互換(
    modify_ldt
    )。

クレデンシャルとプロセス制御

  • Credentials: ユーザー/グループ ID の取得(
    getuid
    ,
    getgid
    など)。
  • CredentialsExtra: プロセス間クエリに関する syscall。
    • ※ BPF コード肥大化を防ぐため、必要最小限に制限しています。
  • CredentialsMutation: ユーザー/グループ ID の変更(
    setuid
    ,
    capset
    など)。

ランタイム環境と実行

  • CRuntime: プログラムのロードおよび C ランタイム動作維持に必要な syscall。
    • メモリ割り当て、スレッド制御、プロセス終了処理を含む。
    • 例:
      mmap
      ,
      exit
      ,
      getrandom
      (malloc 依存)など。
  • Debug: デバッグや検査用途の syscall。
    • ※ YAMA ptrace_scope や CAP_PERFMON で制限されているものを含みます。
    • 例:
      ptrace
      ,
      perf_event_open
      ,
      process_vm_readv
      など。
  • Process: プロセス制御、実行、ネームスペース管理の必須セット。
    • サンドボックス化時に常に必要となる操作(
      clone
      ,
      fork
      ,
      execve
      ,
      kill
      など)。

ファイルシステムと I/O

  • FileDescriptors: ファイル記述子の操作(
    open
    ,
    close
    ,
    dup
    など)。
  • FileIo: オープン済みファイルへのアクセス。
    • UNIX ソケット、Memfd 含む。例:
      read
      ,
      write
      ,
      splice
      など。
  • Filesystem: ファイルシステムの構造操作(
    open
    ,
    mkdir
    ,
    unlink
    など)。
  • FilesystemAttr: ファイル属性の変更(
    chmod
    ,
    chown
    ,
    utime
    など)。
  • Sync: ストレージ同期処理(
    fsync
    ,
    fdatasync
    など)。

ネットワークと IPC

  • NetworkIo: 双方向通信ソケット(TCP/UDP)の操作。
    • 例:
      connect
      ,
      send
      ,
      recv
      ,
      setsockopt
      など。
  • NetworkServer: サーバー側の動作(
    bind
    ,
    listen
    ,
    accept
    )。
  • NetworkSocketTcp: IPv4/IPv6 TCP ソケット作成。
  • NetworkSocketUdp: IPv4/IPv6 UDP ソケット作成。
  • NetworkSocketUnix: UNIX ドメインソケット作成。
  • Ipc: システム間通信(IPC)。
    • SysV IPC、POSIX メッセージキュー、メモリ共有領域など。
    • 例:
      msgsnd
      ,
      shmget
      ,
      semop
      など。

その他機能と制御

  • Memlock: メモリロック制御(
    mlock
    ,
    mlockall
    )。
  • IoEvent: イベントループ操作(
    epoll
    ,
    select
    ,
    poll
    )。
  • IoUring: IO uring オペレーション。
    • ※ 現時点では一般的な用途では安全ではないとされています。
  • Pkey: メモリ保護キー制御。
  • Resources: システムリソースの確認(CPU アフィンリティ、優先度など)。
  • ResourcesMutation: リソース設定の変更(スケジューリング制限など)。
  • Signal: プロセスシグナル処理。
  • Timer: タイマー操作(
    alarm
    ,
    timerfd_create
    など)。
  • Sandbox: サンボックス化自体の制御(Landlock, seccomp 自身)。

ポリシーコード例

クロック時間管理ポリシー

POLICY Clock {
    ALLOW {
        clock_getres, clock_gettime, gettimeofday, time, times
    }
}

互換性情報(x86)

POLICY CompatX86 {
    ALLOW {
        // 古い ABI エミュレーション用
        personality(persona) {
            persona == /*PER_LINUX=*/0 || persona == /*PER_LINUX32=*/8 ||
            persona == /*UNAME26=*/0x0020000 ||
            persona == /*PER_LINUX32|UNAME26=*/0x20008 ||
            persona == 0xffffffff
        },

        // x86 ABI 制御用(c-runtime 以外の場所で記述)
        arch_prctl
    }
}

Wasm ランタイム環境維持ポリシー

POLICY CRuntime {
    ALLOW {
        brk, exit, exit_group, futex, futex_requeue, futex_wait, 
        futex_waitv, futex_wake, get_robust_list, get_thread_area, 
        gettid, madvise, map_shadow_stack, membarrier, mmap, mprotect, 
        mremap, munmap, restart_syscall, rseq, sched_yield, set_robust_list, 
        set_thread_area, set_tid_address,

        // glibc の malloc() は getrandom() への参照を含んでいるため
        getrandom
    }
}

ネットワークソケット(TCP)

POLICY NetworkSocketTcp {
    ALLOW {
        socket(domain, type, protocol) {
            (type & 0x7ff) == /*SOCK_STREAM=*/1 && protocol == 0 &&
            (domain == /*AF_INET=*/2 || domain == /*AF_INET6=*/10)
        }
    }
}

プロセス制御(必須セット)

POLICY Process {
    ALLOW {
        // clone2 はどこでしょうか?ia64 のみ実装されています。
        clone, clone3, execve, execveat, fork, getpgid, getpgrp, getpid,
        getppid, getrusage, getsid, kill, pidfd_open, pidfd_send_signal, 
        prctl, rt_sigqueueinfo, rt_tgsigqueueinfo, setpgid, setsid, tgkill, 
        tkill, vfork, wait4, waitid
    }
}

リソース変更ポリシー

POLICY ResourcesMutation {
    ALLOW {
        ioprio_set, prlimit64, sched_setaffinity, sched_setattr, 
        sched_setparam, sched_setscheduler, setpriority, setrlimit
    }
}

同じ日のほかのニュース

一覧に戻る →

2026/09/21 2:38

サムスン電子は、HBM4 と HBM4E ドラムの生産量を 2 倍超と予測されています。

## Japanese Translation: サムスン電子は、高付加価値な HBM4 メモリ製品(第 6 世代および来期の第 7 世代バリエーション)へのシフトを強化し、高度な 6nm 技術を用いた量産が既に開始されています。総年間生産量は今年にほぼ 40% 増加して約 25 万ウェハと予測される一方、次年度には HBM4E の生産を加速させることで、特定の HBM4 製品への生産量を倍以上に増やす計画です。この積極的な拡張は、主にガラスキャリアの供給が大幅に増加することに依存しており、これは高層スタック(12 レア層以上)の重要なサポート層となります。ガラスキャリアの供給量は今年 2 万枚/月から、来期には 5 万枚/月へと増加します。結果として、HBM4 ファミリーがサムスンの総メモリ出荷量に占める割合は、現在約 40% から次年度には 80% に上昇する見込みです。この成長を持続するには、ウェーファーの歪み制御を maîtriser し、外注洗浄オペレーションのスケーリングを行うことが不可欠であり、これらがサムスンの将来のメモリビジネスにおいてサプライチェーンの調整と技術的な精度が極めて重要であることを示しています。

2026/09/21 0:18

広告収集機能により、ChatGPT は他のウェブサイトでのあなたの行動を知るようになりました

## Japanese Translation: **改善されたサマリー:** OpenAI の広告収集システムが、第三者の広告主サイトにわたるユーザーの閲覧活動と ChatGPT のアイデンティティを秘密裡に結びつけることを示す最も重要な発見は、`__obi` という専用のクッキーを利用している点にあります。この仕組みは、ChatGPT 上でアカウントのアイデンティティをバインドした JWT を生成し、標準的な広告ピクセルを通じてサイト間へ送信することで機能します。これにより、ユーザーがログインしていなくても、OpenAI はユーザーの行動をプロファイルできます。「__obi」はセキュリティ設定によりほとんどのブラウザでブロックされていますが、Android の Chrome などサポートされているブラウザでは、その独自の構成(`SameSite=None`、「HttpOnly」、特定のドメインスコーピング)によってこれらの保護を回避することが可能です。その結果、広告主はターゲティングのためにユーザーのアイデンティティに直接アクセスでき、明示的なマーケティング同意なしにスクレイピングによって収集されたフォームやページテキストから医療歴や債務の詳細など機密データを露見するリスクが生じます。公開された問い合わせを受けて OpenAI はこの問題を確認し内部審査を開始しましたが、Intelligent Tracking Prevention により iOS/Safari ではこの仕組みが機能しないため、限界が存在します。

2026/09/21 0:16

海賊フェイスがLLMモデルの削除を阻止した

## Japanese Translation: Pirate Face は、主権を持つ人工知能のための分散型かつ検閲耐性のあるインフラストラクチャを提供することで、AI アクセスを革新します。Hugging Face のオープンモデルは、グローバルピアツーピアスウォームと組み込まれたウェブシードを使用して鏡映されており、ユーザーが単一の障害点を依存する必要がないことを保証しています。モデルの完全性は、公式 Hugging Face SHA-256 ハッシュに対するチェックサム検証を通じて保証され、HTTPS リンクがダウンした場合、トラフィックは耐性の高い P2P ネットワークを介して自動的にルート付けされ、モデルは"Rescued"とマークされます。 基本的なブラウジングおよびダウンロードにはアカウントは不要ですが、貢献を追跡し、将来の利益を主張し、なりすましを防ぐ(検証済みクリエイターバッジを通じて)ために、検証済みハンドルは不可欠です。独自のモデルを追加するには、ピア専用マグネット、ピンされたリビジョン、ファイルチェックサム、そしてライセンス証拠(MIT、Apache-2.0、または Kimi-K3 の例外)を提出する必要があります。 導入はシームレスです:既存のパイプラインは `$export HF_ENDPOINT=https://pirateface.co` を設定することで瞬時に統合でき、Hugging Face やスウォームを自動的にルート付けします。ユーザーが現在、直接の公開のために Hugging Face にコピーを保持しておく必要がある一方で、独立した公開機能は将来計画されています。参加にはポイント(例:ウェルカムポイント、紹介ポイント、救助されたモデルごとに最初の検証済みハンドルにクレジットされる 25 ポイント)が付与され、アクティブな参加者向けのフリーコンピューティングクレジットや独占モデルリリースなど、今後の機能も予定されています。最終的に、Pirate Face はホスティングのシャットダウンや外部の規制に関わらず、オープンモデルへの継続的なアクセスを保証します。

ソフトウェアサンドボックスの基礎(2025) | そっか~ニュース