Dlaczego można załączać pliki źródłowe C++, a innych języków nie?

2

Jak w temacie. Dostępne rozszerzenia załączników na forum to:
screenshot-20221015132925.png
Są to pliki tekstowe, bitmapowe, archiwa. Jest też cpp lecz nie ma np. c, asm, java, pl i innych. Z jakiego powodu?

1

Jest też druga kwestia — czy pliki załączników są w ogóle walidowane pod względem zgodności zawartości wobec rozszerzenia pliku? Czy po prostu system sprawdza samą nazwę pliku, bez zaglądania do jego wnętrza?

Jeśli to drugie, to nic nie stoi na przeszkodzie, aby dodać plik z celowo zmienionym rozszerzeniem (np. plik wykonywalny z rozszerzeniem .png), jak również plik dowolnego typu, którego nazwa pozbawiona jest rozszerzenia. A skoro tak, to walidacja rozszerzenia nie ma żadnego sensu.

0

No ma sens, jako że ma ona zapobiec przez umieszczaniem wirusów. Te zaś kierowane są do tzw. osób nietechnicznych, które nawet nie umieją zmienić rozszerzenia. Co do walidacji wnętrza pliku to mało co by ona dała. Plik wykonywalny na upartego da się zakodować Base64 i przesłać jako tekst, albo dopisać nagłówek nieskompresowanego PNG i przesłać jako tablicę 24-bitowych pikseli.

0

Ale jak nie można jak można?
client.pyw

1
Manna5 napisał(a):

No ma sens, jako że ma ona zapobiec przez umieszczaniem wirusów.

Zauważ, że walidacja rozszerzenia pliku załącznika tego problemu nie rozwiązauje. Po pierwsze, da się wgrać plik dowolnego typu, zmieniając mu rozszerzenie lub je usuwając. Po drugie (co cholernie istotne), da się wgrać załącznik w formacie zip lub 7z, który jest poprawny dla Coyote i jednocześnie może zawierać szkodliwy plik wykonywalny lub skrypt powłoki systemu, do którego uruchomienia wystarczy dwuklik (a więc każdy jest w stanie go uruchomić, w tym „osoby nietechniczne", na których się powołujesz).

Czasy Windows XP i kwitnącego biznesu trojanów, wirusów i innych robaków dawno temu minęły. Dziś przeglądarka sprawdza zawartość pobieranych plików pod kątem malware (i nie tylko), a następnie robi to dodatkowo oprogramowanie antywirusowe, użytkownika lub to wbudowane w system (np. w Windows 10/11). Dodatkowo, system posiada UAC oraz inne mechanizmy, które ostrzegają użytkownika przed potencjalnie szkodliwym wpływem uruchamianego programu, jeśli istnieją ku temu konkretne powody (np. brak podpisu cyfrowego, niska popularność pobierania danego pliku).


Zaznaczyć też trzeba, że zaszkodzić ludziom można bardzo łatwo. Wystarczy zrobić prosty programik, wrzucić do posta w celu sprawdzenia przez użytkowników oraz uzyskania feedbacku. Napisać, że program wymaga uprawnień admina aby uzyskać dostęp do testowanych mechanizmów (np. tak jak w tym wątku, aby uzyskać informacje na temat modułu TPM, a to nic szkodliwego), tyle że do demówki wrzucić szkodliwy kod (np. usuwający pliki z dysku), zamiast tego, który użytkownik prosi o przetestowanie.

I całą misterną walidację rozszerzenia przez Coyote można sobie w buty wsadzić — w niczym nie pomaga, a tylko przeszkadza. Tym bardziej, że obecna white-lista — jak sam zauwazyłeś — nie obejmuje mnóstwa formatów plików dotyczących kodów źródłowych. Gdybym chciał wrzucić do załączników posta jakikolwiek moduł pascalowy (z kodem źródłowym, więc zwykły plik tesktowy), to też bym nie mógł, bo rozszerzenia .lpr, .pas, .pp i .inc nie są wspierane. Co zostaje? Plik archiwum, a więc jednocześnie furtka do szkodzenia ludziom. :/

White lista jest dobrym rozwiązaniem, ale pod warunkiem, że nie przeszkadza użytkownikom i nie utrudnia im korzystania z forum. Obecnie przeszkadza, bo zawiera zdecydowanie za mało wspieranych rozszerzeń plików.

1

Pewnie to jest zaszłość historyczna. Ktoś kiedyś poprosił o dodanie takiego rozszerzenia do listy. @furious programming walidacje zapewnia framework na podstawie typów MIME.

0

No dobrze, czyli kwestia zmiany rozszerzenia w celu ukrycia formatu pliku nie wchodzi w grę. Nadal pozostaje jednak sprawa bardzo małej liczby dozwolonych rozszerzeń, szczególnie jeśli chodzi o pliki z kodem źródłowym.

W ogóle ta lista rozszerzeń nie jest zgodna z tym, co ten framework przepuszcza, a czego nie. Nie ma na tej liscie np. rorszerzenia .pp (moduł pascalowy), ale taki plik mogę dodać do załączników (to samo z .inc). Inna sprawa, że rozszerzenie .lps (sesja Lazarusa) nie jest dozwolone i nie mogę go uploadować, pomimo tego, że jest to zwykły XML (coś ta walidacja contentu słabo działa).

Tak czy inaczej, jest z tym małe zamieszanie.

0

jest to zwykły XML (coś ta walidacja contentu słabo działa)

Bo może jest walidacja zawartości AND walidacja rozszerzenia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1