Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
linux-4.1.15_CVE-2023-26607 — Linux 内核 4.1.15 源代码,重点关注 CVE-2023-26607,为漏洞分析和理解受影响代码提供参考。 | Kitploit
工具/GitHubGitHub/trinadh465/linux-4.1.15_cve-2023-26607
漏洞分析漏洞利用二进制分析论文与研究学习与教育
GitHubtrinadh465/linux-4.1.15_cve-2023-26607

linux-4.1.15_CVE-2023-26607

Linux 内核 4.1.15 源代码,重点关注 CVE-2023-26607,为漏洞分析和理解受影响代码提供参考。

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
113年前尚未审核
分享

Linux内核发布版4.x http://kernel.org/

这些是Linux 4.x版本的发布说明。请仔细阅读,因为它们会告诉您这一切是怎么回事,解释如何安装内核,以及如果出现问题该怎么办。

什么是Linux?

Linux是Unix操作系统的克隆,由Linus Torvalds从头编写,并得到了来自互联网上一个松散的黑客团队的帮助。它旨在符合POSIX和单一UNIX规范。

它拥有你在一个现代完整的Unix中所期望的所有特性,包括真正的多任务、虚拟内存、共享库、按需加载、共享写时复制可执行文件、适当的内存管理,以及包括IPv4和IPv6的多栈网络。

它根据GNU通用公共许可证发布——更多详情请参见附带的COPYING文件。

它运行在什么硬件上?

尽管最初是为32位x86 PC(386或更高)开发的,但如今Linux也运行在(至少)Compaq Alpha AXP、Sun SPARC和UltraSPARC、Motorola 68000、PowerPC、PowerPC64、ARM、Hitachi 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很容易移植到大多数通用的32位或64位架构上,只要它们具有分页内存管理单元(PMMU)和GNU C编译器(gcc)(GNU编译器套件GCC的一部分)的移植。Linux也被移植到一些没有PMMU的架构上,尽管功能显然会有所限制。 Linux还被移植到了自身。现在你可以将内核作为用户空间应用程序运行——这被称为UserMode Linux(UML)。

文档:

  • 互联网和书籍中有大量的文档可用,既包括Linux特定的内容,也包括一般UNIX问题。我建议查看任何Linux FTP站点上LDP(Linux文档项目)书籍的文档子目录。这份README并非系统的文档:有更好的来源可用。

  • Documentation/子目录中有各种README文件:这些文件通常包含一些驱动程序的特定于内核的安装说明。请参阅Documentation/00-INDEX以了解每个文件中包含的内容。请阅读Changes文件,因为它包含可能由升级内核引起的问题的信息。

  • Documentation/DocBook/子目录包含几本面向内核开发者和用户的指南。这些指南可以呈现为多种格式:PostScript(.ps)、PDF、HTML和man手册页等。安装后,使用"make psdocs"、"make pdfdocs"、"make htmldocs"或"make mandocs"将以请求的格式生成文档。

