使用漏洞扫描器在 tcp/0 端口上发现大量漏洞

信息安全 漏洞扫描器 港口 内苏斯 漏洞评估
2021-09-06 15:40:03

Nessus 在 linux/Unix 服务器上执行了凭据漏洞扫描,数千个漏洞来自端口tcp/0IANA 保留端口(tcp/0)如何处理流量?这些漏洞是真正可数的还是被误报的?我们应该如何着手修复端口 tcp/0 下显示的漏洞?

2个回答

IANA 保留端口(tcp/0)如何处理流量?

可以一般来说,TCP(或UDP)端口0处于保留状态并不意味着它不能在实践中使用。尽管Berkeley 套接字的设计方式在端口 0 上绑定并不容易,但仍然可以使用它。

但是,在您的情况下实际发生这种情况的可能性很小您只是在使用 Nessus 扫描器,它列出了与端口 0/TCP 或 0/UDP 下的特定端口不密切相关的活动(请参阅:“主机漏洞”)。这只是一个(不方便?)在端口 0 下显示无端口警告的约定——具有讽刺意味的是,为了避免混淆。

请注意,那些 a) 不一定是漏洞,只是警告或建议(例如,在运行扫描程序时未遵循Microsoft 的最佳实践);b) 不一定是误报。尝试忽略端口 0 本身,仔细阅读报告并采取相应措施。

IANA 保留端口(tcp/0)如何处理流量?

虽然接受的答案解释了端口 0 如何仍然是真实端口,但了解端口在 TCP 中的工作方式可能会有所帮助。下面是一个 32 位宽的 TCP 数据包图,按比例缩放。UDP 类似,但简单得多(在端口之后,它在数据之前只有一个长度字段和一个校验和字段)。

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-------------------------------+------------------ --------------+
| 源端口 | 目的港 |
+-------------------------------+------------------ --------------+
| 序号 |
+-------------------------------------------------- --------------+
| 确认号码 |
+-------+-----------+-+-+-+-+-+-+----------------- --------------+
| 数据 | |U|A|P|R|S|F| |
| 偏移量| 保留 |R|C|S|S|Y|I| 窗口 |
| | |G|K|H|T|N|N| |
+-------+-----------+-+-+-+-+-+-+----------------- --------------+
| 校验和 | 紧急指针 |
+-------------------------------+------------------ --------------+
| 选项 | 填充 |
+------------------------------------------------+- --------------+
| |
/ ... 数据(可选) ... /
| |
+-------------------------------------------------- --------------+

如您所见,源端口和目标端口字段都是 16 位宽。这意味着它可以表示 65536 种不同的可能状态,从 0 到 65535。这就是为什么没有负端口的原因,因为该值被视为无符号。唯一阻止任何端口都是空字节(代表端口 0)的是 IANA 标准说不要这样做。将任何端口设置为 0 的数据包发送出去是完全可能的。保留端口 0 的目的是允许“给我任何端口”以 16 位整数表示。当尝试绑定到 TCP/0 时,系统应该绑定到任何可用端口,而不是侦听目标端口设置为全零的数据包。