checkAPT.py

Fórum: 

# grep systemuser /etc/passwd /etc/shadow
/etc/passwd:systemuser:x:123:1000::/home/systemuser:/bin/false
/etc/shadow:systemuser:*:17974:0:99999:7:::

# getent group sudo | cut -d: -f4
katica

# sudo -l -U systemuser
Matching Defaults entries for systemuser on pc:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    pwfeedback

User systemuser may run the following commands on pc:
    (root) NOPASSWD: /usr/lib/linuxmint/mintUpdate/checkAPT.py

# cat /usr/lib/linuxmint/mintUpdate/checkAPT.py | grep shell=True
                comnd = Popen(' '.join(cmd), shell=True)

Igaza van ennek az oldalnak és tényleg aggályos ez a kód?
https://bugs.launchpad.net/linuxmint/+bug/1525636

 

kimarite képe

A sudo parancsra vonatkozó jogokról van szó ...

Értékelés: 

0
Még nincs értékelve

Ez a kódrészlet listázza a Rendszergazda (elnevezésű) felhasználó sudo parancsra vonatkozó jogait (azzal vagyok belépve [$USER], azaz az elsőként létrehozott felhasználó a „rendszergazda”):

sudo -l -U $USER
Matching Defaults entries for kim on kim-hp:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    pwfeedback

User rendszergazdinak lehetségesen futtathatóak az alábbi parancsok a gépnév szerint:
    (ALL : ALL) ALL <-- minden parancsnál használhatja a sudo parancsot, de be kell gépelni a felhasználói jelszót minden esetben.
    (root) NOPASSWD: /usr/lib/linuxmint/mintUpdate/checkAPT.py <-- a Frissítéskezelő alkalmazás frissítési folyamatának indításához (a rendszer indításakor, és a beállított időközönként: 2 óra az alap) nem kell begépelni a felhasználói jelszót. Vagyis kizárólag a checkAPT Python parancsfájl indításához, futtatásához nem kell jelszó. Érdekes lenne, ha kéne ..., ez kényelmi beállítás. Telepítés nem történhet, csak a forráslista frissítése.

A checkAPT.py parancsfájl részlete mutatja, hogy konzolon és nem grafikusan fut a frissítés a kiemelt parancsok tekintetében:

def refresh_cache(self):
        if os.getuid() == 0 :
            if "--use-synaptic" in sys.argv:
                window_id = int(sys.argv[2])
                from subprocess import Popen
                cmd = ["sudo", "/usr/sbin/synaptic", "--hide-main-window", "--update-at-startup", "--non-interactive", "--parent-window-id", "%d" % window_id]
                comnd = Popen(' '.join(cmd), shell=True)
                comnd.wait()
            else:
                self.cache.update()

... a Synapticot régebben is használta a Frissítéskezelő, azonban jobban ráépült, mint manapság. Ha az automatikus frissítés van beállítva, akkor nyilván nem fog jelszót kérni telepítéshez sem. Nem értem egészen, mire gondolt az ürge a sebezhetőség kapcsán egészen pontosan. A shadow és a passwd fájl miért van belekeverve a dologba, azt végképp nem értem. Te érted? Az egészet.

A sudo kézikönyvéből:

man sudo

Nyilván „a mindenhez” jog kell, erre való!

NAME
sudo, sudoedit — execute a command as another user

-l, --list  If no command is specified, list the allowed (and forbidden)
           commands for the invoking user (or the user specified by the
           -U option) on the current host.  A longer list format is used
           if this option is specified multiple times and the security
           policy supports a verbose output format.
##### Listázás (parancsoké, melyeket a lekért felhasználó használhat)

           If a command is specified and is permitted by the security
           policy, the fully-qualified path to the command is displayed
           along with any command line arguments.  If command is speci‐
           fied but not allowed, sudo will exit with a status value of
           1.

-U user, --other-user=user
           Used in conjunction with the -l option to list the privileges
           for user instead of for the invoking user.  The security pol-
           icy may restrict listing other users' privileges.  The
           sudoers policy only allows root or a user with the ALL privi‐
            lege on the current host to use this option.
##### A lekért felhasználó megnevezése

Ennek nem sok értelme van (de most fentebb éppen a kapcsolókat magyarázom):

# sudo -l -U systemuser

Mert a # prompt eleve a root felhasználóé. Akkor ide minek a sudo? Mert az a felhasználói, azaz a $ promtnál használjuk! Nincs értelme ennek .. . A „systemuser” gondolom „nálad” az a felhasználó, aki sudozhat. Vagy ki?
Root prompt a kifejezés valódi értelmében az Ubuntu-alapú rendszeren, azaz a Linux Mint rendszeren nincs, mert nincs a root felhasználónak jelszava (nem azt jelenti, hogy üres..vagy semmi). A root felhasználó nincs használva, helyette van a sudo: "superuser do".

Távolról nehezen törnek fel egy Linuxos gépet, de fizikai hozzáféréssel is valamennyire érteni kell hozzá ..., másrészt lehet védekezni a fizikai hozzáférés ellen.

Szerinted, mi a probléma, mit szűrtél le?

kimarite képe

Popen, Pip, Python

Értékelés: 

0
Még nincs értékelve

Persze, lehetséges, hogy van valamilyen veszélyei a hívásnak,
http://man7.org/linux/man-pages/man3/popen.3.html
https://pubs.opengroup.org/onlinepubs/009695399/functions/popen.html
és mivel Launchpad bugként van jelentve, javítani is fogják.
Mint a többit is. A csákesz az oldal alján írja, hogy már javítva lett a legtöbb „insecure api call”.