4/23/2025 at 9:41:11 PM
> Ge0rg3’s code is “open source,” in that anyone can copy it and reuse it non-commercially. As it happens, there is a newer version of this project that was derived or “forked” from Ge0rg3’s code — called “async-ip-rotator” — and it was committed to GitHub in January 2025 by DOGE captain Marko Elez.Original code: https://github.com/Ge0rg3/requests-ip-rotator
Forked: https://github.com/markoelez/async-ip-rotator
Code is pretty much the same, with comments removed, some `async` sprinkled in and minor changes (I bet this was just pasted into LLM with prompt to make it async, but if that worked why not).
Except... Original GPL3 license is gone. Obviously not something you would expect DOGE people to understand or respect.
by progbits
4/23/2025 at 11:26:58 PM
The repository has been deleted. In addition, 26 other repos have been removed from the account. This is in line with DOGE members' quick response scrubbing data whenever put into spotlight, as previously seen with another "teen hacker". [0]Archived repo page: https://archive.ph/LI7tt; archived previous repo count: https://archive.ph/tgkg5
0. https://arstechnica.com/tech-policy/2025/04/i-no-longer-hack...
by 0x_rs
4/24/2025 at 5:27:47 AM
Archived repository: https://archive.softwareheritage.org/browse/origin/directory...You can download it as a Git repository from https://archive.softwareheritage.org/api/1/vault/git-bare/sw...
by progval
4/24/2025 at 8:37:56 AM
Legally, they're allowed to modify and use GPL code internally without redistributing the source. The only mistake was publishing the source code to a public git repo without the LICENSE file, which may be a GPL violation.I say "may", because I'm not sure if you have internal code on a public git or FTP server, is that consider "distributing"?
by jychang
4/24/2025 at 8:00:47 PM
> publishing the source code to a public git repo without the LICENSE file, which may be a GPL violation.Great. You can get a federal judge to sign on that.
Maybe they can be ordered to facilitate some kid of resolution.
I'm sure they are trembling as I write.
by 77pt77
4/24/2025 at 1:06:39 AM
[flagged]by grandempire
4/24/2025 at 7:19:17 AM
> speculative articles like this... speculative articles like thisBut we know it isn't speculative based on these public data. You're arguing they should have covered up better. I agree. But that doesn't make (a) it okay or (b) this article speculative.
by JumpCrisscross
4/24/2025 at 1:25:10 PM
> You're arguing they should have covered up better.No I’m arguing that they are under heavy scrutiny from the media - it’s very difficult to get any work done publicly in that environment.
> this article speculative.
Other comments have addressed the possible usage of this tool. The connection is dubious.
by grandempire
4/24/2025 at 1:26:16 AM
These are government employees, you don't get to do that.by LiquidSky
4/24/2025 at 1:48:04 AM
You have to keep git repos public as a government employee?by grandempire
4/24/2025 at 2:11:59 AM
Would be a good trial of the GPL.by zeckalpha
4/24/2025 at 2:52:49 AM
You only have to give GPL source to the people who you distribute software to.You can fork anything privately for yourself.
by grandempire
4/25/2025 at 4:13:35 AM
Distribution has a pretty low bar.If your private fork is on GitHub, have you distributed it to GitHub?
by zeckalpha
4/24/2025 at 3:23:46 AM
[flagged]by whoknowsidont
4/24/2025 at 3:47:02 AM
Please fill me in.by grandempire
4/24/2025 at 2:03:26 AM
Government software can't be copywrited, but the government is under no compulsion to share it. That's what FOIA requests are for.by spauldo
4/24/2025 at 3:21:51 AM
Actually, they are. It's really more a question of with who and of course don't apply to classified material.But the SHARE IT act really helps formalize what was already happening. Most code is shared and made public. It's paid for by the public. Though it's usually not easily searchable as it's distributed via different platforms, means, and may even require submitting a freedom of information request first. But in more cases than not, there is obligation to share when requested.
https://www.congress.gov/bill/118th-congress/house-bill/9566
by godelski
4/24/2025 at 4:13:24 AM
The "when requested" is the point I was making. FOIA is how you request such software. If you want a copy of the elisp libraries I wrote to automate creation of field devices on military fuel farm SCADA systems, you'll have to submit an FOIA request. Unless someone at the DoD decides to share it out of the goodness of their hearts, you have to ask for it.by spauldo
4/24/2025 at 5:15:18 AM
Sounds fascinating! Other than the FOIA bit. Do you have a blog post or something with more detail about this work?by herewulf
4/24/2025 at 7:38:58 AM
Naw, it's not really all that interesting. A SCADA system has a bunch of field devices it needs to talk to. Most SCADA software has some method of importing lists of device information and creating objects from it.My engineer gives me a list of (for example) valve actuators on a site. I open that list in Emacs, manipulate it a bit, and then use it as input to a function I've written. That function generates a CSV file with things like tag name, Modbus ID, polling method, etc. that I can import into Wonderware. It's considerably faster and less error prone than manually creating and configuring hundreds of instances.
I say it's not interesting because most people in my position write little bits of code like this to automate the repetitive parts of our jobs. I just do it with elisp instead of Excel or Python.
by spauldo
4/24/2025 at 4:24:59 AM
I guess I should have been clearer - the "private repository" mentioned in that bill only has to be available for government employees, and even then only on request. Public repositories are an option, but the government doesn't have to choose that option. The main point is to encourage reuse within the government, not to be a source of free public domain software for the public.by spauldo
4/24/2025 at 5:13:39 AM
Almost everything the government makes IS public domain, including the software.https://en.wikipedia.org/wiki/Copyright_status_of_works_by_t...
by santoshalper
4/24/2025 at 7:24:01 AM
Just because it's public domain doesn't mean they are obliged to make it available to the public. As noted above, they do have to make it available to other government agencies, but it's the government's choice to place it in a public repository. All public domain means is that if you happen to acquire a copy of it, you can do whatever you like with it.by spauldo
4/24/2025 at 8:16:26 AM
[dead]by amitrip
4/23/2025 at 9:43:05 PM
> On February 6, someone posted a lengthy and detailed critique of Elez’s code on the GitHub “issues” page for async-ip-rotator, calling it “insecure, unscalable and a fundamental engineering failure.”“If this were a side project, it would just be bad code,” the reviewer wrote. “But if this is representative of how you build production systems, then there are much larger concerns. This implementation is fundamentally broken, and if anything similar to this is deployed in an environment handling sensitive data, it should be audited immediately.”
by nativeit
4/24/2025 at 2:15:09 AM
The "critique" is nuts. Surely AI generated. If I didn't trust the domain, I'd assume the author to be incredible for seriously referencing something like this.Look at the critique [0] and then look at the code [1].
[0] https://web.archive.org/web/20250423135719/https://github.co...
[1] https://github.com/ricci/async-ip-rotator/blob/master/src/as...
by deepfriedrice
4/24/2025 at 4:11:30 AM
Yea clearly AI with the keyword bolding, numbered arguments, and so on. Feel like lots of AI produced content follow this structured response pattern.by captainkrtek
4/24/2025 at 4:31:21 AM
It's uses a simple, purpose-focused template of a type that is a common recommendation for clear communication, outline numbering, and highlights keywords using monospaced text, as is common practice in technical writing. None of that is unusual for a human, especially writing something that they know is going to be high visibility, to do.Modestly competent presentation is now getting portrayed as an "AI tell".
by dragonwriter
4/24/2025 at 9:45:56 AM
The format doesn’t itself indicate AI, but when combined with the fact that the critique is mostly nonsense it does appear to strongly suggest it.by odo1242
4/24/2025 at 6:30:09 AM
It has excellent presentation, excess verbosity, and is wholly nonsensical. Read the code. It uses excessive whitespace doing things like function calls/declarations with one parameter per line, and so it's probably like 100 lines "real" code of mostly tight functions -- the presentation/objections make no sense whatsoever.I was able to generate extremely comparable output from ChatGPT by telling it to create a hyper-negative review, engage in endless hyperbole, and focus on danger, threats, and the obvious inexperience of the person who wrote it. Such is the nature of LLMs it'd happily produce the similar sort of nonsense for even the cleanest and tightest code ever written. I'll just quote its conclusion because LLM verbosity is... verbose.
---
Conclusion This code is a ticking time bomb of security vulnerabilities, AWS billing horrors, concurrency demons, and maintenance black holes. It would fail any professional code review:
Security: Fails OWASP Top 10, opens SSRF, IP spoofing, credential leakage
Reliability: Race conditions, silent failures, unbounded threading
Maintainability: Spaghetti architecture, no documentation, magic literals
Recommendation: Reject outright. Demolish and rewrite from scratch with proper layering, input validation, secure defaults, IAM roles, structured logging, and robust error handling.
---
Oooo sick burn. /eyeroll
by somenameforme
4/24/2025 at 9:28:42 AM
> I was able to generate extremely comparable output from ChatGPT by telling itJust to check, you know that ChatGPT is fully built on human writing right?
Would it be ironic if I claim "what you write looks like what the tool can output, so you used the tool" if the tool was built to output stuff that looks like what you write.
Fun fact: anything you or me write looks like ChatGPT too. It could be surprising if people didn't spend billions and stole truckloads of scraped unlicensed content including content created by you and me to get the tool to literally do just this.
by throwaway290
4/24/2025 at 5:30:51 AM
I’m not arguing that it’s unusual for humans to write in this manner, but when you use something like chatgpt with some frequency and see that as a common response template it’s an obvious pattern..by captainkrtek
4/24/2025 at 7:00:30 AM
People say emdashes are a signal that something's from chatgpt also — yet people forget that the cliches or patterns of LLMs are learned from real-world patterns. What is common in something like ChatGPT has a good chance to also be common outside of it, and _lots_ of false positives (and false negatives) are bound to creep up frequently when trying to do any sort of pattern-based "detection" here.by drusepth
4/24/2025 at 5:17:21 PM
I’ve never encountered emdashes in emails from my colleagues before ChatGPT was available, and it’s obvious now where there are emdashes, the content is at least in part AI generated. Same with semicolons. Yes, proper grammar and syntax use semicolons but in most casual business communication those rules are modified for simplicity.by op00to
4/24/2025 at 9:52:40 AM
Yes, emdashes are inserted automatically by iOS when a user inputs a double dash: —by chongli
4/24/2025 at 4:50:48 PM
>Modestly competent presentation is now getting portrayed as an "AI tell".This. Someone on a reddit gamedev sub the other day was showing where his game got review bombed because his own description of his game used good descriptions and bulleted lists. It seems like anytime a bulleted list is used now, people assume it's because of AI.
by Suppafly
4/24/2025 at 5:30:56 AM
I'm relatively confident this critique is AI-powered. The dead giveaways:1. Verbosity. Developers are busy people and security researcher devs are busy even moreso. Someone so skilled wouldn't spend more than 2-3 sentences of time in critiquing this repo.
2. Hostility. Writing bug free code is hard, even impossible for most. Unless your name is Linus Torvalds, Richard Hipp, or maybe Dan Abramov, most devs are not comfortable throwing stones while knowing they live in glass houses.
3. Ownership. "Killshot" comments like this are only ever written by frustrated gatekeepers against weak PRs that would hurt "their baby". Nobody would get emotionally invested in other people's random utility projects. This is just a single python file here without much other context.
4. Author. The author is still an aspiring developer. See their starred repo highlighting adherence to SOLID/DRY principles as a primary feature of their project. Not something you'd expect to see from a seasoned security researcher. https://github.com/SSD1805/EchoFlow
5. Content. The critique is... wrong. It says the single file, utility repo is "awful" for being a "less maintainable" monolith. Hilariously, it calls the code bad because it does not need dependency injection. This was a top critique in the comment!
--
Regardless of political persuasion, I hope this trend of using AI to cyberbully people you don't like goes away.
by ahwelatif
4/24/2025 at 6:13:24 AM
I hope this trend of DOGE using the US Government to cyberbully people they don't like goes away.by DonHopkins
4/24/2025 at 9:47:20 AM
Once you've read enough ChatGPT slop, you know it when you see it:- Massive verbosity.
- Flawless spelling and grammar.
- Grandiose tone.
- Robotic cadence where every paragraph and sentence has similar length (particularly obvious in longer text.)
- Em dashes everywhere.
- The same few stock phrases or sentence structures used over and over - e.g. "This isn't X—it's Y", which that issue uses twice in two paragraphs:
There is nothing "hardcore" about writing fragile, insecure, and unscalable code. This isn’t pushing boundaries—it’s demonstrating a lack of engineering fundamentals.
If this is what was learned at previous jobs, then it’s time to unlearn it and start following best practices. Because right now, this is not just bad engineering—it’s reckless.
If AI didn't write that snippet then I'll permanently retire from internet commenting.(None of what I just wrote is intended as a defence of DOGE.)
by arrowsmith
4/24/2025 at 7:43:29 AM
The point 2 makes me think you did not read what developers write on the internet, in particular in flame war, in particular when they have beef with whoever they argue with.Verbose hostility of that kind and throwing stones, even nitpicking with exaggerated outrage are no exception. And lack of experience never stopped people from feeling and behaving like god given gift to programming profession.
by watwut
4/24/2025 at 9:46:54 AM
a propos number 2, I think this is only a feature of seasoned developers who have managed to outgrow their own high opinions of themselves. I've met plenty of younger devs who would totally write something like this taking down the work of someone whose style did not align exactly with what they considered "good".by bryanrasmussen
4/24/2025 at 6:31:45 AM
I agree on all counts. The readme of the repo you link also smacks of an AI generated summary of the codebase. (Frankly, I don’t think the AI was able to understand what the code in that repo does, which is my guess as to why it talked much about form rather than function.)by paulgb
4/24/2025 at 10:44:02 AM
> Developers are busy people and security researcher devs are busy even moreso.Neither the critique, the critiquer's profile, nor even the Krebs article says that the critique is a security researcher, and it definitely isn't the case that all devs are particularly "busy people". You yourself argue later, in fact, that the signs are that the author is not an experienced dev or security researcher, so it is nonsense (even more than assuming an average rules out an exception in the group) to argue that the code is AI-written based on the assumption that normally, a security researcher would be too busy to write it.
> Hostility. Writing bug free code is hard, even impossible for most. Unless your name is Linus Torvalds, Richard Hipp, or maybe Dan Abramov, most devs are not comfortable throwing stones while knowing they live in glass houses.
If you've been online more than about 5 minutes, you know that there is no shortage of hostility, and that even if it isn't most of any given community, its a highly visible subset of any community online.
> "Killshot" comments like this are only ever written by frustrated gatekeepers against weak PRs that would hurt "their baby". Nobody would get emotionally invested in other people's random utility projects.
The only reason we are talking about this on HN is that this isn't some random "other people's random utility project". The critique was posted while the author of the code being critiqued was a high profile figure in current news stories, and the critiquer posted a more explicitly political followup the day after the original critique addressing the author's highly-publicized resignation due to the news coverage.
> The author is still an aspiring developer. See their starred repo highlighting adherence to SOLID/DRY principles as a primary feature of their project.
That...doesn't support the critique being AI. In fact, it undercuts it because it provides a simpler explanation than AI as the explanation for your next bullet point, that the critique is wrong (especially, the SOLID/DRY focus is particularly consistent combined with the "aspiring dev" status you describe is particularly consistent with the specific things you focus on the critique being wrong about.) It also undercuts your first bullet point, as already discussed, which hinges on the assumption that the critique was written by an very busy experienced security researcher, and not an aspiring dev..
I mean, if excess verbosity, a more regularized format than is typical for the venue, and being wrong together are hallmarks of an AI written critique, then I'd say your post is at least as much AI-suspicious as the critique under discussion.
by dragonwriter
4/24/2025 at 2:59:47 AM
Lol that's so funny. Can't imagine writing that. (the critique, not the code).by krferriter
4/24/2025 at 2:40:16 AM
Seeing Krebs link to this downgrades my impression of how trustworthy his assessments are.by mquander
4/24/2025 at 3:24:30 PM
> it should be audited immediately.Certainly Elon made him print it out on paper to personally code review.
by dessimus
4/23/2025 at 10:03:44 PM
FYI the Fork got hidden/deleted in the last minute or so -- did anyone manage to clone it before it disappeared?by dijksterhuis
4/23/2025 at 10:42:59 PM
I did. It's essentially just a single .py file: https://gist.github.com/whalesalad/06804fd734efe6bd2e0c84906...by whalesalad
4/23/2025 at 10:47:23 PM
x_forwarded_for = headers.get("X-Forwarded-For")
if x_forwarded_for is None:
x_forwarded_for = ipaddress.IPv4Address._string_from_ip_int(
randint(0, MAX_IPV4)
)
lol
by alright2565
4/23/2025 at 10:59:33 PM
The original author claims this is to prevent API gateway from leaking the true client IP.by marcusb
4/23/2025 at 11:22:32 PM
To be fair the code actually creates a new API gateway server that acts as a proxy on to an already existing server and you're possibly meant to use this header with your own gateway service.So, it's set as a header, sent to a user owned proxy, then to the actual external endpoint.
On the other hand I think the receiving API Gateway will be able to see and log your AWS account identifier when you do this. So your IP may not be the only identifying information that needs to be obscured for this to actually work.
by timewizard
4/24/2025 at 1:28:50 PM
The original code is explicit as to the intended purpose: # Auto generate random X-Forwarded-For if doesn't exist.
# Otherwise AWS forwards true IP address in X-Forwarded-For header
x_forwarded_for = request.headers.get("X-Forwarded-For")
if x_forwarded_for is None:
x_forwarded_for = ipaddress.IPv4Address._string_from_ip_int(randint(0, MAX_IPV4))
The DOGE guy just stripped the comments out.
by marcusb
4/24/2025 at 12:09:21 AM
The code seems like a "creative" use of API gateway to turn it into a proxy for other external sites (single site, really, since you need one per site.) Wouldn't it be simpler to send the requests through a lambda (with a function URL) and get better control of the outbound requests?by icedchai
4/24/2025 at 1:01:02 AM
This actually a very common way that hackers have used api gateway for years now.You can take a look at plugins like IPRotate. We are currently working on bringing that into our product.
by Sytten
4/24/2025 at 12:35:45 AM
This is cheaper in that you don't have to pay for any compute time.by timewizard
4/24/2025 at 12:34:18 AM
tbh the ip space of lambda is large, but not as large as you might think. i did some experiments ages ago with the hypothesis that lambda could be a decent proxy network (if many ip addresses are needed) but iirc the upper limit in my testing was about ~50 ip's.Even this example if you maxx out your usage of regions appears to only give (2,4 * num_regions) or let's say 70-80 ip's maximum. And they are AWS ip's, which means it is gonna be really easy to detect and block that traffic.
But if you know your target receives lots of traffic from AWS systems all around the world ... this is a good way to mimic that.
by whalesalad
4/23/2025 at 9:57:45 PM
GPLv3 requires the license to be kept. Seems reportable to the owner of the repo and or GitHub.by plandis
4/24/2025 at 5:08:31 AM
The only person who has standing to say anything is the original author of the code, the holder of the copyright.It's possible, but very unlikely, the copyright license wasn't actually violated because, for example, the fork could have arranged a separate license.
The best example of this is the Qt Project's code: https://www.qt.io/qt-licensing
You can get it under a GPL license for free. You can pay them money to get it under a Commercial license that would let you modify the code without releasing changes.
So, while I doubt it happened, the person who forked it here could have contacted the original author, the copyright holder, and asked for an exemption from the GPL terms.
by TheDong
4/24/2025 at 1:05:55 AM
I'm sure the people who work for an administration that by and large flaunts court orders responsible for this will get right on that.....aaaand it's gone.by DrillShopper
4/24/2025 at 2:35:13 AM
floutsby amake
4/24/2025 at 9:09:34 AM
The GitHub part makes it... weird.You are only required to keep the GPL3 license if you re-distribute it. Putting it in a GitHub repo, is ambiguous whether or not it is re-distributing it, at least morally.
If you want to delete the license in a personal copy, that is perfectly valid according to the license terms. If you then happen to upload that to a private GitHub repo, also perfectly valid.
If you then happen to upload that to a public GitHub repo, because of, say, restrictions on free private repos, without intent to distribute, then what?
by Ferret7446
4/24/2025 at 9:49:04 AM
Putting it on a GitHub repo IS redistributing it. By putting it on GitHub you agree in the ToS that you have the rights to distribute the code. Which you only have if you don’t violate the license.by odo1242
4/24/2025 at 9:22:53 AM
> If you then happen to upload that to a public GitHub repo, because of, say, restrictions on free private repos, without intent to distribute, then what?Then you keep the license eh? Distributing without an intent to distribute is distributing.
Git is free and open source. If you want version control and collaboration and NO unintended distribution completely for free you can just use Git. It even has a built in server to share with your work buddies.
by throwaway290
4/23/2025 at 10:15:37 PM
The fork has been deleted it seems.by darknavi
4/23/2025 at 11:27:35 PM
posted above ^^by seejayjordan
4/24/2025 at 7:50:28 PM
> I bet this was just pasted into LLM with prompt to make it async, but if that worked why notVibe coding
> Original GPL3 license is gone. Obviously not something you would expect DOGE people to understand or respect.
Why would they? They don't give a FF about courts.
by 77pt77
4/24/2025 at 1:50:56 AM
>not something you would expect DOGE people to understand or respectTo be fair I see in my daily life folks who copy and paste from stack overflow or random GitHub repo and move on with their day. They ignore the Creative Commons Attribution-ShareAlike or whatever license is applied to the code they copied.
I see on this very site people who will share copyrighted articles that are behind a paywall (just because it is on some archive site doesn’t make it right).
Please don’t take this as support for DOGE and the headaches they are causing. To make a cheap jab at a group of people while ignoring the group that you associate with is bad form.
by grepfru_it
4/24/2025 at 3:45:20 AM
I'd say it's wrong in both cases, but we shouldn't ignore degrees of wrongness.Copy pasting from stack overflow without attribution is wrong but it's also harder to claim "ownership" over single lines or small snippets. It depends how "obvious" they are. You definitely can't copyright trivial functions. There's a lot of gray here but yes attribution is always good.
But things get a lot less murky when we're talking about forking a project. That's usually nontrivial and non obvious. I think what's most important is that removing a license is an active decision. Certainly that would make a critical difference in a court [0]
Then there's further escalation by who is doing the action. The more power and influence you have the greater responsibilities. All men are not created equal. Men with more power can disproportionally do more damage and require higher accountability. So yeah, I care a fuck ton more about a government employee doing something bad especially while performing official duties more than some rando. The ability to do harm is very different.
The reason I dislike your comment is because it's dismissive of the action. "Other people do it!" Is not a defense nor excuse. It is even worse by ignoring multiple points of context.
[0] though protecting open source has been traditionally hard for many reasons. Specifically it's hard for small developers to take legal action, especially against larger bodies. But isn't this something we should want to be fixed? Credit for our own contributions?!
by godelski
4/24/2025 at 2:06:02 AM
>To make a cheap jab at a group of people while ignoring the group that you associate with is bad form.What group does the person who makes the comment associate with?
by Braxton1980
4/24/2025 at 1:54:46 AM
< To be fairirony
by mistrial9