11
submitted 1 year ago* (last edited 1 year ago) by max@nano.garden to c/hacking@lemmy.ml

The linked paper was pointed out to me during a discussion about trusting executables built from source. Perhaps this paper is a well-known document in the hacking community, but I thought it was quite interesting and thought I'd share it.

The document describes how the author created a bugged C compiler that would compile UNIX code in which the "login" command would insert a backdoor.

The actual bug I planted in the compiler would match code in the UNIX "login" command. The re- placement code would miscompile the login command so that it would accept either the intended encrypted password or a particular known password. Thus if this code were installed in binary and the binary were used to compile the login command, I could log into that system as any user.

The author also describes strategies to build such bugged compiler in a way that would be very difficult to detect.

The document ends with a moral statement about hacking with a perspective from 1984 which is also an interesting read.

[-] max@nano.garden 5 points 1 year ago* (last edited 1 year ago)

Ooh, I think I found the paper!

Oof:

The actual bug I planted in the compiler would match code in the UNIX "login" command. The re- placement code would miscompile the login command so that it would accept either the intended encrypted password or a particular known password. Thus if this code were installed in binary and the binary were used to compile the login command, I could log into that system as any user

[-] max@nano.garden 5 points 1 year ago* (last edited 1 year ago)

I think that any step that facilitates verifying the build is great. If trust is required, then I should simply not release any executables if I want to remain anonymous. I would like to be able to release executables without needing to ask people to blindly trust me. I would like to be able to show them reasonably good evidence that the program is built from the source that I say it is.

[-] max@nano.garden 8 points 1 year ago

If I understand this correctly, signify would allow someone to verify that the executable was built by me. But then they would still have to trust me, because I can also sign the malicious executable.

78
submitted 1 year ago by max@nano.garden to c/opensource@lemmy.ml

I have forked a project's source code on GitHub. The program takes a private key as an input and that key must never leave the client. If I want to share a pre-built executable as a release it is essential that I can prove beyond reasonable doubt that it is built from the published source.

I have learned about how to publish the releases by using a Workflow in the GitHub actions such that GitHub itself will build the project and then repare a release draft with the built files as well as the file hashes..

However, I noticed that the release is first drafted, and at that point I have the option to manually swap the executable and the hashes. As far as I can tell, a user will not be able to tell if I swapped a file and its corresponding hashes. Or, is there a way to tell?

One potential solution that I have found is that I can pipe the output of the hashing both to a file that is stored and also to the publicly visible logs by using "tee". This will make it such that someone can look through the logs of the build process and confirm that the hashes match the hashes published in the release.

Like this:

I would like to know whether:

  • There is already some built-in method to confirm that a file is the product of a GitHub workflow

  • The Github Action logs can easily be tampered by the repo owner, and the hashes in the logs can be swapped, such that my approach is still not good enough evidence

  • If there is another, perhaps more standard method, to prove that the executable is built from a specific source code.

[-] max@nano.garden 29 points 1 year ago

Finally. Someone noticed 🥹

[-] max@nano.garden 5 points 1 year ago

The creator of the tool is the admin of lemmings.world, and the tool is hosted at schedule.lemmings.world. So, if you have a user at lemmings.world, you can use this tool without having to trust a third-party.

If you don't have a user there, you can create a user in that instance for the purpose of creating scheduled posts. Removing the need to trust two parties rather than one.

And, of course, since the source code is open anyone else can attach this to their own instance! Pretty cool.

[-] max@nano.garden 22 points 1 year ago
[-] max@nano.garden 18 points 1 year ago

Aah, ok! That at least explains what they could have been thinking.

But, of course, this is a terrible idea!!

[-] max@nano.garden 41 points 1 year ago

Both sides? "Oh yeah, the front looks a lot like the ID I lost, but can you please send me the back side too so that I can confirm?"

[-] max@nano.garden 8 points 1 year ago

Some virus managed to wreck inflammatory havoc around some of my nerves and the right side of my head has been numb since Thursday, my ear in pain, and a zoo of sporadic symptoms come and go 😅 So I have been in the computer a lot. I've been working on setting up a lemmy instance and I also played in the canvas.

As for the rest of the week... I have been procrastinating on thesis writing, and I need to be done before September, so I am trying to find a source of will-power to force myself to write. But this infection is not helping me 😬

[-] max@nano.garden 4 points 1 year ago

Ah, it's always in the small-text (Note [2] at the bottom of https://www.paypal.com/us/digital-wallet/manage-money/crypto/pyusd):

PayPal Balance account required to access cryptocurrency. When you buy or sell cryptocurrency, including when you check out with crypto, we will disclose an exchange rate and any fees you will be charged for that transaction. For currencies other than PYUSD, the exchange rate includes a spread that PayPal earns on each purchase and sale. Learn more about cryptocurrency fees.

So, it is not clear to me whether you would be able to exchange monero for PYUSD in some non-KYC exchange, but from this I gather that the only way to actually pay a vendor using PYUSD would be to have a PayPal account that is tied to your identity.

Furthermore, their smart contract has a built-in "asstProtectionRole" that allows them to uni-laterally freeze the balance in any account.

You can find the read-me in their github project here: https://github.com/paxosglobal/pyusd-contract

Here is an excerpt:

Asset Protection Role

Paxos Trust Company is regulated by the New York Department of Financial Services (NYDFS). As required by the regulator, Paxos must have a role for asset protection to freeze or seize the assets of a criminal party when required to do so by law, including by court order or other legal process.

The assetProtectionRole can freeze and unfreeze the PYUSD balance of any address on chain. It can also wipe the balance of an address after it is frozen to allow the appropriate authorities to seize the backing assets.

Freezing is something that Paxos will not do on its own accord, and as such we expect to happen extremely rarely. The list of frozen addresses is available in isFrozen(address who).

You can see the actual function here.

I don't see this as much of an improvement over using PayPal and a bank. Maybe it can be useful if you want to move crypto into an asset that you can pay with in regular online purchases without going through an exchange. But PayPal will still play the role of the intermediary that knows you. Storing value in an asset that can be frozen by PayPal is absolutely not desirable. So I think that this coin is kind of a gimmick.

But it could have a positive influence in that online vendors might become more accustomed to accepting crypto payments, and it could help adoption in the long run. Let's hope.

[-] max@nano.garden 4 points 1 year ago

You have a good reason to be proud. It's awesome!

[-] max@nano.garden 10 points 1 year ago

Funny thing is that those of who left aren't there anymore to comment that we did leave... So anyone who is still there is probably looking at the others who stayed and saying "See?! The protest didn't work because we are still here!"

6

I have set up an instance to host an unofficial community centered around the cryptocurrency Nano (XNO): https://nano.garden

The purpose of the instance is to have a space in the lemmyverse to discuss the Nano cryptocurrency project and the community projects being built around it.

I want to play around with the integration of nano into the fediverse, but I don't want to do this in an invasive manner, so I've set up an instance to try to build some of these tools directly into the UI without inconveniencing others. Anyone else who needs an instance to try out their own nano-related inventions is more than welcome to try them out here. You may consider it a nano-playground in the Lemmyverse.

I chose Nano for this because I know that there are many open source projects related to 'tipping bots' and faucets, transfers are very fast and free, and the community that I've encountered is nice. I also found out that there is already a nano tipping button implemented in a mastodon instance, and I may draw some inspiration from that: https://xno.social/home

view more: next ›

max

joined 1 year ago