I'm so weary of seeing Claude-isms everywhere. It makes everything so much more of a cognitive burden to read, whether you're reading for leisure or comprehension.
I’ve asked Claude to read this article for me and explain it to me. Somehow that makes it better, as then at least I know I’m talking to an AI:
“The fix closed two chained flaws in RouterOS’s shared crypto and login libraries: a lax PKCS#1 v1.5 RSA signature verifier that failed to enforce the total encoded length (256 bytes) or pin the digest to its correct length for the claimed hash, allowing an attacker to forge a valid-looking signature without the private key — a pre-auth authentication bypass sitting on SSH public-key auth, IPsec/IKE, and TLS simultaneously.
“The second flaw was missing input validation on the terminal-login username path (SSH, Telnet, MAC-Telnet), which permitted argument injection (a leading -) and control-character/log-forging injection.
“Chained, the forged-signature auth bypass plus the hostile login-parameter handling turned an unauthenticated network position into a path toward code execution, which is why MikroTik backported it silently across all branches on the same day.”
For anyone else reading this and rolling their own crypto (hint: don't! No really, just don't!):
>a lax PKCS#1 v1.5 RSA signature verifier that failed to enforce the total encoded length (256 bytes) or pin the digest to its correct length for the claimed hash, allowing an attacker to forge a valid-looking signature without the private key
the correct way to do this is encode-then-memcmp(). You can't get it wrong that way because a memcmp() only has two outcomes, match or no match, not a whole range of "seems to work OK on the tests we ran it on".
Nick and I were at AusNOG when this dropped. Yes it was generated by AI, but it has evolved over time, and there has been at least three revisions of it.
The three different issues are a username called "-2", incorrectly parsing/validating certificates, and tftp paths.
There's also a dhcpd issue that was just fixed in a new release
12 comments
[ 0.23 ms ] story [ 23.0 ms ] threadWhy not just post the info you want to convey and the prompt? It would be easier for everyone involved.
“The fix closed two chained flaws in RouterOS’s shared crypto and login libraries: a lax PKCS#1 v1.5 RSA signature verifier that failed to enforce the total encoded length (256 bytes) or pin the digest to its correct length for the claimed hash, allowing an attacker to forge a valid-looking signature without the private key — a pre-auth authentication bypass sitting on SSH public-key auth, IPsec/IKE, and TLS simultaneously.
“The second flaw was missing input validation on the terminal-login username path (SSH, Telnet, MAC-Telnet), which permitted argument injection (a leading -) and control-character/log-forging injection.
“Chained, the forged-signature auth bypass plus the hostile login-parameter handling turned an unauthenticated network position into a path toward code execution, which is why MikroTik backported it silently across all branches on the same day.”
>a lax PKCS#1 v1.5 RSA signature verifier that failed to enforce the total encoded length (256 bytes) or pin the digest to its correct length for the claimed hash, allowing an attacker to forge a valid-looking signature without the private key
the correct way to do this is encode-then-memcmp(). You can't get it wrong that way because a memcmp() only has two outcomes, match or no match, not a whole range of "seems to work OK on the tests we ran it on".
Now the things that can just be done in hours is absolutely incredible when using the tools as a force multiplier.
The three different issues are a username called "-2", incorrectly parsing/validating certificates, and tftp paths.
There's also a dhcpd issue that was just fixed in a new release
Would’ve taken weeks before to get to this point
Now it takes just hours.
Not going to lose any sleep if people don’t like the writing style.
Do it yourself next time then :-)
- Nick
For the record - I used AI to add the banner too!