Trusts first SOA over last (L625-L643) (medium) (Confidence: 8.5) (Severity: 9.1)
doAxfr() accepts the first SOA seen in the incoming AXFR stream, sets zs.soa_serial from it, and then skips any further SOA records. If the remote AXFR sender (the primary) provides inconsistent SOA serials (first SOA != last SOA), the function will ignore the terminating SOA and keep the first SOA's serial. An attacker who can pretend to be or control the primary can exploit this within a single AXFR transfer to make the secondary compute/store an incorrect zone serial (for example accepting a lower/stale serial), which may lead to incorrect zone data being installed or incorrect transfer/notify behavior downstream.
This bug was found using ZeroPath.