SPLASHY(8mandos)

πŸ“¦
version 1.8.19 Β· 3 versions
, in debian trixie, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’… SPLASHY β€” the Mandos plugin that steals a password out of splashy ✨

okay bestie, welcome to SPLASHY(8mandos), a page straight out of the Mandos Manual. it's short, it's dramatic, it's giving "tiny program, huge responsibilities." let's get into it 🫢


🌸 NAME 🌸

splashy β€” a Mandos plugin that uses splashy to get a password. that's it. that's the whole job. iconic behavior honestly.


✨ SYNOPSIS ✨

splashy

no flags, no args, no notes. she simply is. πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

so like, this program prompts you for a password using splashy_update(8), and then it outputs whatever password you gave it to standard output. that's the vibe. πŸŽ€

and if it can't find any running splashy(8) process? bestie, it does not wait around. it immediately exits with an exit code that means "failure." no splashy, no password, no service. 😭

now β€” and this is the important part β€” this program is not very useful on its own. fr fr. it's really meant to run as a plugin inside the Mandos client-side system, where it acts as a fallback and alternative to getting passwords from a Mandos server. she's a supporting character, not the lead. (though lowkey, every main character needs a solid bestie. 🫢)

and here's the messy part: if this program gets killed β€” which would presumably be plugin-runner(8mandos) doing it, because some other plugin already got the password β€” it cannot tell splashy(8) to abort its password request. why? because splashy(8) just doesn't support that. πŸ’€

so what does it do instead? it kills the running splashy(8) process and starts a brand new one, using β€œboot” as the only argument. chaotic? yes. necessary? also yes. periodt.


πŸ‘‘ OPTIONS πŸ‘‘

This program takes no options.

that's the whole section. she said "I don't do options." queen. ✨


πŸ’œ EXIT STATUS πŸ’œ

  • if exit status is 0 β€” slay, the output from the program is the password exactly as it was read. πŸŽ‰
  • if exit status is anything other than 0 β€” the program was interrupted or hit an error, and any output so far could be corrupt and/or truncated, so you should ignore it. don't trust it. throw it away. it's not real. πŸ’€

🌈 ENVIRONMENT 🌈

  • cryptsource, crypttarget β€” if these are set, they're assumed to hold the source device name and the target device mapper name respectively, and they'll get shown as part of the prompt. cute little context for your eyeballs. ✨

these variables will normally be inherited from plugin-runner(8mandos), which might have in turn inherited them from its calling process. it's giving family heirloom. 🧬

this behavior is meant to exactly mirror the behavior of askpass, the default password prompter. twins. πŸ’…


πŸŽ€ FILES πŸŽ€

  • /sbin/splashy_update β€” this is the command that gets run to retrieve a password from splashy(8). see splashy_update(8). πŸ‘€
  • /proc β€” to find the running splashy(8), this directory gets searched for numeric entries, which are assumed to be directories. inside every one of those directories, the exe entry is used to figure out the name of the running binary and the effective user and group ID of the process. see proc(5). lowkey forensic work ngl πŸ”
  • /sbin/splashy β€” this is the name of the binary that gets searched for in the process list. see splashy(8). πŸ¦‹

πŸ™ˆ BUGS πŸ™ˆ

killing splashy(8) and starting a whole new one is ugly, but it's necessary as long as splashy doesn't support aborting a password request. not our fault, we're just working with what we've got. 😭

please report bugs to the Mandos development mailing list: <mandos-dev@recompile.se> (subscription required). note that this list is public β€” so like, everyone can see it, okay? the developers can be reached privately at <mandos@recompile.se> (OpenPGP key fingerprint 153A 37F1 0BBA 0435 987F 2C4A 7223 2973 CA34 C2C4 for encrypted mail). πŸ”


⭐ EXAMPLE ⭐

note that normally, this program will not be invoked directly β€” instead it gets started by the Mandos plugin-runner(8mandos). she has people for that. πŸ’…

this program takes no options. (again. still. forever.)

splashy

🚨 SECURITY 🚨

okay this is the serious section bestie, sit up. 🫢

if this program is killed by a signal, it will kill the process ID which β€” at the start of this program β€” was determined to be running splashy(8) as root (see the section called β€œFILES”). there is a very slight risk that in the time between those two events, that process ID was freed and then taken up by another process; the wrong process would then get killed. yikes. πŸ’€

now, this program can only be killed by the user who started it; see plugin-runner(8mandos). this program should therefore be started by a completely separate non-privileged user, and no other programs should be allowed to run as that special user. this means it is not recommended to use the user "nobody" to start this program, because other possibly-less-trusted programs could be running as "nobody", and they'd then be able to kill this program, triggering the killing of the process ID which may or may not actually be splashy(8). messy messy messy. πŸ™ˆ

the only other thing that could be considered worthy of note is this: this program is meant to be run by plugin-runner(8mandos), and will β€” when run standalone, outside, in a normal environment β€” immediately output on its standard output any presumably secret password it just received. so when running this program standalone (which should never normally be done), take care not to type in any real secret password by force of habit, because it would then immediately be shown as output. muscle memory betrayal fr fr. 😭


🌟 SEE ALSO 🌟

intro(8mandos), plugin-runner(8mandos), proc(5), splashy(8), splashy_update(8)


Copyright Β© 2008-2019 Teddy Hogeborn, BjΓΆrn PΓ₯hlsson

this manual page is part of Mandos. πŸŽ€

Mandos is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. slay, freedom. πŸ¦‹

Mandos is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. see the GNU General Public License for more details. (no cap, read the license. πŸ‘‘)

you should have received a copy of the GNU General Public License along with Mandos. if not, see http://www.gnu.org/licenses/.


and that's the whole page, bestie!! πŸ’…βœ¨ this was Mandos 1.8.19, dated 2019-02-10 β€” written for SPLASHY(8mandos) and honestly? she ate. go get those passwords. πŸ«ΆπŸŽ€πŸ¦‹

πŸ“¦ where this page comes from