Net::DNS是用Perl实现的DNS解析器。 Net::DNS实现上存在漏洞,远程攻击者可能利用此漏洞导致DNS服务器被欺骗或拒绝服务。 在Net::DNS中ID序列是在header.pm中确定的: { my $id = int rand(MAX_ID); sub nextid { return $id++ \\% (MAX_ID + 1); } } 如果使用了这个模块的话就会设置$id,然后仅是简单的递增,这可能导致两个后果: 1) 序列号可预测,简化了DNS欺骗攻击; 2) 如果在fork服务器中使用Net::DNS的话,则通常会在父进程使用。除非父进程在接受请求之间进行DNS查询,否则每个子进程都会以相同的$id值开始并经历相同的id序列。由于源端口也可能是固定的,因此一个子进程很可能接受之前子进程所发送查询的回复。
Net::DNS是用Perl实现的DNS解析器。 Net::DNS实现上存在漏洞,远程攻击者可能利用此漏洞导致DNS服务器被欺骗或拒绝服务。 在Net::DNS中ID序列是在header.pm中确定的: { my $id = int rand(MAX_ID); sub nextid { return $id++ \\% (MAX_ID + 1); } } 如果使用了这个模块的话就会设置$id,然后仅是简单的递增,这可能导致两个后果: 1) 序列号可预测,简化了DNS欺骗攻击; 2) 如果在fork服务器中使用Net::DNS的话,则通常会在父进程使用。除非父进程在接受请求之间进行DNS查询,否则每个子进程都会以相同的$id值开始并经历相同的id序列。由于源端口也可能是固定的,因此一个子进程很可能接受之前子进程所发送查询的回复。