56
submitted 1 year ago by Berserkware@lemmy.ml to c/linux@lemmy.ml

Hi, for the past few months I have been working on my website Installies. It is a site for managing, organizing, and retrieving shell scripts for use to install, remove, update or compile apps on Linux and Unix-based systems.

You might be asking why can't you just use your system's built-in package manager. While that will work for most apps there might be some problems with others:

  • Some apps might not be on your system's package manager. This would make it so you might have to compile the app, which might be difficult for newer Linux users.
  • Apps you have to run through wine generally are not in package manager's repositories. They also might need extra libraries that might be complicated to install.
  • There might be some weirder software that isn't really an app, or is not traditionally installed on your computer e.g. TempleOS in a VM.
  • Some apps have different packages for similar versions of the app, so a script that lets you choose between all the options would make it easier to decide which one to install, such as QEMU.

As for script security, Installies has a voting and reporting system to help make sure that scripts are safe.

There are some design choices I am yet to make, so I would like your guy's input. One of them is if app maintainers should be able to stop non-maintainers from creating scripts on apps. Please comment what you think (also any other feedback).

Future Plans
  • Utility Scripts: General purpose shell scripts.
  • CLI: This will allow for a universal interface to install things on Linux. It will also allow for easier use of Installies on servers.
  • Collaboration: Allowing multiple people to directly contribute to scripts without being a maintainer.
  • User ranking system: A system to rank users by how popular their scripts. This will make it easier for users to judge if a script is good without having to analyze the source.

As it is in beta, there will be many bugs. If you find any bugs please report them on the GitHub. Feedback and feature requests are also welcome.

Happy Scripting!

Links
you are viewing a single comment's thread
view the rest of the comments
[-] CameronDev@programming.dev 25 points 1 year ago

You have probably invested a lot of time and effort into this, so please take this as constructive criticism.

Your security systems are probably not going to be sufficient, for a whole number of reasons.

Script Voting

The general public is not able to appropriately audit shell scripts. This extends even to sysadmins and more technical people. The people who can properly audit scripts are a minority, and they may not even be amongst your user base. Anyone who gets a script that "does its job" is going to upvote it as fine, because they may not even be aware of its malicious side effects.

Scripts will naturally need to evolve over time, so script updates will be a normal part of your system. Will the votes reset for new versions? Is there anything stopping someone uploading farming votes with valid scripts, and then backdoor the script once it gets sufficiently popular?

Is there any form of vote manipulation prevention planned? If not, bad actors can create an army of accounts and upvote their malicious content. Can you remove a users votes if they are found to be acting maliciously? Will it even be possible for you to tell the difference between a naive user who doesn't understand the maliciousness of the script, versus an account actively increasing the rating of a bad package?

User Reputation

This seems easy to game as well. Upload a host of valid scripts, gain reputation, and then when ready, upload malicious scripts.

Collaboration

Allowing non-maintainers to edit and upload scripts seems like a wildly bad idea. There must be some level of maintainer approval for that right? Still will have the same issues, easy for someone to build trust on a script repo and then exploit it when it suits them.

None of these issues are unique to your site, pypi, dockerhub etc have all hit these issues in the past.

I think the only real answer is to have very strong human moderation, but I fear that if your site takes off, the workload will rapidly spiral out of control. Otherwise, interesting idea, Good Luck!

[-] Berserkware@lemmy.ml 3 points 1 year ago

Thank you for the feedback. I think I will remove the voting system for now while I figure out of solution. I will probably not be adding the user reputation system, unless I figure out a way to do it without facing the problems you have mentioned. As for collaboration, I will add a feature allowing app maintainers to set whether or not non-maintainers can add scripts without maintainer permission. Thank you again for the feedback, it was very useful!

[-] CameronDev@programming.dev 7 points 1 year ago

Have you considered some form of CI? I.e: Spin up a VM, run the script, reboot, report what changed? Might be a little expensive, but could help auditing?

[-] Berserkware@lemmy.ml 3 points 1 year ago

I have, but I think it would be a bit too expensive on my VPS, but might use it if my site ever catches on. I have also considered using something like Try, but it isn't a full sandbox.

[-] CameronDev@programming.dev 3 points 1 year ago

Very understandable. And from a security standpoint not necessarily indicitive of anything. A good malicious script would just check its environment first.

[-] aodhsishaj@lemmy.world 1 points 1 year ago

Would it know if it was a VM? I think KVMs can host only the kernel if I'm not mistaken

[-] CameronDev@programming.dev 1 points 1 year ago

I think you can detect when your in a VM, not sure exactly how though. But they could even be checking for other environment factors, like network addresses, system language, or timezone details.

load more comments (2 replies)
load more comments (4 replies)
load more comments (7 replies)
this post was submitted on 12 Dec 2023
56 points (85.0% liked)

Linux

48758 readers
1010 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS