Hlavní navigace

Názor k článku Chyby v programovacích jazycích ohrožují bezpečnost aplikací od krauser - > nejvěrohodnější příklad je až napadená aplikace :)....

  • Článek je starý, nové názory již nelze přidávat.
  • 12. 12. 2017 19:52

    krauser

    > nejvěrohodnější příklad je až napadená aplikace :). Spoléhat na to, že útočník není chytřejší než já není opravdu dobrý nápad.

    To je dost obecny prohlaseni - zase priklad s C - tam s spatnym vstupem spadne 99% funkci ? budeme rikat, ze C je derave? Urcite ne.
    Spolehat na IQ utocnika urcite neni na miste - dodrzovat zasady defenzivniho programovani, validovat vstupy, mit pod kontrolou konfiguraci serveru je ovsem NORMALNI. Bugu, jako jsou tyto, jsou mraky, kazdy framework / knihovna / runtime je ma a proto je nutne aplikace programovat urcitym stylem a rozlisovat, co funkce dela, kdyz ji predavam vstup.
    Visco, pokud by napr. nasel, ze v == za urcitych pripadu se spatne porovnava stringy a muzu tam dopasovat nejaky bordel, ktery projde validaci a pak se preda do nativni knihovny - nereknu popel, to je zavazna chyba. Ale ne to, ze require vypise obsah souboru (coz se da zneuzit mnohem lip nez takto a hlavne, vsichni to vi).

    > Ano, žádná z těch chyb by se nedala v dobře nastaveném systému a dobře napsané aplikaci zneužít, ale v praxi ty systémy jsou v takovém stavu, že i tahle drobnost stačí k velkým problémům. Většina systémů je provozována s výchozí konfigurací z distribucí/balíčků.
    A zrovna ta vychozi konfigurace na skoro kazde velke server distribuci treba nepovoli ten core :) A hlavne ty pady jsou docela obskurni, opravdu si nedovedu predstavit regulerni use case, ze by nekdo chtel delat neco takoveho (nerikam, ze se nemuze stat - ale takova aplikace tech problemu bude mit mraky vice a nepomuze tam ani svecena voda).

    > Souhlas, že je kolem toho zbytečné halo a stejně tak souhlasím, že většina těch chyb jsou drobnosti i za mě. Donutit aplikaci k pádu ale považuji za kritický problém.
    Ano, to souhlasim - ale porad si stojim za tim, ze za to muze programator. Napr. v C pokud predam spatne parametry strlen, tak to spadne. Nebo do dlsym. Nebo do skoro cehokoliv. Muze za to ta funkce? Urcite ne. Muze za to programator, ktery tam ten bordel poslal? Zcela jiste.

    > Ano, dát uživatelský vstup do require je extrémní blbost, ale ve složitější aplikaci se může útočníkovi podařit do require propašovat svůj vstup díky naprosto jiné elementární chybě a máš problém. Za mě by require neměl načítat obsah souboru pokud to není validní js, dříve to node.js nedělal (očekávám, že to je chyba z node.js).

    A PHP by v require/include melo poznat, ze nejde o PHP (a co kdyz je to jen staticka sablona?). A vubec, jak se pozna takovy validni JS, co kdyz to jen vypada jako JS (vetsina JS chyb je runtimovych).

    Takze kde by ta kontrola mela koncit ? Ne, tady se clovek nedobere smysluplneho reseni.
    Je to podobne, jako se v PHP snazili resit SQL injection pomoci magic quotes - lepeni problemu ojebem.

    Takze za me - secteno a podtrzeno - pady patri opravit, chyby typu require muze v chybe zobrazit vstup jdou rozhodne za programatorem aplikace.