1. Foren
  2. Kommentare
  3. Security-Forum
  4. Alle Kommentare zum Artikel
  5. › Pwnkit: Triviale Linux-Lücke…

argv[0] = NULL

Neue Foren im Freiraum! Raumfahrt und freie Software haben jetzt einen Platz, die Games tummeln sich jetzt alle in einem Forum.
  1. Thema

Neues Thema


  1. argv[0] = NULL

    Autor: M.P. 26.01.22 - 16:09

    ist die eigentliche Lücke ...

    Ich bin mir ziemlich sicher, dass es noch mehr Linux-Programme gibt, die darauf allergisch reagieren könnten ... Absturz wäre die mildeste Variante ...

  2. Re: argv[0] = NULL

    Autor: EWCH 26.01.22 - 20:01

    > Ich bin mir ziemlich sicher, dass es noch mehr Linux-Programme gibt, die
    > darauf allergisch reagieren könnten ... Absturz wäre die mildeste Variante

    so ganz ist mir das nicht klar, muss mir wohl man den Source angucken.
    Aber normalerweise geht man mit einer Schleife entweder durch argv[] durch bis
    der erste Nullpointer erreicht ist oder laeuft bis x<argc. Beide Tests sollten eigentlich sofort
    abbrechen.

    Nachtrag:

    pkexec macht das in der Tat so wie vermutet :
    for (n = 1; n < (guint) argc; n++)
    ...

    aber verwendet dann die Variable n obwohl die Schleife sofort abgebrochen wird :
    path = g_strdup (argv[n]);



    1 mal bearbeitet, zuletzt am 26.01.22 20:19 durch EWCH.

  3. Re: argv[0] = NULL

    Autor: Sybok 26.01.22 - 22:24

    EWCH schrieb:
    --------------------------------------------------------------------------------
    > > Ich bin mir ziemlich sicher, dass es noch mehr Linux-Programme gibt,
    > die
    > > darauf allergisch reagieren könnten ... Absturz wäre die mildeste
    > Variante
    >
    > so ganz ist mir das nicht klar, muss mir wohl man den Source angucken.
    > Aber normalerweise geht man mit einer Schleife entweder durch argv[] durch
    > bis
    > der erste Nullpointer erreicht ist oder laeuft bis x<argc. Beide Tests
    > sollten eigentlich sofort
    > abbrechen.
    >
    > Nachtrag:
    >
    > pkexec macht das in der Tat so wie vermutet :
    > for (n = 1; n < (guint) argc; n++)
    > ...
    >
    > aber verwendet dann die Variable n obwohl die Schleife sofort abgebrochen
    > wird :
    > path = g_strdup (argv);

    Naja: Wenn man ein Array durchläuft sollte man nicht bei 1 anfangen (genau genommen nicht mal bei 0, bevor man prüft, ob das Array leer bzw. NULL ist).

  4. Re: argv[0] = NULL

    Autor: EWCH 27.01.22 - 09:10

    > Naja: Wenn man ein Array durchläuft sollte man nicht bei 1 anfangen (genau
    > genommen nicht mal bei 0, bevor man prüft, ob das Array leer bzw. NULL
    > ist).

    wieso ? argv[0] ist das eigene binary, die Argumente beginnen bei argv[1].
    argc entspricht argv.size(), da kann eigentlich nichts schiefgehen.

  5. Re: argv[0] = NULL

    Autor: Sybok 27.01.22 - 22:04

    EWCH schrieb:
    --------------------------------------------------------------------------------
    > > Naja: Wenn man ein Array durchläuft sollte man nicht bei 1 anfangen
    > (genau
    > > genommen nicht mal bei 0, bevor man prüft, ob das Array leer bzw. NULL
    > > ist).
    >
    > wieso ? argv[0] ist das eigene binary, die Argumente beginnen bei argv[1].
    > argc entspricht argv.size(), da kann eigentlich nichts schiefgehen.

    Ganz einfach: Hier wurde ja offenbar *nicht* geprüft, ob denn überhaupt zwei Elemente enthalten sind (jedenfalls Deinem Codeschnipsel zufolge nicht - ich habe das jetzt nicht geprüft). Wenn man ein "benutzerdefiniertes" Array mit einer for-Schleife durchläuft, muss die erste Prüfung sein:
    1.) Ist das Array not null?
    2.) Wenn ja: Hat das Array mindestens x Elemente (im Beispiel: 2)?

    Kann man natürlich ggf. auch per Exception-Handling machen, muss man dann halt nur sauber durchführen.

    Du weißt letztlich nicht, was in argv steht, denn es wird vom System übergeben - und da kann schon ein Fehler auftreten (sieht man ja hier).

  1. Thema

Neues Thema


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. App Entwickler (w/m/d)
    Digital Building Solutions GmbH, Sendenhorst (Münster)
  2. Java Software Engineer (m/w/d)
    über grinnberg GmbH, Raum Nürnberg
  3. Informatiker / Fachinformatiker (m/w/d) Netzwerktechnik und -sicherheit
    ED Netze GmbH, Rheinfelden (Baden)
  4. Fachingenieur IT (w/m/d)
    Salzgitter Flachstahl GmbH, Salzgitter

Detailsuche


Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Hardware-Angebote
  1. (u. a. Ryzen 5 5600X 358,03€)
  2. 499,99€


Haben wir etwas übersehen?

E-Mail an news@golem.de