Thomas: Gefährlicher Code

Hallo,

Ich will mir einen Filter basteln, der potentiell gefährlichen Code herausfiltert.

Um eine grosse Trefferquote zu erzielen, muss ich natürlich wissen, welche Möglichkeiten es gibt, gefährlichen Code harmlos zu verpacken.

Im I-Net habe ich auch schon gesucht, nur da stosse ich nur auf allgemeine Infos (Viren, Trojaner,...), kann aber nichts finden, WIE der Code, beispielsweise in Links, eingebaut werden kann.

Kann mir hier jemand weiterhelfen ?

Gruss, Thomas

  1. Hi,

    Ich will mir einen Filter basteln, der potentiell gefährlichen Code herausfiltert.

    potenziell gefährlicher Code ist alles bis auf ungefährlichen Code.

    Um eine grosse Trefferquote zu erzielen, muss ich natürlich wissen, welche Möglichkeiten es gibt, gefährlichen Code harmlos zu verpacken.

    Wie definierst Du eigentlich "gefährlich"?

    Im I-Net habe ich auch schon gesucht, nur da stosse ich nur auf allgemeine Infos (Viren, Trojaner,...),

    Die sind beispielsweise völlig harmlos, wenn man den Code in binärer Form auf dem Bildschirm darstellt.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hello,

      potenziell gefährlicher Code ist alles bis auf ungefährlichen Code.
      Wie definierst Du eigentlich "gefährlich"?
      Die sind beispielsweise völlig harmlos, wenn man den Code in binärer Form auf dem Bildschirm darstellt.

      Cheatah

      Seitdem sie bei Seagate eine Festplatte nach Dir benannt haben, gibst Du _nur noch_ blöde Antworten ;-)

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
        Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
        Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Hi,

        Seitdem sie bei Seagate eine Festplatte nach Dir benannt haben, gibst Du _nur noch_ blöde Antworten ;-)

        vom Scherzfaktor mal abgesehen: Was genau fandest Du an meiner Antwort blöd?

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hello,

          Seitdem sie bei Seagate eine Festplatte nach Dir benannt haben, gibst Du _nur noch_ blöde Antworten ;-)

          vom Scherzfaktor mal abgesehen: Was genau fandest Du an meiner Antwort blöd?

          Die Fragestellung zu komplementieren mag ja für die Betrachtung noch hilfreich sein. Die Frage zu stellen: Wie definierst Du eigentlich "gefährlich"? fand ich dann schon etwas penetrant, denn sie wiederholt ja nur die Aufgabenstellung. Das hat nichts mit dem Nutzen under Unnutzen der Wiederholung zu tun, sondern einfach damit, wie Du Deine Anregungen gibst.

          Ich habe dieses Empfinden bezüglich Deiner Postings inzwischen auch bei vielen Anderen beobachten können, speziell bei neunen Forumsmitpostern. Deine Frage- und Antworttechnik provoziert Widerspruch in der Weise, dass sie vom eigentlichen Problem ablenkt und somit kontraproduktiv ist.

          Ein (freundlicher) Satz mehr könnte den eigentlichen Wert Deiner Antworten erkennbar machen und den Nutzen erheblich steigern.

          Wahrscheinlich weißt Du einfach zu viel, um dich noch auf das Niveau eines "Dummen"[1] einstellen zu können.

          [1] meine damit nicht die Intelligenz, sondern nur die fehlende Menge an Erfahrung

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
            Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
            Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          1. Hi,

            Die Frage zu stellen: Wie definierst Du eigentlich "gefährlich"? fand ich dann schon etwas penetrant, denn sie wiederholt ja nur die Aufgabenstellung.

            nein, sie dient dazu, dass der Fragesteller sich erst mal selbst klar macht, was er eigentlich will. Dies ist unbedingt notwendig, denn ohne die Beantwortung dieser Frage (seitens des Fragestellers) ist dir Aufgabenstellung schlicht und ergreifend nicht lösbar. Je nach Kontext ist die Zeichenkette "abc" gefährlich, oder der Binärcode eines Virus' vollkommen harmlos.

            Ich habe dieses Empfinden bezüglich Deiner Postings inzwischen auch bei vielen Anderen beobachten können, speziell bei neunen Forumsmitpostern.

            Dein Empfinden ist teilweise richtig. Ich habe das Ziel, den Fragesteller zum Erlernen zu bringen, _auch sich selbst_ die richtigen Fragen zu stellen. Ob er dabei neu hier im Forum ist oder nicht, interessiert mich dabei kein Stück. Es ist höchstens so, dass die Stammposter (wie auch immer der Begriff definiert wird) diesen Punkt bereits erlernt haben.

            Deine Frage- und Antworttechnik provoziert Widerspruch in der Weise, dass sie vom eigentlichen Problem ablenkt und somit kontraproduktiv ist.

            Meine Frage- und Antworttechnik provoziert dazu, vom akuten Problem abzusehen und _hinter_ das eigentliche Problem zu sehen, so dass sie weitaus mehr zu helfen in der Lage ist, als es eine pure Beantwortung der Frage wäre.

            Ein (freundlicher) Satz mehr könnte den eigentlichen Wert Deiner Antworten erkennbar machen und den Nutzen erheblich steigern.

            Das möchte ich grundsätzlich nicht bezweifeln.

            Wahrscheinlich weißt Du einfach zu viel, um dich noch auf das Niveau eines "Dummen"[1] einstellen zu können.

            Nein, aber es mag sein, dass ich dem Menschen beim Versuch, sich selbst "auf mein Niveau zu heben"[1] mehr abverlange, als er im Moment zu leisten in der Lage ist. Das wird mich aber in Zukunft genau wie bisher nicht davon abbringen, es weiter zu versuchen; und wie Du aus vergangenen Threads sicher erkennen kannst, bin ich dabei bereit, jedwedes ernsthafte Bemühen mit beliebiger Anpassung an Detailreiche und/oder "Niveau"[1] hinreichend geduldig zu unterstützen.

            Fazit: Deine Meinung habe ich zur Kenntnis genommen. Sie konnte gegenüber ähnlichen (archivierten) Diskursen der Vergangenheit keine neuen Aspekte ins Spiel bringen und wird somit auch nicht zu einer Änderung meines Verhaltens, von dessen Effizienz und Nutzen ich seit Jahren überzeugt bin, führen.

            Cheatah

            [1] Ich finde den Begriff "Niveau" in diesem Kontext furchtbar, daher stelle ich ihn in Anführungszeichen. Die Bedeutung sollte analog zu Deiner Fußnote verständlich sein.

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. yo,

              die frage ist nur, ob zum lernen es nicht auch sinnvoll ist, mal falsche wege zu beschreiben und ob man diesen raum anderen lassen sollte, bevor man ihnen immer gleich die botschaft mitschickt, was richtig und was falsch ist, wenn man auf ihre fragen eingeht.

              Ilja

              1. Hi Ilya,

                die frage ist nur, ob zum lernen es nicht auch sinnvoll ist, mal falsche wege zu beschreiben und ob man diesen raum anderen lassen sollte, bevor man ihnen immer gleich die botschaft mitschickt, was richtig und was falsch ist, wenn man auf ihre fragen eingeht.

                Diesen Raum halte ich für unersetzlich, aber Chetah wird mir zustimmen, wenn es dabei um sicherheits*kritische* Belange geht, ist "Try & Error" nicht angebracht, sondern einzig und allein das überlegte _Vor_überlegen.

                Grüße aus Barsinghausen,
                Fabian

                1. Hello,

                  Diesen Raum halte ich für unersetzlich, aber Chetah wird mir zustimmen, wenn es dabei um sicherheits*kritische* Belange geht, ist "Try & Error" nicht angebracht, sondern einzig und allein das überlegte _Vor_überlegen.

                  Trial & Error ist sehr wohl wichtig, um sich _gerade_ sicherheitsrelevante Dinge klarzumachen. Manchmal liegt der Versuch dann aber auch darin, genau die Lücke zu finden, um sie dann gezielt bekämpfen zu können. Aber dazu sind die meistens Gelegenheitsprogrammierer und leider auch viele berufliche viel zu faul. Man nimmt gerne das erste Ergebnis, das "funzt"[1].

                  Allerdings muss man diese Versuche auf abgesicherten Systemen (Inselbetrieb) machen und nicht im öffentlich zugänglichen Bereich. Der Aufwand nervt dann schon mal. Ich denke nur an die Vorbereitungsarbeiten zu meinen Versuchen zum Safe-Mode. Mal eben dem Testserver beizubringen, dass er nun mehrere virtual Hosts hat, damit der eine im safe_mode laufen kann und der andere nicht... Ok, man lernt immer was dazu.

                  An den eigentlichen Versuchen sitze ich immer noch und musste dabei schon einige böse Lücken in der Dokumentation (englisch + deutsch) von PHP feststellen. Die Dokuschreiber wissen viele Dinge manchmal, glaube ich, auch selber nicht so ganz genau oder es ist ihnen im Moment nicht bewußt, was sie da weglassen.

                  Und wenn man dann selber Dinge dokumentiert steckt immer die Angst im Nacken, selber Fehler zu machen und andere dadurch (unwillentlich) zu gefährden.

                  [1] hier mal ganz bewußt das Wort benutzt, das ich momentan am meisten
                      bekämpe, weil mir schlecht davon wird

                  Liebe Grüße aus http://www.braunschweig.de

                  Tom

                  --
                  [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
                    Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
                    Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  1. Hallo,

                    was haltet Ihr von folgendem Ansatz ?

                    $stripAttrib = "onclick|...|onkeyup";

                    function boesartige_tags_entfernen($source)
                      {
                        global $allowedTags;
                        $source = strip_tags($source, $allowedTags);
                        return preg_replace('/<(.*?)>/ie', "'<'.boesartige_attribute_entfernen('\1').'>'", $source);
                      }

                    function boesartige_attribute_entfernen($tagSource)
                      {
                        global $stripAttrib;
                        return stripslashes(preg_replace("/$stripAttrib/i", 'forbidden', $tagSource));
                      }

                    Thomas

                    1. Hi,

                      was haltet Ihr von folgendem Ansatz ?

                      Nichts. Denn Du gehst falschrum vor.

                      Du definierst, was verboten ist. Stell Dir vor, Du vergißt dabei was, dann ist die Fäkalie am vaporisieren.

                      Du solltest definieren, was erlaubt ist und alles andere entfernen. Vergißt Du dabei etwas, fehlt ein Feature, aber es kann nichts schlimmes passieren.

                      cu,
                      Andreas

                      --
                      MudGuard? Siehe http://www.Mud-Guard.de/
                      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          2. Hi,

            vom Scherzfaktor mal abgesehen: Was genau fandest Du an meiner Antwort blöd?

            Die Fragestellung zu komplementieren mag ja für die Betrachtung noch hilfreich sein. Die Frage zu stellen: Wie definierst Du eigentlich "gefährlich"? fand ich dann schon etwas penetrant, denn sie wiederholt ja nur die Aufgabenstellung.

            "Bitte um Präzisisierung" wäre da passender.
            Und die - die Präzisierung -  ist auch bitter nötig, denn "gefährlich" ist _immer_ Definitionssache, es führt so nackt stets zur Nachfrage: Cui bono?
            Denn da die Menge "Harmlosen Inputs" deutlich größer als die des "gefährlichen Inputs" ist, ist es hier nötig zu fragen, was gebraucht wird und vor allem _ob_ es überhaupt gebraucht wird.
            Also frage Dich: wem nützt der Input: dem "Bösen" oder dem "Guten"?
            Da Gut und Böse reine Definitionsfrage sind, ist die Nachfrage nach einer Präzisierung von "gefährlich" durchaus berechtigt.

            Ich habe dieses Empfinden bezüglich Deiner Postings inzwischen auch bei vielen Anderen beobachten können, speziell bei neunen Forumsmitpostern.

            Das war schon (nachprüfbar) immer so.
            Du tust also genau das, was Du anderen vorwirfst.
            Und indem ich das sage tue ich das ebenfalls.
            Aber auch das war schon immer so ;-)

            so short

            Christoph Zurnieden

          3. hi,

            Die Fragestellung zu komplementieren mag ja für die Betrachtung noch hilfreich sein.

            es ist m.E. nicht "noch" hilfreich, sondern die beste antwort auf diese frage.

            sie weißt gleich auf den elementaren unterschied der konzepte black list <-> white list hin, ohne einem anfänger diese fachbegriffe an den kopf zu werfen.

            und nur letztere _kann_ sicher ausschliessen, dass gefährlicher code angenommen wird.

            gruss,
            wahsaga

    2. Moin!

      Die sind beispielsweise völlig harmlos, wenn man den Code in binärer Form auf dem Bildschirm darstellt.

      Du kennst den Begriff ANSI-Virus oder ANSI-Bombe? Der allein relativiert Deine Aussage, aber nur unter DOS.

      Prinzipiell und jetzt komme ich zur Antwort auf die Urfrage ist jeder Code gefährlich, der es dem Benutzer der Webseite erlaubt:

      • Beliebige Dateien statt Images auf den Server hochzuladen.
      • HTML + Javascript + VBScript + PHP ... auf den Server hochzuladen
      • statt der erwarteten Daten sonstwelche Eingaben zu machen, die ungeprüft übernommen werden
      • Irgenwelche erwarteten GET- Parameter, Post-Daten oder Cookie-Inhalte nach Belieben zu ändern, beliebt sind z.B.versteckte Formularfelder.
      • Irgendwelche Daten auf Filesystem des Servers oder in einer Datenbank zu schreiben, indem an sich harmlose Eingaben so getätigt werden, dass dann vom Programmierer nicht beabsichtigte Aktionen ausgeführt werden.
      • Eine lange Liste weiterer denkbarer Aktionen.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      1. Hello,

        • Irgendwelche Daten auf Filesystem des Servers oder in einer Datenbank zu schreiben, indem an sich harmlose Eingaben so getätigt werden, dass dann vom Programmierer nicht beabsichtigte Aktionen ausgeführt werden.

        Da möchte ich als ein Beispiel, das mir im Jahresrumpf immer wieder aufgefallen ist, die Injizierbarkeit der mail()-Funktion nennen, gegen die scheinbar auch Profis bei ihren Formularmailern häufig nichts tun.

        Im Prinzipp macht die Funktion ja sogar noch genau das, was sie soll. Der Missbrauch liegt eben darin, dass der Formularautor selten beabsichtigt hat, dass sei es so oft tut (SPAM). Und auch Ziel und Inhalt sind so sicher nicht vorgesehen gewesen.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
          Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
          Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      2. Hallo,

        Die sind beispielsweise völlig harmlos, wenn man den Code in binärer Form auf dem Bildschirm darstellt.

        Du kennst den Begriff ANSI-Virus oder ANSI-Bombe? Der allein relativiert Deine Aussage, aber nur unter DOS.

        Du kennst den Begriff binär?

        Mit freudlichen Grüßen, NaeZnaL

        1. Moin!

          Du kennst den Begriff binär?

          Was macht Dich so sicher, dass zwischen den vielen Nullen und Ls nicht doch die eine oder andere kleine Gemeinheit versteckt ist? Zumindest theorethisch betrachtet könnte die Software, die das binär codieren soll, auch den einen oder anderen Schwachpunkt haben ...

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          --
          Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
          1. Hallo,

            einfaches Einlesen und Ausgeben eines Bit läst nicht viel Raum für Schwachpunkte. Bei ANSI-Code ist es aufgrund der Steuerzeichen noch verständlich, aber bei einer simplen binären Anzeige kann ich mir beim besten Willen nicht vorstellen, wie so ein Schwachpunkt aussehen soll.

            Mit freudlichen Grüßen, NaeZnaL

            1. Moin!

              aber bei einer simplen binären Anzeige kann ich mir beim besten Willen nicht vorstellen, wie so ein Schwachpunkt aussehen soll.

              Es gibt mehr als ein simples Programm mit Fehlern...

              MFFG (Mit freundlich- friedfertigem Grinsen)

              fastix®

              --
              Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
          2. Hello,

            Du kennst den Begriff binär?
            Was macht Dich so sicher, dass zwischen den vielen Nullen und Ls nicht doch die eine oder andere kleine Gemeinheit versteckt ist? Zumindest theorethisch betrachtet könnte die Software, die das binär codieren soll, auch den einen oder anderen Schwachpunkt haben ...

            Der Coder kann soviele Schwachstellen haben, wie e will, solange der Decode eigensicher programmiert ist. Was er nicht kennt, geht ab in den Müll und was er kennt, wird bei aktiven Inhalten erst gegengeprüft und sonst geht der ganze Job in den Müll.

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
              Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
              Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  2. Hi,

    die einzige Möglichkeit: SafeMode an... Denn PHP hat so viele Möglichkeiten, Sachen aufzurufen, das kannst du gar nicht filtern...

    Soweit ich weiß, sollte diese Möglichkeit auch gehen (kanns zur Zeit leider nicht testen):

    $c = "li" . 'nk';
    $a = "b";
    $b = "un";
    $$a("datei.htm");

    E7

    1. Hello,

      die einzige Möglichkeit: SafeMode an... Denn PHP hat so viele Möglichkeiten, Sachen aufzurufen, das kannst du gar nicht filtern...

      Soweit ich weiß, sollte diese Möglichkeit auch gehen (kanns zur Zeit leider nicht testen):

      $c = "li" . 'nk';
      $a = "b";
      $b = "un";
      $$a("datei.htm");

      ? Da fehlt doch was? durch $$a() wird doch auf $c nicht zurückgegriffen. Und was sollte uns das Beispiel eigentlich zeigen? Umfeld?

      Mit dem Safe-Mode habe ich mich in den letzten Tagen nochmal richtig intensiv beschäftigt und kann dazu nur bemerken, dass der das Problem der Injizierbarkeit überhaupt nicht löst. Wenn Du mittels Formular ein Script auf den Server hochlädtst, dann gehört das (unter mod_php) dem Webserver und der darf dann mit dem Script auf alle Ressourcen zugreifen, die ihm ebenfalls gehören oder die zumindest in Verzeichnissen (PHP 4.3.x) geparkt sind, die ihm gehören und auf die er entsprechende Leserechte/Schreibrechte hat. Siehe http://selfhtml.bitworks.de

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
        Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
        Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  3. Hallo Thomas,

    Ich will mir einen Filter basteln, der potentiell gefährlichen Code herausfiltert.

    an dem Problem "gefährlichen" Code zu erkennen basteln Virenscanner-Hersteller schon seit
    Jahrzehnten. Es ist nicht lösbar. Geh das Problem lieber anders herum an, wie Cheatah es
    schon vorgeschlagen hat.

    Grüße,
     CK

    --
    Wenn der Schüler bereit ist, erscheint der Meister.
    http://wwwtech.de/