Releases: oryxlabs/PolarDNS
v1.6.6
New features and updates.
08/Jul/2025
- added the rrfz module for resource record fuzzing
- various small fixes across
polardns.py, individual modules and the test runnertest/run.sh - added tests (total test count: 2405)
- updated documentation
Full Changelog: v1.6.5...v1.6.6
v1.6.5
New features and updates.
01/Jul/2025
- added support for configuring arbitrary number of nameservers managing the domain
- added zone delegation support, allowing subdomains to be delegated to different nameservers via the configuration file
- added the nsgluetest module for testing discrepancies between NS records in the zone and glue records in the parent
- added the a feature for generating RFC-compliant responses to A queries, also allowing to generate any IP address
- implemented internal tracking of query counts per domain name
- added the count feature for retrieving the number of queries made to a specific domain
- added the wild feature designed to evaluate how resolvers handle wildcard records
- implemented support for returning SOA records in the Authority section for NODATA and NXDOMAIN situations
- improved support and handling of 0x20 encoding in all modules
- improved handling and parsing of the configuration file
- improved EDNS0 option parsing and handling
- various fixes across
polardns/core.py, individual modules and the test runnertest/run.sh - updated tests outputs for compatibility with DiG version 9.20.7
- added tests (total test count: 2399)
- updated documentation
Full Changelog: v1.6.4...v1.6.5
v1.6.4
New features and updates.
04/Apr/2025
- added option to act universally authoritative for any domain, configurable via config file
- implemented support for responding to NS and SOA queries for all subdomains
- updated test runner
test/run.shto support convenient reference output updates - various minor fixes across
polardns/core.py, modules, and E2E workflows - consolidated tests (total test count: 2369)
26/Mar/2025
- enhanced E2E workflows to include resolver and PolarDNS logs in test artifacts
- fixed the newid modifier to ensure the response transaction ID always differs from the query
- updated documentation
25/Mar/2025
- added compression when uploading E2E test results in the GitHub Workflow
Full Changelog: v1.6.3...v1.6.4
v1.6.3
New features and updates.
24/Mar/2025
- added reusable GitHub Workflow for end-to-end (E2E) testing of DNS resolvers
- added example GitHub Workflow integration for BIND9, PowerDNS, Knot Resolver, Unbound, CoreDNS, and Dnsmasq
- added a template for E2E tests
19/Mar/2025
- fixed 0x20 encoding (randomly mixed uppercase and lowercase in DNS queries) in all record injection modules
Full Changelog: v1.6.2...v1.6.3
v1.6.2
New features and updates.
18/Mar/2025
- major rework of the polardns test runner
test/run.sh, now based on actual dig outputs rather than just checksums
13/Mar/2025
- added rc modifier allowing to set custom reply codes (statuses) for DNS responses (e.g., NOERROR, NXDOMAIN, SERVFAIL)
- implemented size limits in various functions to prevent errors caused by requesting oversized responses
- added tests (total test count: 2439)
Full Changelog: v1.6.1...v1.6.2
v1.6.1
New installation methods and small updates.
Change log:
10/Mar/2025
- restructured the project into a package installable via
pip - created a wrapper
polardns.pyto support traditional standalone usage - published the
polardnspackage to PyPI repository (polardns) - updated documentation
- code cleanup
20/Feb/2025
- updated documentation
- published Docker image to Docker Hub (oryxlabs/polardns)
- added a script
gendocs.pyfor generating the documentation
Full Changelog: v1.6.0...v1.6.1
v1.6.0
New documentation, features and updates.
Change log:
03/Feb/2025
- new catalog documentation using GitHub Pages, providing detailed explanations, examples, and PCAP files for each example
- major rework of all modules to align with the new documentation format, including examples and in-depth explanations
- added tests (total test count: 2407)
28/Jan/2025
- deprecated the
bigcnamefeature, succeeded by thenfzmodifier - deprecated the
cgenafeature, succeeded by thenfzmodifier - deprecated the
cgenbfeature, succeeded by thenfzmodifier - deprecated the
cnamefuzz1feature, succeeded by thenfzmodifier - deprecated the
cnamefuzz2feature, succeeded by thenfzmodifier - deprecated the
dotcnamefeature, succeeded by thenfzmodifier - deprecated the
illcnamefeature, succeeded by thenfzmodifier - deprecated the
manycnamesfeature, succeeded by thenfzmodifier - deprecated the
manylabelsfeature, succeeded by thenfzmodifier - deprecated the
cutabuffeature, succeeded by thecutmodifier - deprecated the
cutcnamebuffeature, succeeded by thecutmodifier - deprecated the
chunkedcnamesfeature, succeeded by thecnkmodifier
27/Jan/2025
- deprecated the
inj01feature, succeeded by theinjafeature - deprecated the
inj02feature, succeeded by theinjafeature - deprecated the
inj03feature, succeeded by theinjafeature - deprecated the
inj04feature, succeeded by theinjafeature - deprecated the
inj05feature, succeeded by theinjafeature - deprecated the
inj06feature, succeeded by theinjaaaafeature - deprecated the
inj07feature, succeeded by theinjafeature - deprecated the
inj08feature, succeeded by theinjafeature - deprecated the
inj09feature, succeeded by theinjptrfeature - deprecated the
inj10feature, succeeded by theinjnsfeature - deprecated the
inj11feature, succeeded by theinjnsfeature - deprecated the
inj12feature, succeeded by theinjnsfeature - deprecated the
inj13feature, succeeded by theinjnsfeature - deprecated the
inj14feature, succeeded by theinjcnamefeature
26/Jan/2025
- major consolidation of all cache poisoning (record injection) modules, introducing new injection features
- added the
injafeature for injecting unsolicited A records - added the
injnsfeature for injecting unsolicited NS records - added the
injaaaafeature for injecting unsolicited AAAA records - added the
injcnamefeature for injecting unsolicited CNAME records - added the
injdnamefeature for injecting unsolicited DNAME records - added the
injmxfeature for injecting unsolicited MX records
19/Jan/2025
- overhaul of the
nfzname fuzzing generator, now supporting variable, parameterized, and customizable malformations - enhanced the
alwaysfeature feature to support generating a variable number of A or AAAA records
15/Dec/2024
- enhanced the
sizefeature to support both A and AAAA records - enhanced the
selffeature to return both the client's IP address and source port
11/Dec/2024
- added the
cnkmodifier enabling transmission of DNS responses in variable sized chunks - added the
lenmodifier allowing adjusting the DNS packet length (size) in TCP
28/Oct/2024
- added the
queryback4feature - added self-DoS protection in the
queryback3feature
Full History: v1.5.0...v1.6.0
v1.5.0
New features and updates.
Change log:
- added the
nsloop,nschainandnsaliasfeatures responding with NS records - added the
spfloop,spfchain,spfalias1andspfalias2features responding with TXT SPF records - the
loop,chainandaliasgeneric features now also support the NS and SPF (TXT) record types - added the
ptralias,ptrloop1andptrloop2features responding with PTR records - added the
nptenumaliasandnptenumloopfeatures returning NAPTR records in response to ENUM (E.164) phone number queries - added the
addmodifier for appending arbitrary bytes to the end of the packet - added the
rlmodifier for recalculating the length in TCP in casecutoraddmodifiers were used during a request - changed behavior across all
alias*feature (CNAME/DNAME/HTTPS/SVCB/SRV/MX/NS/TXT) to send only one alias by default - small fix in matching of underscored domain names for the SRV and SVCB
alias/chain/loopfeatures - enhanced the tests,
test/test.sh -hwill give usage info - various other small code optimizations and code fixes
- adopting the semantic versioning (SemVer)
- updated the catalogue documentation
- added tests (total test count: 750)
Full History: v1.4...v1.5.0
v1.4
New features and updates.
Change log:
- added support for the Attrleaf naming pattern (underscored domain names) for the SRV and SVCB alias/chain/loop features
- enhanced the
nfzmodifier, added 4 more variants, now it can produce 49 different domain name variants - deprecated the
manycnames,cnamefuzz1,cnamefuzz2andillcnamefeatures - added support for parsing the EDNS0 section, configurable via config file
- added the
sizefeature that responds with the maximum number of A records that can fit in the specified packet size - added support for DNS compression, configurable via config file
- added the
ncmodifier to not use compression in a response - added the
fcmodifier to force compression in a response - added the
cutmodifier for cutting arbitrary number of bytes from the end of the packet - deprecated the
cutabufandcutcnamebuffeatures - many code optimizations and code fixes
- updated the catalogue documentation
- added tests (total test count: 678)
Full History: v1.3...v1.4
v1.3
New features and updates.
Change log:
- improved the startup module loading logic to be more robust and user-friendly
- optimized the random number generation everywhere to use the random.getrandbits() which looks to be fastest
- added the
nfzmodifier for name fuzzing, which can produce various illegal and malformed domain names - added the
cnloop,cnchainandcnaliasfeatures responding with CNAME records - added the
dnloop,dnchainanddnaliasfeatures responding with DNAME records - added the
htloop,htchainandhtaliasfeatures responding with HTTPS records - added the
svloop,svchainandsvaliasfeatures responding with SVCB records - added the
srloop,srchainandsraliasfeatures responding with SRV records - added the
mxloop,mxchainandmxaliasfeatures responding with MX records - added tests for all the new features (total test count: 545)
- updated the catalogue documentation
Full History: v1.2...v1.3