BIND 10 #2681: DHCPv6 server crashes on Solicit and Request when pool has been exhausted.
BIND 10 Development
do-not-reply at isc.org
Fri Feb 1 10:13:28 UTC 2013
#2681: DHCPv6 server crashes on Solicit and Request when pool has been exhausted.
-------------------------------------+-------------------------------------
Reporter: | Owner:
marcin | Status: new
Type: | Milestone: Sprint-
defect | DHCP-20130214
Priority: high | Keywords:
Component: dhcp6 | Sensitive: 0
CVSS Scoring: | Sub-Project: DHCP
Defect Severity: High | Estimated Difficulty: 0
Feature Depending on Ticket: | Total Hours: 0
Add Hours to Ticket: 0 |
Internal?: 0 |
-------------------------------------+-------------------------------------
I perform the manual test v6.general.log.exhausted-pool described in the
dhcp-val repo: tests/common/.
This test limits the address pool to 5 addresses while the number of
simulated clients is 10. The expected output from this test is that 5
leases are assigned and that the server logs debug messages for 5
remaining requests that the pool is exhausted. The debug message is not
logged by the server.
In the course of debugging it turned out that the server crashes and gets
restarted by the BIND10 Boss when new Solicit or Request comes in. This
happens after making attempt to allocate a new lease 100 times. When it
fails the following call in ''src/bin/dhcp6/dhcp6_srv.cc (line 630)''
throws the ''AllocFailed'' exception:
{{{
Lease6Ptr lease = alloc_engine_->allocateAddress6(subnet, duid,
ia->getIAID(), hint, fake_allocation);
}}}
This exception propagates to the main function causing process to abort.
This is undesired behaviour because it (to my understanding) violates the
RFC 3315 (par 17.2.2.) which says that !''If the server will not assign
any addresses to any IAs in a subsequent Request from the client, the
server MUST send an Advertise message to the client that includes only a
Status Code option with code NoAddrsAvail...!''. Obviously the client does
not get anything.
Another obvious implication is that the server is vulnerable to DoS
attacks and its performance is affected by the frequent need to restart
the process.
Thus, setting the Priority and Severity to High.
The log file has been attached.
--
Ticket URL: <http://bind10.isc.org/ticket/2681>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list