This release includes 1 security fix for security teams reviewing exposed deployments.
Topics
+6 more
Affected surfaces
ReleasePort's take
Moderate signalThe release fixes a CPU‑100% denial‑of‑service vulnerability triggered by data lacking a command terminator and adds several configuration and bugfix improvements.
Why it matters: Patches the DoS flaw that can consume 100 % CPU when malformed input lacks terminators; mitigates severe performance impact immediately.
Summary
AI summaryUpdates https, https://github.com/ngircd/ngircd/issues, and [email protected] across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Critical |
Fixes CPU‑100% DoS caused by data without command terminator. Fixes CPU‑100% DoS caused by data without command terminator. Source: llm_adapter@2026-07-13 Confidence: high |
— |
| Feature | Medium |
Adds `DefaultChannelModes` configuration option for automatic channel mode setting. Adds `DefaultChannelModes` configuration option for automatic channel mode setting. Source: llm_adapter@2026-07-13 Confidence: high |
— |
| Bugfix | Medium |
Enforces `KICKLEN` and corrects excessive `TOPICLEN` advertising. Enforces `KICKLEN` and corrects excessive `TOPICLEN` advertising. Source: llm_adapter@2026-07-13 Confidence: high |
— |
| Bugfix | Medium |
Ignores passwords for non‑password protected servers, preventing erroneous rejections. Ignores passwords for non‑password protected servers, preventing erroneous rejections. Source: llm_adapter@2026-07-13 Confidence: high |
— |
| Bugfix | Medium |
Uses the last set value for `Listen` (global) and `Mask` (operator) configuration directives. Uses the last set value for `Listen` (global) and `Mask` (operator) configuration directives. Source: llm_adapter@2026-07-13 Confidence: high |
— |
| Bugfix | Medium |
Replies with `ERR_NOSUCHCHANNEL` when `MODE` targets a non‑existent channel. Replies with `ERR_NOSUCHCHANNEL` when `MODE` targets a non‑existent channel. Source: llm_adapter@2026-07-13 Confidence: high |
— |
Full changelog
The next release of ngIRCd – a free, portable and lightweight Internet Relay Chat server for small or private networks – just landed: ngIRCd 28! 🎉
In this release, the most notable change is a fix for a bug that could result in a 100% CPU usage on a single core (DoS), which can be triggered on any connection. ngIRCd does not crash and keeps serving other connections, but can render the system slow and unstable because of the high CPU usage, until the malicious connection times out.
Therefore all users of ngIRCd are advised to upgrade to ngIRCd 28!
You can download ngIRCd 28 from the download section on our homepage at https://ngircd.barton.de (mirror: https://ngircd.sourceforge.io). The primary download locations are:
- https://github.com/ngircd/ngircd/releases
- https://ngircd.barton.de/pub/ngircd/
Please report any issues and glitches you find to the GitHub issue tracker (https://github.com/ngircd/ngircd/issues) and use the mailing list ([email protected]) and the #ngircd channel on IRC (irc://irc.barton.de/ngircd) for questions and discussions. Enhancements and additions to the documentation, manual pages and the homepage are welcome as well!
Thanks a lot to all contributors & testers!
And as usual: Happy IRC'ing!
Alex
What's Changed
The following noteworthy changes are listed in the NEWS file:
-
Truncate long
KICKreasons and topics:KICKLENis advertised inISUPPORTbut was not enforced. AndTOPICLENis advertised, but was so high it was guaranteed not to be fully sendable to other clients. Thanks to Valentin Lorentz [email protected]! Closes #339. -
Properly disconnect clients that send data without a command terminator: A connection that sent 512 or more bytes (the maximum length of an IRC command) containing no CR or LF -- for example binary garbage or a TLS "ClientHello" accidentally (or deliberately) sent to a plain-text listening port -- was never processed and only closed after a timeout. And until then it kept the main loop busy-spinning pinning one CPU core at 100%! Thanks to James [email protected]! Closes #343.
-
Implement new configuration option
DefaultChannelModes: This new configuration option lists channel modes that become automatically set on new channels on creation. Default: set no modes (like before). Closes #333. -
Handle clients which erroneously send passwords for non-password protected servers by ignoring passwords when not configured/needed. Closes #332.
-
Use the last value set for
Listen(Global) andMask(Operator). Do not ignore newer configuration value, always use the latest value set. -
MODE: Reply withERR_NOSUCHCHANNELwhen the target is a channel (#319): While it is common for IRC servers to useERR_NOSUCHNICKinstead ofERR_NOSUCHCHANNELwhen a target can be either a channel or a nick, it seems every other IRCd but UnrealIRCd usesERR_NOSUCHCHANNELin this particular case.
And the ChangeLog has even more details and lists all the fixes, minor enhancements and tweaks.
New Contributors
- @svmhdvn made their first contribution in https://github.com/ngircd/ngircd/pull/318
- @osmarks made their first contribution in https://github.com/ngircd/ngircd/pull/320
- @anzz1 made their first contribution in https://github.com/ngircd/ngircd/pull/334
- @TheMiningTeamYT made their first contribution in https://github.com/ngircd/ngircd/pull/332
- @bludot made their first contribution in https://github.com/ngircd/ngircd/pull/343
All Git commits: https://github.com/ngircd/ngircd/compare/rel-27...rel-28
Security Fixes
- Fixes a denial‑of‑service bug that caused a single CPU core to run at 100 % when receiving malformed data without command terminators
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About ngircd
Portable and lightweight Internet Relay Chat server for small or private networks.
Beta — feedback welcome: [email protected]