Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
linux-3.0.35_CVE-2019-10220 — Linux kernel 3.0.35 ソースツリーで、CVE-2019-10220 に焦点を当て、脆弱性分析およびエクスプロイト研究のためのリファレンスを提供します。 | Kitploit
ツール/GitHubGitHub/trinadh465/linux-3.0.35_cve-2019-10220
脆弱性分析エクスプロイトバイナリ解析論文と研究学習と教育
GitHubtrinadh465/linux-3.0.35_cve-2019-10220

linux-3.0.35_CVE-2019-10220

Linux kernel 3.0.35 ソースツリーで、CVE-2019-10220 に焦点を当て、脆弱性分析およびエクスプロイト研究のためのリファレンスを提供します。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
13年前未レビュー
共有

Linux カーネル リリース 3.x http://kernel.org/

これらは Linux バージョン 3 のリリースノートです。これらを注意深くお読みください。これらは、これが何であるか、カーネルのインストール方法、および問題が発生した場合の対処方法を説明しています。

LINUX とは

Linux は、Unix オペレーティングシステムのクローンであり、Linus Torvalds によって、ネット上の緩やかに結びついたハッカーのチームの支援を受けて一から書かれました。POSIX および Single UNIX Specification への準拠を目指しています。

真のマルチタスク、仮想メモリ、共有ライブラリ、デマンドローディング、共有コピーオンライト実行可能ファイル、適切なメモリ管理、IPv4 および IPv6 を含むマルチスタックネットワーキングなど、現代の本格的な Unix に期待されるすべての機能を備えています。

GNU General Public License のもとで配布されています。詳細については、付属の COPYING ファイルを参照してください。

どのハードウェアで動作しますか?

当初は 32 ビット x86 ベースの PC(386 以上)向けに開発されましたが、今日では Linux は(少なくとも)Compaq Alpha AXP、Sun SPARC および UltraSPARC、Motorola 68000、PowerPC、PowerPC64、ARM、日立 SuperH、Cell、IBM S/390、MIPS、HP PA-RISC、Intel IA-64、DEC VAX、AMD x86-64、AXIS CRIS、Xtensa、Tilera TILE、AVR32、Renesas M32R アーキテクチャでも動作します。

Linux は、ページングメモリ管理ユニット (PMMU) と GNU C コンパイラ (gcc)(GNU Compiler Collection, GCC の一部)の移植があれば、ほとんどの汎用 32 ビットまたは 64 ビットアーキテクチャに容易に移植できます。Linux は PMMU のない多くのアーキテクチャにも移植されていますが、その場合機能は明らかに多少制限されます。Linux はそれ自体にも移植されています。現在では、カーネルをユーザースペースアプリケーションとして実行できます。これは UserMode Linux (UML) と呼ばれます。

DOCUMENTATION:

  • インターネット上や書籍で、Linux 固有および一般的な UNIX に関する質問のための多くのドキュメントが電子形式で利用可能です。Linux FTP サイトのドキュメントサブディレクトリにある LDP (Linux Documentation Project) の書籍を参照することをお勧めします。この README はシステムのドキュメントを意図したものではありません。より優れた情報源が多数あります。

  • Documentation/ サブディレクトリにはさまざまな README ファイルがあります。これらには通常、いくつかのドライバ用のカーネル固有のインストールノートなどが含まれています。各ファイルに何が含まれているかのリストについては、Documentation/00-INDEX を参照してください。Changes ファイルをお読みください。カーネルをアップグレードした結果生じる可能性のある問題に関する情報が含まれています。

  • Documentation/DocBook/ サブディレクトリには、カーネル開発者とユーザー向けのいくつかのガイドが含まれています。これらのガイドは、PostScript (.ps)、PDF、HTML、man ページなど、さまざまな形式でレンダリングできます。インストール後、"make psdocs"、"make pdfdocs"、"make htmldocs"、または "make mandocs" を実行すると、指定された形式でドキュメントがレンダリングされます。

