WantonQuantum
The poetry is just a way of obfuscating the current IP address of the botnet control server stored in an otherwise vanilla fork of the nodejs.org website on github.
Despite the article saying that it uses "an AI jailbreak technique that turns harmful prompts into poems to trick LLMs into bypassing safety guardrails", I can't see anything that implies this is true.
I could be wrong - it's poorly written article.
Edit to add: Previous HN discussions about PineBuds https://hn.algolia.com/?q=PineBuds
The excellent Arvin Ash has a very accessible video about it: https://www.youtube.com/watch?v=paQLJKtiAEE
BTW, this site is likely not set up to handle a HN hug of death of downloads so consider throttling your downloads if you can.
https://account.booking.xn--comdetailrestric-access-ge5vga.w...
More info here (the video refers to this page describing the attack): https://www.bleepingcomputer.com/news/security/bookingcom-ph...
Edit: HN presents the unicode characters in the domain in a way that makes it clear they're not slashes (well done HN!) so you'll need to look at the url when you hover over it.
Now, I'm certainly not in the "all C code must be rewritten in Rust because security" camp but it does raise the question: With all this complexity how do I know that pasting text from a web page into emacs (or any editor really) isn't going to trigger an undiscovered vulnerability?
Edit: I guess that's rhetorical question because of course the answer is "you don't".
Also, the author provides two other examples of people who took the risk and it paid off, except those people are clearly selected due to how the author knows them - through the work they are all involved in.
This article is basically saying: if you take a look at 3 examples of people who took a risk and it happened to pay off for them then it's logical to conclude that it'll pay off for you too. Which is rubbish. I could find 3 people who won the lottery and then claim that you too can win the lottery if you just take a shot at it.
This is good advice. There's not a small amount of irony that I'm writing this reply agreeing with you instead of actually doing any of those things.
It's also justified the destruction of workers rights, which has led to a huge number of people being paid less in insecure jobs forcing them to work longer hours.
There was a time when ideas like "a rising tide lifts all boats" and trickle-down economics justified focusing economic success but increasing inequality has shown that it's not true.
Edit: And of course technology has enabled a lot of this.
Scheme’s constants are not limited to the immediate objects. Using the quote form, lists, vectors, and strings can be turned into constants as well. The formal semantics of Scheme require that quoted constants always evaluate to the same object. The following example must always evaluate to true:
(let ((f (lambda () (quote (1 . "H")))))
(eq? (f) (f)))
So, in general, we cannot transform a quoted constant into an unquoted series of constructions as the following incorrect transformation demonstrates: (let ((f (lambda () (cons 1 (string #\H)))))
(eq? (f) (f)))
One way of implementing complex constants is by lifting their construction to the top of the program. The example program can be transformed to an equivalent program containing no complex constants as follows: (let ((tmp0 (cons 1 (string #\H))))
(let ((f (lambda () tmp0)))
(eq? (f) (f))))
Performing this transformation before closure conversion makes the introduced temporaries occur as free variables in the enclosing lambdas. This increases the size of many closures, increasing heap
consumption and slowing down the compiled programs. Another approach for implementing complex constants is by introducing global memory locations to hold the values of these constants. Every complex constant is assigned a label, denoting its location. All the complex constants are initialized at the start of the program. Our running example would be transformed to: (labels ((f0 (code () () (constant-ref t1)))
(t1 (datum)))
(constant-init t1 (cons 1 (string #\H)))
(let ((f (closure f0)))
(eq? (f) (f))))
The code generator should now be modified to handle the data labels as well as the two internal forms constant-ref and constant-init.