If anyone from Github is reading this -- I strongly suggest adding a banner or modal dialogue to warn users about the backdoor in this tool, and any other software with a known backdoor (e.g. forks of the project)
If anyone from Github is reading this -- I strongly suggest adding a banner or modal dialogue to warn users about the backdoor in this tool, and any other software with a known backdoor (e.g. forks of the project)
https://googleprojectzero.blogspot.com/2021/12/a-deep-dive-i...
Or a story from today:
https://news.ycombinator.com/item?id=37425007
So perhaps the similarity between iMessage and GutHub actions is there are a lot of things that could go wrong. In iMessage it’s a pile of memory unsafe code that was not originally designed to withstand attack. In GutHub actions there is a lot of trust in their parties that could potentially be exploited.
https://source.android.com/docs/security/bulletin/2023-09-01
For certain parts of integration and testing jobs that are operating on untrusted code, it'd therefore be desired to not allow incoming PRs to change certain parts of the CI configuration (not only including .github/workflows, which can be protected using branch protection rules, but the testing framework).
It's possible to achieve this by splitting up your workflows and using workflow_run but it's non-obvious and finicky enough that I very rarely see it done.
GitHub could make this easier and propose better patterns than they do in their attempt to address the problem[0], which I think could use a 2023 follow-up.
[0]: https://securitylab.github.com/research/github-actions-preve...
---
In this context, an iMessage message <> a GitHub PR, I guess.
https://arstechnica.com/gadgets/2023/09/apple-patches-clickl...
iMessage itself is a dumpster fire that time and again has been proven to be an attack vector.
It would be very easy to add a backdoor to one of those build steps.
The comparison with iMessage is that it’s unsafe by design, at the architecture level, because you’re relying on live code made by anonymous people. One day, attack vectors will be found every second day.
I almost laughed when GitHub suggested me an Action for Makefile based projects. The entire build process in my case consists of "make package"...
No it isn't.
It's become normalized but it isn't fine. Whoever thought it was a good idea to download massive amounts of unaudited code at build time to then run it behind your defensive lines should have thought about that a bit longer. CI/CD is great. GitHub/GitLab are great. But combining the two has substantial risks. More so for languages that have broken package management and namespace issues.
If you trust Google or Apple with your phone then I'm fine with that, it's your phone, your life. But I've found that trusting companies to have their incentives aligned with your own or with what's good for the world in general is a structural mistake that will find you disappointed each and every time given a long enough engagement. You can't trust that which you don't own and can't verify.
- IntelliJ plugins,
- Maven,
- NPM,
- GitHub Actions.
Jetbrains says it carefully reviews the source code of all versions of all plugins, and Maven has a somewhat decent dependency tree that you can restrict to major actors (Spring-Apache-Google).
Maybe the key to trust would be to have larger pieces of code (such as Spring) with quite a lot of process to check-in code, rather than a thousand NPM packages. The parcellization of OSS didn’t do good for trust.
At best they can be used for coin mining (running up a huge bill), at worst for stealing private customer data (and then selling/ransomwaring it).
There is some irony in there.
It's much more likely that the binary releases and/or autoupdate binaries are backdoored. If someone compiles their own version, and then clicks to accept the autoupdate, they could be infected. The binary is 15+MB in size, which is far more than enough to hide a small backdoor.
https://github.com/dbgsymbol/getsymbol/blob/cb4bdedc1a85c308...
https://github.com/bb33bb/getsymbol
https://github.com/clayne/win-getsymbol
here is the same link as in the comment above from one of the forks:
https://github.com/bb33bb/getsymbol/blob/main/GetSymbol/CMai...
the code fetches from `UPDATE_CHECK_URL`, which is hardcoded as:
which as of the time of this posting, returns:
"GetSymbol 2.0.3|https://dbgsymbol.com/downloads/2.0.3/GetSymbol.exe"
the GetSymbol.exe file (which is downloadable right now) being presumably the infected file being discussed..!
you can still see cached bits of the code via github search -> https://github.com/search?q=path%3AGetSymbol%2FCMainDlg.cpp+...
and a tiny bit of the repo's main page in google's cache: http://webcache.googleusercontent.com/search?q=cache%3Ahttps...
and the user's github profile, again from google's cache: https://webcache.googleusercontent.com/search?q=cache:JXXyoV...
the dbgsymbol.com links above still work, obviously.
Analysis of which accounts starred it prior to publicity is probably a worthwhile endeavor. If there's any commonality with other obscure projects, that may be an indicator those accounts could be puppets.
I hope an analysis like you proposed could yield some insights to patterns or maybe even enough data to do some machine learning on.
I just had a look at it like 30 minutes ago and it was still there then.
Here are archives of what it looked like
http://web.archive.org/web/20230907185609/https://github.com...
http://web.archive.org/web/20230907193333/https://github.com...
http://web.archive.org/web/20230907193402/https://github.com...
The attackers used a 0-day but getsymbol is not one.
> The 0-day is in a popular software package.
(I have no idea what this is.)
> The GitHub repo apparently contains a backdoor ability to execute code from the attacker.
(This is what Google says and I think it’s the autoupdater.)
Is this different than what you feel?
"But the tool also has the ability to download and execute arbitrary code from an attacker-controlled domain."
Sounds like most software nowadays to be honest. The blog author does not really point out why this code would be more malicious than "normal" or how the code author is known to be Korean.
0: https://github.com/dbgsymbol/getsymbol/blob/cb4bdedc1a85c308...
if (updateDlg.DoModal() == IDOK) { … }
then doesn’t that mean it only runs that code if the user clicks “OK” on the update dialog?(Edit: I think I understand now. It’s not the code, it’s the update URL that’s the problem, because it’s controlled by NK. So if you run this and blindly click “OK”, then it will download an executable that will infect your PC.)
(Edit 2: Or the issue is not in the source at all, but is in the prebuilt binary.)
I'd also strongly suggest they add a way to flag projects in a way that is appropriate.
...which while admirable from one perspective, also effectively destroys the evidence.
I prefer the warning instead.