INSTALLING the kernel source:

  • 完全なソースをインストールする場合は、カーネル tarball を権限のあるディレクトリ(例:ホームディレクトリ)に置き、展開します:

    root@kitploit:~
     gzip -cd linux-3.X.tar.gz | tar xvf -
    

    または bzip2 -dc linux-3.X.tar.bz2 | tar xvf -

    "XX" を最新のカーネルのバージョン番号に置き換えてください。

    /usr/src/linux 領域を使用しないでください!この領域には、ライブラリのヘッダファイルで使用される(通常不完全な)カーネルヘッダのセットがあります。これらはライブラリと一致している必要があり、カーネル du jour が何であっても混乱させてはいけません。

  • パッチを適用することで、3.x リリース間のアップグレードも可能です。パッチは従来の gzip 形式と新しい bzip2 形式で配布されています。パッチによるインストールを行うには、すべての新しいパッチファイルを入手し、カーネルソースのトップレベルディレクトリ (linux-3.x) に移動して、次のコマンドを実行します:

    root@kitploit:~
     gzip -cd ../patch-3.x.gz | patch -p1
    

    または bzip2 -dc ../patch-3.x.bz2 | patch -p1

    (現在のソースツリーのバージョンより大きいすべてのバージョンについて xx を繰り返します。順番に) 問題ないはずです。バックアップファイル(xxx~ または xxx.orig)を削除し、失敗したパッチ(xxx# または xxx.rej)がないことを確認してください。もしあれば、あなたか私のどちらかが間違っています。

    3.x カーネル用のパッチとは異なり、3.x.y カーネル(-stable カーネルとしても知られる)用のパッチは増分的ではなく、ベースとなる 3.x カーネルに直接適用されます。詳細については、Documentation/applying-patches.txt をお読みください。

    あるいは、スクリプト patch-kernel を使用してこのプロセスを自動化できます。これにより、現在のカーネルバージョンが判別され、見つかったパッチが適用されます。

    root@kitploit:~
     linux/scripts/patch-kernel linux
    

    上記のコマンドの最初の引数は、カーネルソースの場所です。パッチは現在のディレクトリから適用されますが、代替ディレクトリを 2 番目の引数として指定することもできます。

  • 安定版系列のパッチ(例:patch-3.x.y)を使用してリリース間をアップグレードする場合、これらの「ドットリリース」は増分的ではなく、3.x ベースツリーに適用する必要があることに注意してください。たとえば、ベースカーネルが 3.0 で 3.0.3 パッチを適用する場合、最初に 3.0.1 および 3.0.2 パッチを適用する必要はなく、実際に適用してはいけません。同様に、カーネルバージョン 3.0.2 を実行していて 3.0.3 にジャンプする場合、3.0.3 パッチを適用する 前に、まず 3.0.2 パッチを逆適用(つまり patch -R)する必要があります。これについては Documentation/applying-patches.txt で詳しく読むことができます。

  • 古い .o ファイルや依存関係が残っていないことを確認してください:

    root@kitploit:~
     cd linux
     make mrproper
    

    これでソースが正しくインストールされたはずです。

  • SOFTWARE REQUIREMENTS

    3.x カーネルのコンパイルと実行には、さまざまなソフトウェアパッケージの最新バージョンが必要です。必要な最小バージョン番号とこれらのパッケージの更新方法については、Documentation/Changes を参照してください。これらのパッケージの古すぎるバージョンを使用すると、追跡が非常に困難な間接的なエラーが発生する可能性があるため、ビルドまたは操作中に明らかな問題が発生した場合に単にパッケージを更新すればよいとは考えないでください。

    BUILD directory for the kernel:

    カーネルをコンパイルする場合、デフォルトではすべての出力ファイルがカーネルソースコードと一緒に保存されます。オプション "make O=output/dir" を使用すると、出力ファイル(.config を含む)の代替場所を指定できます。例: kernel source code: /usr/src/linux-3.N build directory: /home/name/build/kernel

    カーネルを構成してビルドするには、次を使用します: cd /usr/src/linux-3.N make O=/home/name/build/kernel menuconfig make O=/home/name/build/kernel sudo make O=/home/name/build/kernel modules_install install

    注意:'O=output/dir' オプションを使用する場合は、make のすべての呼び出しでそれを使用する必要があります。

    CONFIGURING the kernel:

    マイナーバージョンを 1 つだけアップグレードする場合でも、この手順をスキップしないでください。各リリースで新しい構成オプションが追加され、構成ファイルが期待どおりに設定されていないと、奇妙な問題が発生します。最小限の作業で既存の構成を新しいバージョンに引き継ぎたい場合は、"make oldconfig" を使用します。これにより、新しい質問に対する回答のみが求められます。

    • 代替の構成コマンドは次のとおりです: "make config" プレーンテキストインターフェース。 "make menuconfig" テキストベースのカラーメニュー、ラジオリスト、ダイアログ。 "make nconfig" 拡張テキストベースのカラーメニュー。 "make xconfig" X ウィンドウ (Qt) ベースの構成ツール。 "make gconfig" X ウィンドウ (Gtk) ベースの構成ツール。 "make oldconfig" 既存の ./.config ファイルの内容に基づいてすべての質問をデフォルト化し、新しい構成シンボルについて尋ねます。 "make silentoldconfig" 上記と同様ですが、既に回答済みの質問で画面を乱雑にするのを避けます。 さらに依存関係を更新します。 "make defconfig" アーキテクチャに応じて、arch/$ARCH/defconfig または arch/$ARCH/configs/${PLATFORM}_defconfig のデフォルトシンボル値を使用して ./.config ファイルを作成します。 "make ${PLATFORM}_defconfig" arch/$ARCH/configs/${PLATFORM}_defconfig のデフォルトシンボル値を使用して ./.config ファイルを作成します。 "make help" を使用して、アーキテクチャで利用可能なすべてのプラットフォームのリストを取得します。 "make allyesconfig" シンボル値を可能な限り 'y' に設定して ./.config ファイルを作成します。 "make allmodconfig" シンボル値を可能な限り 'm' に設定して ./.config ファイルを作成します。 "make allnoconfig" シンボル値を可能な限り 'n' に設定して ./.config ファイルを作成します。 "make randconfig" シンボル値をランダムな値に設定して ./.config ファイルを作成します。

      Linux カーネル構成ツールの使用に関する詳細は、Documentation/kbuild/kconfig.txt にあります。

      "make config" に関する注意事項:

      • 不要なドライバを含めるとカーネルが大きくなり、状況によっては問題を引き起こす可能性があります。存在しないコントローラカードのプローブが他のコントローラを混乱させる可能性があります。
      • "Processor type" を 386 より高く設定してカーネルをコンパイルすると、386 では動作しないカーネルになります。カーネルは起動時にこれを検出し、動作を停止します。
      • 数値演算エミュレーションを組み込んでコンパイルされたカーネルは、コプロセッサが存在する場合でもそれを使用します。その場合、数値演算エミュレーションは使用されません。カーネルはわずかに大きくなりますが、数値演算コプロセッサの有無にかかわらず、異なるマシンで動作します。
      • "kernel hacking" 構成の詳細は、通常、カーネルを大きくまたは遅くし(あるいはその両方)、一部のルーチンを積極的に不良コードを壊してカーネルの問題を見つけるように構成することによって、カーネルの安定性を低下させる可能性があります(kmalloc())。したがって、「開発」、「実験」、「デバッグ」機能の質問にはおそらく 'n' と答えるべきです。

    COMPILING the kernel:

    • 少なくとも gcc 3.2 が利用可能であることを確認してください。詳細については、Documentation/Changes を参照してください。

      このカーネルでも a.out ユーザープログラムを実行できることに注意してください。

    • "make" を実行して、圧縮されたカーネルイメージを作成します。カーネル makefile に合うように lilo がインストールされていれば "make install" を実行することも可能ですが、最初に特定の lilo 設定を確認することをお勧めします。

      実際のインストールを行うには root である必要がありますが、通常のビルドでは root は必要ありません。root の権限を軽々しく使わないでください。

    • カーネルの一部を modules として構成した場合は、"make modules_install" も実行する必要があります。

    • 詳細なカーネルコンパイル/ビルド出力:

      通常、カーネルビルドシステムはかなり静かなモードで実行されます(ただし完全に無音ではありません)。ただし、あなたや他のカーネル開発者は、コンパイル、リンク、その他のコマンドが正確にどのように実行されるかを確認する必要がある場合があります。そのためには、「verbose」ビルドモードを使用します。これは、"make" コマンドに "V=1" を挿入することで行います。例:

      make V=1 all

      ビルドシステムに各ターゲットの再ビルドの理由も表示させるには、"V=2" を使用します。デフォルトは "V=0" です。

    • 問題が発生した場合に備えて、バックアップカーネルを手元に用意してください。これは特に開発リリースに当てはまります。各新リリースにはデバッグされていない新しいコードが含まれているためです。そのカーネルに対応するモジュールのバックアップも必ず保持してください。動作中のカーネルと同じバージョン番号の新しいカーネルをインストールする場合は、"make modules_install" を実行する前にモジュールディレクトリのバックアップを作成してください。 あるいは、コンパイル前にカーネル構成オプション "LOCALVERSION" を使用して、通常のカーネルバージョンに一意のサフィックスを追加します。LOCALVERSION は "General Setup" メニューで設定できます。

    • 新しいカーネルを起動するには、カーネルイメージ(例:コンパイル後の .../linux/arch/i386/boot/bzImage)を、通常の起動可能なカーネルが置かれている場所にコピーする必要があります。

    • LILO などのブートローダの支援なしでフロッピーから直接カーネルを起動することは、もはやサポートされていません。

      ハードドライブから Linux を起動する場合、おそらく LILO を使用しており、/etc/lilo.conf ファイルで指定されたカーネルイメージを使用します。カーネルイメージファイルは通常 /vmlinuz、/boot/vmlinuz、/bzImage、または /boot/bzImage です。新しいカーネルを使用するには、古いイメージのコピーを保存し、新しいイメージを古いイメージの上にコピーします。その後、LILO を再実行してローディングマップを更新する必要があります!!そうしないと、新しいカーネルイメージを起動できません。

      LILO の再インストールは、通常 /sbin/lilo を実行するだけです。新しいカーネルが動作しない場合に備えて、古いカーネルイメージ(例:/vmlinux.old)のエントリを指定するために /etc/lilo.conf を編集することもできます。詳細については LILO のドキュメントを参照してください。

      LILO を再インストールしたら、準備完了です。システムをシャットダウンし、再起動してお楽しみください!

      カーネルイメージでデフォルトのルートデバイス、ビデオモード、ramdisk サイズなどを変更する必要がある場合は、'rdev' プログラム(または適切な場合には LILO ブートオプション)を使用してください。これらのパラメータを変更するためにカーネルを再コンパイルする必要はありません。

    • 新しいカーネルで再起動してお楽しみください。

    IF SOMETHING GOES WRONG:

    • カーネルのバグが原因と思われる問題がある場合は、MAINTAINERS ファイルを確認して、問題が発生しているカーネルの部分に関連する特定の人物がいるかどうかを確認してください。そこに誰もリストされていない場合は、次善の策として、私 ([email protected]) にメールを送り、場合によっては他の関連するメーリングリストやニュースグループに送信してください。

    • すべてのバグレポートでは、必ず どのカーネルについて話しているのか、問題を再現する方法、およびあなたの設定(常識的に判断してください)を教えてください。問題が新しい場合はその旨を伝え、問題が古い場合は最初に気付いた時期を教えてください。

    • バグが次のようなメッセージを生成した場合

      unable to handle kernel paging request at address C0000010 Oops: 0002 EIP: 0010:XXXXXXXX eax: xxxxxxxx ebx: xxxxxxxx ecx: xxxxxxxx edx: xxxxxxxx esi: xxxxxxxx edi: xxxxxxxx ebp: xxxxxxxx ds: xxxx es: xxxx fs: xxxx gs: xxxx Pid: xx, process nr: xx xx xx xx xx xx xx xx xx xx xx

      または、画面やシステムログに同様のカーネルデバッグ情報が表示された場合は、正確に 複製してください。ダンプは理解不能に見えるかもしれませんが、問題のデバッグに役立つ情報が含まれています。ダンプの上のテキストも重要です。カーネルがコードをダンプした理由について何かを示しています(上記の例では、不良なカーネルポインタが原因です)。ダンプを理解する詳細については、Documentation/oops-tracing.txt を参照してください。

    • CONFIG_KALLSYMS を有効にしてカーネルをコンパイルした場合は、ダンプをそのまま送信できます。それ以外の場合は、"ksymoops" プログラムを使用してダンプを理解する必要があります(ただし、CONFIG_KALLSYMS でのコンパイルが通常は推奨されます)。このユーティリティは ftp://ftp..kernel.org/pub/linux/utils/kernel/ksymoops/ からダウンロードできます。または、手動でダンプのルックアップを行うこともできます:

    • 上記のようなデバッグダンプでは、EIP 値の意味を調べられると非常に役立ちます。16 進数の値そのものは私や他の人にあまり役立ちません。それは特定のカーネル設定に依存します。すべきことは、EIP 行から 16 進数値を取得し("0010:" は無視)、カーネル namelist でそれを調べて、問題のアドレスを含むカーネル関数を特定することです。

      カーネル関数名を見つけるには、症状を示したカーネルに関連付けられたシステムバイナリを見つける必要があります。これはファイル 'linux/vmlinux' です。namelist を抽出し、カーネルクラッシュからの EIP と照合するには、次のコマンドを実行します:

      root@kitploit:~
       nm vmlinux | sort | less
      

      これにより、昇順にソートされたカーネルアドレスのリストが得られ、そこから問題のアドレスを含む関数を簡単に見つけられます。カーネルデバッグメッセージで指定されるアドレスは関数アドレスと正確に一致するとは限らない(実際、ほとんど一致しない)ため、リストを単に 'grep' することはできません。しかし、リストには各カーネル関数の開始点が示されているため、検索中のアドレスより低い開始アドレスを持ち、その後に高いアドレスの関数が続く関数を探すことで、目的の関数を見つけられます。実際、問題レポートに「コンテキスト」を少し含め、目的の行の前後数行を提供すると良いでしょう。

      何らかの理由で上記の手順を実行できない場合(事前コンパイルされたカーネルイメージなどを使用している場合)、設定についてできるだけ多く教えていただけると助かります。詳細については、REPORTING-BUGS ドキュメントをお読みください。

    • あるいは、実行中のカーネルで gdb を使用できます(読み取り専用、つまり値を変更したりブレークポイントを設定したりすることはできません)。これを行うには、最初に -g フラグを付けてカーネルをコンパイルします。arch/i386/Makefile を適切に編集し、その後 "make clean" を実行します。また、CONFIG_PROC_FS を有効にする必要があります("make config" 経由)。

      新しいカーネルで再起動した後、"gdb vmlinux /proc/kcore" を実行します。これで、通常の gdb コマンドをすべて使用できます。システムがクラッシュしたポイントを調べるコマンドは "l *0xXXXXXXXX" です(XXX を EIP 値に置き換えてください)。

      現在、実行されていないカーネルを gdb でデバッグすることはできません。gdb が(誤って)カーネルがコンパイルされた開始オフセットを無視するためです。

    ツールをダウンロード