安装内核源代码:

  • 如果您安装完整的源代码,请将内核tarball放置在一个您有权限的目录(例如您的主目录)中,然后解压它:

    xz -cd linux-4.X.tar.xz | tar xvf -

    将"X"替换为最新内核的版本号。

    不要使用/usr/src/linux目录!该目录包含一套(通常不完整的)内核头文件,这些头文件被库头文件使用。它们应该与库匹配,而不应被任何"当日内核"搞乱。

  • 您还可以通过打补丁在4.x版本之间升级。补丁以xz格式分发。要通过打补丁安装,请获取所有较新的补丁文件,进入内核源代码的顶级目录(linux-4.X)并执行:

    xz -cd ../patch-4.x.xz | patch -p1

    将"x"替换为您当前源代码树版本大于"X"的版本,按顺序,应该就可以了。您可能想要删除备份文件(some-file-name~或some-file-name.orig),并确保没有失败的补丁(some-file-name#或some-file-name.rej)。如果有,要么是你,要么是我犯了错误。

    与4.x内核的补丁不同,4.x.y内核(也称为稳定内核)的补丁不是增量式的,而是直接应用于基础的4.x内核。例如,如果您的内核是4.0,并且您想应用4.0.3补丁,您不能先应用4.0.1和4.0.2补丁。类似地,如果您运行的是内核版本4.0.2,并且想跳到4.0.3,您必须先还原4.0.2补丁(即patch -R)_然后_再应用4.0.3补丁。您可以在Documentation/applying-patches.txt中阅读更多相关内容。

    或者,可以使用脚本patch-kernel来自动化此过程。它确定当前内核版本并应用找到的任何补丁。

    linux/scripts/patch-kernel linux

    上面命令的第一个参数是内核源代码的位置。补丁从当前目录应用,但也可以将另一个目录指定为第二个参数。

  • 确保您没有残留的.o文件和依赖项:

    cd linux make mrproper

    您现在应该已正确安装了源代码。

软件要求

编译和运行4.x内核需要各种软件包的最新版本。请查阅Documentation/Changes了解所需的最低版本号以及如何获取这些包的更新。注意:使用过旧版本的这些包可能会导致非常难以追踪的间接错误,因此不要假设在构建或运行期间出现明显问题时才更新包。

内核的构建目录:

编译内核时,默认情况下所有输出文件将与内核源代码存储在一起。 使用选项"make O=output/dir"允许您为输出文件(包括.config)指定另一个位置。 示例:

 kernel source code: /usr/src/linux-4.X
 build directory:    /home/name/build/kernel

要配置和构建内核,请使用:

 cd /usr/src/linux-4.X
 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调用。

配置内核:

即使你只是升级一个小版本,也不要跳过此步骤。每个版本都会添加新的配置选项,如果配置文件没有按预期设置,就会出现奇怪的问题。如果您想以最少的工作将现有配置带到新版本,请使用"make oldconfig",它只会询问您对新问题的答案。

  • 替代配置命令有:

    "make config" 纯文本界面。

    "make menuconfig" 基于文本的彩色菜单、单选列表和对话框。

    "make nconfig" 增强的基于文本的彩色菜单。

    "make xconfig" 基于X窗口(Qt)的配置工具。

    "make gconfig" 基于X窗口(Gtk)的配置工具。

    "make oldconfig" 基于现有 ./.config 文件的内容默认回答所有问题,并询问新的配置符号。

    "make silentoldconfig" 与上面类似,但避免用已回答的问题扰乱屏幕。 此外还更新依赖关系。

    "make olddefconfig" 与上面类似,但将新符号设置为其默认值而不提示。

    "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 文件。

    "make localmodconfig" 基于当前配置和已加载模块(lsmod)创建配置。禁用已加载模块不需要的任何模块选项。

                        要为另一台机器创建 localmodconfig,请将该机器的 lsmod 存储到一个文件中,并将其作为 LSMOD 参数传递。
    
                target$ lsmod > /tmp/mylsmod
                target$ scp /tmp/mylsmod host:/tmp
    
                host$ make LSMOD=/tmp/mylsmod localmodconfig
    
                        上述方法在交叉编译时也适用。
    

    "make localyesconfig" 类似于 localmodconfig,但会将所有模块选项转换为内置(=y)选项。

    您可以在 Documentation/kbuild/kconfig.txt 中找到有关使用 Linux 内核配置工具的更多信息。

  • 关于"make config"的注意事项:

    • 包含不必要的驱动程序会使内核变大,并且在某些情况下可能导致问题:探测不存在的控制器卡可能会混淆您的其他控制器。

    • 将"处理器类型"设置为高于386来编译内核将产生一个不能在386上运行的内核。内核会在启动时检测到这一点并放弃。

    • 编译了数学仿真(math-emulation)的内核仍然会使用协处理器(如果存在的话):在这种情况下,数学仿真将永远不会被使用。内核会稍微大一些,但无论机器是否有数学协处理器,它都能工作。

    • "内核调试"配置细节通常会导致内核变大或变慢(或两者兼有),甚至可以通过配置某些例程主动尝试破坏糟糕的代码以查找内核问题(kmalloc())而使内核变得不稳定。因此,您应该对"开发"、"实验性"或"调试"功能的问题回答'n'。

编译内核:

  • 确保您至少有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。 您可能希望编辑/etc/lilo.conf为新内核镜像指定一个条目(例如/vmlinux.old),以防新内核无法工作。有关更多信息,请参阅LILO文档。

    重新安装LILO后,一切就绪。关闭系统,重新启动,享受吧!

    如果您需要更改内核镜像中的默认根设备、视频模式、ramdisk大小等,请使用'rdev'程序(或适当时使用LILO启动选项)。无需重新编译内核来更改这些参数。

  • 使用新内核重新启动并享受。

如果出现问题:

  • 如果您遇到似乎是由于内核错误引起的问题,请检查文件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值意味着什么,会非常有帮助。十六进制值本身对我或其他人没有太大帮助:它将取决于您特定的内核设置。您应该做的是从EIP行中获取十六进制值(忽略"0010:"),然后在内核名称列表中查找,看哪个内核函数包含该有问题的地址。

    要找出内核函数名称,您需要找到与出现问题的内核关联的系统二进制文件。该文件是'linux/vmlinux'。要提取名称列表并将其与内核崩溃中的EIP进行匹配,请执行:

    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(错误地)忽略了编译内核时的起始偏移量。

下载工具