ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Masscan 安全加固指南:漏洞响应政策、威胁模型与安全编码规范(VULNINFO 解析)

Masscan 安全加固指南:漏洞响应政策、威胁模型与安全编码规范(VULNINFO 解析) 网络安全渗透测试CLI【免费下载链接】masscanTCP port scanner, spews SYN packets asynchronously, scanning entire Internet in under 5 minutes.项目地址https://gitcode.com/gh_mirrors/ma/masscan点击查看免费下载本篇技术指南基于 masscan 仓库根目录下的 VULNINFO.md 展开系统梳理这一互联网规模端口扫描器在安全层面的官方立场从漏洞披露与赏金政策、威胁模型远程目标回包攻击与工具误用两大风险面到禁用不安全 C 函数 自动化回归测试的安全编码策略。读完本文你将掌握 masscan 的安全边界、其基于 SYN Cookie 的防伪机制原理以及如何在构建后通过--selftest验证代码健壮性。文档定位masscan 的官方安全声明masscan 是一个能够在数分钟内以异步方式向整个互联网发送 SYN 探测包的开源端口扫描器项目描述与 README.md 中均有说明。由于它天然运行在接收不可信互联网流量的高风险场景作者在仓库根目录专门维护了一份 VULNINFO.md作为该项目的安全总纲。这份文档声明了以下核心事实已知漏洞与公告Known vulnerabilities and advisories当前为none无赏金政策对安全漏洞提供 100 美元赏金现金或比特币支付披露政策鼓励公开披露漏洞并同步通知维护者威胁模型明确了来自敌意目标回包与程序误用两大方向的攻击面安全编码政策禁止strcpy()等不安全函数并要求通过--regress即--selftest运行自动化回归测试。下文将逐节展开并结合仓库源码给出实现层面的佐证。安全联系方式VULNINFO.md 中列出的安全联系人即项目作者 Robert GrahamREADME.md 的 Authors 一节与此一致邮箱robert_david_grahamyahoo.comTwitterErrataRob任何漏洞信息应同时发送给该联系人以便作者跟进修复。已知漏洞与赏金计划当前漏洞状态文档明确指出截至文档撰写时没有任何已公开的已知漏洞Known vulnerabilities and advisories: none。需要注意的是这并不意味着程序绝对安全而是表明尚未有经确认并公告的漏洞记录——结合下文的安全编码政策与回归测试机制可以理解为项目在源头设计上做了大量防御性工作。赏金政策细节作者为安全漏洞提供$100 赏金以现金或比特币支付。赏金的主要目标是远程漏洞典型场景包括目标主机通过精心构造的回包使扫描器发生缓冲区溢出buffer-overflow目标主机使扫描器崩溃crash。除远程漏洞外作者表示也会考虑其他类型的问题。例如文档中提到的一个具体案例如果 Kali 发行版以suid方式打包本程序且存在preload相关的缺陷——尽管这严格来说不算本仓库代码的漏洞但只要作者能够修复也愿意支付赏金。这体现了以实际可修复性为准的务实态度。漏洞披露政策作者的披露政策非常开放发现漏洞后直接公开公告即可同时请将信息发送给上文的安全联系人作者预计会在一个月左右内完成修复。作者同时坦承由于该软件并非被重度使用因此对修复时效的态度比较宽松。这一政策与公开披露优先的现代漏洞协调实践Coordinated Disclosure精神一致但对时效的承诺是作者个人的主观表述读者在依赖该软件时应自行评估风险。威胁模型masscan 面对的攻击面VULNINFO.md 将威胁划分为**主要威胁primary threat与次要威胁secondary threat**两层这是理解 masscan 安全设计的关键。主要威胁来自互联网敌意目标的回包masscan 作为扫描器会主动向任意目标发送探测包并接收目标返回的响应。因此最大的攻击面来自被扫描目标本身——攻击者可以控制目标主机的响应内容试图攻击手段攻击意图现有缓解措施利用缓冲区溢出漏洞exploit a buffer-overflow夺取扫描器所在主机的控制权或使其崩溃安全编码政策禁用不安全函数见后文伪造回包spoof packets制造虚假的扫描结果误导扫描结果的使用者SYN Cookie 机制详见下文洪泛回包flood packets耗尽扫描器的带宽或存储无专门缓解依赖运行环境的资源上限注入恶意数据bad data通过污染banner 或 DNS 名称向下游消费者注入恶意 HTML 或脚本标签如存储型 XSS依赖 banner 解析与输出处理代码的健壮性其中伪造回包制造虚假扫描结果是扫描器类工具特有的风险攻击者可以冒充目标主机发送 SYN-ACK让扫描器误报端口开放。masscan 通过SYN Cookie来缓解该问题——扫描器在发送 SYN 探测时基于四元组源/目的 IP 与端口和启动时收集的随机熵计算一个 cookie只有回包携带的序号与 cookie 校验一致才会被认定为真实响应。SYN Cookie 的源码实现佐证在 src/syn-cookie.h 中可以看到 cookie 接口的设计syn_cookie()/syn_cookie_ipv4()/syn_cookie_ipv6()对 src/dst 的 IP 与端口组合做哈希用于把收到的响应与发出的探测匹配起来get_entropy()在程序启动时设置一个密钥secret key。其底层实现在 src/syn-cookie.ccookie 计算使用siphash24哈希函数而熵的收集get_entropy综合了纳秒级计时器pixie_nanotime、x86 的rdtsc时钟周期计数、系统时间以及/dev/urandom随机数等多种来源。这意味着每次运行的 cookie 密钥都不同攻击者难以预知或伪造合法的响应序号从而有效防止伪造回包污染扫描结果。次要威胁程序误用文档指出的次要威胁来自使用方式本身。具体场景是当用户在命令行输入了错误参数时程序会把该参数原样回显在报错信息中。对一款本就应当以root权限运行的命令行工具而言这通常无碍但如果有人试图把它包装成可脚本化的服务scriptable service被回显的参数就可能成为注入点例如通过换行符或控制字符污染日志或间接引入命令注入。从源码看masscan 的配置解析器会输出大量包含用户输入的诊断信息。例如 src/main-conf.c 中大量使用fprintf(stderr, [-] %s: bad value: %s\n, name, value)之类的格式输出错误信息其中value正是用户传入的参数值。因此该威胁模型的建议很明确masscan 面向以 root 运行的一次性命令行工具场景设计不应在未做额外加固的情况下把它改造成对外暴露的常驻服务。安全编码政策从源头消灭漏洞类别VULNINFO.md 给出的安全编码政策只有一句话但分量很重Unsafe functions likestrcpy()are banned.strcpy()之类的不安全函数被禁止使用。这在源码中有非常直接的落地证据。不安全函数在编译期被封杀查看 src/util-safefunc.h可以看到项目通过宏替换在编译期封禁了一批经典的不安全函数#undef strcpy #define strcpy STRCPY_FUNCTION_IS_BAD #undef strcat #define strcat STRCAT_FUNCTION_IS_BAD #undef strncat #define strncat STRNCAT_FUNCTION_IS_BAD #undef sprintf #define sprintf SPRINTF_FUNCTION_IS_BAD #undef vsprintf #define vsprintf VSPRINTF_FUNCTION_IS_BAD #undef strtok #define strtok STRTOK_FUNCTION_IS_BAD #undef gets #define gets GETS_FUNCTION_IS_BAD #undef scanf #define scanf SCANF_FUNCTION_IS_BAD #undef sscanf #define sscanf SSCANF_FUNCTION_IS_BAD #undef itoa #define itoa ITOA_FUNCTION_IS_BAD任何文件只要包含了该头文件再调用strcpy()就会编译为对STRCPY_FUNCTION_IS_BAD的引用从而在编译期直接报错从制度上杜绝手滑写出缓冲区溢出的可能。这正是 VULNINFO.md 威胁模型中利用缓冲区溢出漏洞这一首要威胁的源代码级防御。安全替代函数封禁之后项目提供了带边界检查的替代实现。头文件声明了safe_strcpy()void safe_strcpy(char *dst, size_t sizeof_dst, const char *src);其实现位于 src/util-safefunc.c在逐字节拷贝前先检查目标缓冲区大小一旦源字符串长度超过目标容量就清空目标缓冲区并安全返回绝不越界写入。同时该文件还提供了线程安全的safe_localtime()/safe_gmtime()避免localtime()/gmtime()返回静态缓冲区指针带来的竞态与共享内存风险。除字符串函数外README.md 的 Safe code 一节也确认了同一策略项目使用safe_strcpy()这类安全函数替代strcpy()并为漏洞提供赏金详情指向本文所解析的 VULNINFO.md。自动化回归测试--regress / --selftestVULNINFO.md 明确指出项目包含自动化回归测试机制The code contains an automated regression test by running with the--regressoption. However, currently the regression only tests a small percentage of the code.即通过--regress选项运行自动化回归测试但作者坦承当前回归测试只覆盖了代码的一小部分——这是文档中重要的诚实声明读者不应把回归测试视为全面验证。从 Makefile 可以看到测试目标的具体接线regress: bin/masscan bin/masscan --selftest test: regress即make regress/make test实际执行的是bin/masscan --selftest--regress与--selftest是同一测试入口的不同叫法。而测试的具体内容在 src/main.c 的回归测试入口处约第 1819–1859 行可以看到一长串selftest调用覆盖了项目最核心的算法与协议模块例如地址解析massip_selftest()、ranges6_selftest()、ipv4address_selftest()、ipv6address_selftest()、massip_parse_selftest()加密与随机化siphash24_selftest()、blackrock_selftest()、lcg_selftest()对应随机化扫描顺序的 Blackrock/LCG 算法协议解析banner1_selftest()、ntp_selftest()、snmp_selftest()、proto_isakmp_selftest()、proto_coap_selftest()、zeroaccess_selftest()、nmapserviceprobes_selftest()基础设施checksum_selftest()、base64_selftest()、output_selftest()、dedup_selftest()、rte_ring_selftest()、pixie_time_selftest()、rstfilter_selftest()等全部测试通过时程序打印regression test: success!任一失败则打印regression test: failed :(并返回错误码src/main.c 中对应逻辑。实战建议按 README.md 的构建流程make生成bin/masscan之后务必执行make test等价于make regress跑一遍内建回归确认你的编译环境与运行平台下各项自检均通过再开始实际扫描。总结masscan 的安全姿态综合 VULNINFO.md 全文masscan 在安全层面的姿态可以归纳为三点防御优先于补救通过编译期封禁strcpy等不安全函数、提供safe_strcpy()边界检查替代从编码规范层面消灭缓冲区溢出类漏洞通过基于 SipHash24 与启动熵的 SYN Cookie见 src/syn-cookie.c防范伪造回包污染扫描结果。威胁模型清晰核心防护对象是敌意目标回包溢出、伪造、洪泛、恶意数据注入同时明确提示误用作服务会引入新的风险面。坦诚且流程简单当前无已公开漏洞、提供小额赏金、鼓励公开披露且明确承认回归测试覆盖率有限——用户在生产环境部署前应结合自身威胁评估决定是否依赖该工具。对于安全研究者和 masscan 的二次开发者而言VULNINFO.md 不仅是一份政策声明更是一份该从哪些代码路径找问题的路线图banner 解析proto-banner1.c及各类proto-*.c、DNS 名称处理、命令行参数回显main-conf.c以及全部网络回包处理路径都是文档威胁模型直接点名的高风险区域。赞分享网络安全渗透测试CLI【免费下载链接】masscanTCP port scanner, spews SYN packets asynchronously, scanning entire Internet in under 5 minutes.项目地址https://gitcode.com/gh_mirrors/ma/masscan点击查看免费下载相关推荐Ciphey 安全策略解析漏洞上报、威胁模型与 incident 响应全流程指南Ciphey 安全策略解析漏洞上报、威胁模型与 incident 响应全流程指南 SECURITY.md 是 ciphey 项目的权威安全策略文档它规定了哪CLI网络安全Readest 安全模型深度解析威胁模型、攻击面缓解与漏洞响应全指南Readest 安全模型深度解析威胁模型、攻击面缓解与漏洞响应全指南 Readest 是一个基于 Next.js 与 Tauri 构建的跨平台电子书阅读器覆桌面应用跨平台前端TRL 安全策略详解威胁模型、信任边界与漏洞报告规范TRL 安全策略详解威胁模型、信任边界与漏洞报告规范 TRLTrain transformer language models with reinforce人工智能大模型强化学习RLHF预训练微调LoRA上一篇POIKit终极指南5步掌握高效地理数据采集与处理下一篇3个技巧让TiDB GROUP BY查询提速10倍创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表