特殊收容措施: SCP-CN-3213被收容于Site-CN-19所辖的代号为“Shark Machines”的机架式计算服务器集群中,该服务器集群将仅通过物理链路与终端设备建立连接。鉴于项目的异常性质,必须确保存在至少一台服务器处于可访问状态,并且,任何需从集群中移除的服务器都必须经过物理销毁,以防任何形式的信息泄漏。截至 ,编号“nurseshark”的服务器被指定为优先访问服务器,编号“makoshark”、“milkshark”、“pygmyshark”的服务器被列为次优先访问状态。未授权人员禁止以任何形式接触或访问该服务器集群。
鉴于SCP-CN-3213的异常性质,项目已收容失效,并将于00小时20分00秒内触发ZK级现实崩溃情景。文档访问者必须根据[附录4]的指示重构收容程序,若重新构建收容措施不可行,则联系距离终端设备最近的应急反应小组。
描述:SCP-CN-3213是一个遵循ELF-64标准格式1的可执行文件,其运行环境被严格限制于基于x86-64架构2并运行Linux操作系统内核的计算机设备。SCP-CN-3213被首次被识别于代号“Fish Machines”的服务器集群的编号“nursefish”的服务器中。当SCP-CN-3213以任何形式被移除,或处于无法访问状态时,项目将随机地重新出现于基于当前最广泛应用架构3的计算机设备中。值得注意的是,除本文档外,任何尝试记录SCP-CN-3213信息的行为均会立即导致该记录实体的消失。鉴于项目的源代码尚未被发现,通过综合分析一系列调试结果与部分反编译代码4,已对该实体的部分设计特征作出初步确定。
SCP-CN-3213在运行时通过命令行参数解析功能5接收外部输入,且参数数量被严格限制为一。若被以非预期方式调用,该项目将通过标准输出流6向终端输出一段预定的指令性信息7,并将程序的退出状态设置为整数值1,表征异常终止的发生。在被以预期方式调用时,项目将以只读模式读取第一个命令行参数所指文件(以下称为SCP-CN-3213-α)。当SCP-CN-3213-α符合ASCII规范,且内容仅由十六进制字符串构成(包含终结符8,空格,和换行符)时,SCP-CN-3213将执行十六进制解析,将SCP-CN-3213-α内的每两个字符转换为整数值,并以正序存入一个二十四字节大小的字符数组内。显示地读取终结符或换行符的十六进制表达时9后,SCP-CN-3213通过标准输出流以ASCII规范将解析结果输出至终端,并设置退出状态为整数值0,表征项目以正常状态终止。
一个SCP-CN-3213的运行实例如下:
cat exp1.txt
> 68 65 6c 6c 6f 20 77 6f 72 6c 64 0a
./CN3213 exp1.txt
> hello world
SCP-CN-3213的程序设计中存在明显的安全漏洞,该项目易受特定字符串构造的栈缓冲区溢出攻击,此类攻击可导致攻击者接管程序程序的控制流程10。尽管现代编译器11的默认配置具备有效识别并阻挡此类漏洞的利用尝试的能力,但SCP-CN-3213的执行特性以及部分反汇编代码表明,项目的编译器不支持或显式地禁用了包括且不限于控制流程保护、栈防护机制、不可执行栈、缓冲区溢出监测、Canary保护机制、地址空间布局随机化及指针认证等多项现代安全防护技术。
分析表明,SCP-CN-3213被设计为展示栈缓冲区溢出攻击的基础性程序。当项目以具备栈缓冲区溢出攻击能力的文本文件(下称SCP-CN-3213-β)作为输入运行时,项目的虚拟内存空间将映射至一段特定的物理内存空间中,该内存空间与另一独立进程(下称SCP-CN-3213-γ)共享,后者为一类似的模拟进程,现阶段推测SCP-CN-3213-γ所辖内存空间以未知手段映射至本现实中,或本现实以未知形式作为SCP-CN-3213-γ的物理内存空间。
当SCP-CN-3213-β引发的栈缓冲区溢出攻击成功执行时,该攻击对内存空间的任何读写操作将立即12映射至SCP-CN-3213-γ进程,并显式地在对应的本现实物质或实体中引起变化。根据现阶段的测试,任何形式的现实稳定技术均无法阻止SCP-CN-3213对本现实的修改。
附录1:SCP-CN-3213的工作目录中包含一个被命名为“kits”的文件夹,多个SCP-CN-3213-β被存储于前者,附录1详细描述了这些文件的影响。
文件名称 | 运行结果 |
help | 将于终端中显示本文档。同时,一个无限递归被触发,在此过程中,内存空间将不断为递归函数分配新的栈空间,每一次分配的空间大小以指数形式增长。该行为预期在00小时20分00秒内引起堆栈溢出错误,随后产生的SIGSEGV信号将终止SCP-CN-3213及SCP-CN-3213-γ的运行。 |
revert.txt | 最近一次由SCP-CN-3213-β实例产生的内存更改将被重新设置为攻击生效前的状态。如果在执行此文件之前没有运行过任何SCP-CN-3213-β实例,则该文件将不会产生任何效果。 |
upLevel.txt | 操作者的安全许可等级提升一级,此效果在所有记录该信息的载体上均有效。当操作者的安全许可等级为五级时,该文件将不会产生任何效果。 |
downLevel.txt | 操作者的安全许可等级降低一级,此效果在所有记录该信息的载体上均有效。当操作者的安全许可等级为零级时,该文件将不会产生任何效果。 |
backward.txt | 当前SCP-CN-3213所占用的内存空间中的所有数据将被重置至20分钟前的状态。 |
附录2:相关定义表
实体名称 | 注释 |
SCP-CN-3213 | 项目实体,本文档的主要讨论对象。 |
SCP-CN-3213-α | 存储长度小于24字符的文本文件,无法触发栈缓冲区溢出攻击。SCP-CN-3213将对其执行十六进制解析并输出结果。 |
SCP-CN-3213-β | 具备栈缓冲区溢出攻击能力的文本文件,在执行时所产生的任何内存写入将显式地映射至本现实对应的物质或实体。 |
SCP-CN-3213-γ | 一个独立进程,与SCP-CN-3213共享相同的物理内存空间。 |
项目的编译器配置 |
现阶段认为,以下编译器选项于项目的编译阶段被显示地启用:
|
附录3:反编译器所产生的部分汇编代码,位于.text段,地址不具备参考意义。
00000000000011c6 <decode_line>:
11c6: 55 push %rbp
11c7: 53 push %rbx
11c8: 48 83 ec 28 sub $0x28,%rsp
11cc: 48 89 fd mov %rdi,%rbp
11cf: 48 89 e3 mov %rsp,%rbx
11d2: eb 06 jmp 11da <decode_line+0x14>
11d4: 88 03 mov %al,(%rbx)
11d6: 48 8d 5b 01 lea 0x1(%rbx),%rbx
11da: 48 89 ef mov %rbp,%rdi
11dd: e8 a7 ff ff ff call 1189 <get_hex_byte>
11e2: 83 f8 ff cmp $0xffffffff,%eax
11e5: 74 05 je 11ec <decode_line+0x26>
11e7: 83 f8 0a cmp $0xa,%eax
11ea: 75 e8 jne 11d4 <decode_line+0xe>
11ec: c6 03 00 movb $0x0,(%rbx)
11ef: 48 89 e7 mov %rsp,%rdi
11f2: e8 c1 ff ff ff call 11b8 <print_line>
11f7: 48 83 c4 28 add $0x28,%rsp
11fb: 5b pop %rbx
11fc: 5d pop %rbp
11fd: c3 ret
附录4:确保安全许可等级为四级,在SCP-CN-3213的工作目录下执行以下命令:
./CN3213 kits/backward.txt