Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

Flawfinder - Online w chmurze

Uruchom wykrywacz błędów w darmowym dostawcy hostingu OnWorks przez Ubuntu Online, Fedora Online, emulator online Windows lub emulator online MAC OS

Jest to narzędzie do wyszukiwania błędów poleceń, które można uruchomić u bezpłatnego dostawcy usług hostingowych OnWorks przy użyciu jednej z wielu naszych bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online MAC OS

PROGRAM:

IMIĘ


wykrywacz błędów - leksykalnie znajdź potencjalne luki w zabezpieczeniach („trafienia”) w kodzie źródłowym

STRESZCZENIE


wykrywacz wad [--help|-h] [--wersja] [--listrule]
[--zezwól na link] [--followdotdir] [--brak łącza]
[--łatka=filename|-P filename]
[--wejścia|-I] [ --minpoziom=X | -m X ] [--fałszywie dodatni|-F]
[--nigdy nie ignoruj|-n]
[--regex=WZÓR | -e WZÓR]
[--kontekst|-c] [--kolumny|-C] [--tylko dane|-D] [--html|-H] [--natychmiastowy|-i]
[--pojedyncza linia|-S] [--pomiń czas] [--cichy|-Q]
[--loadhitlist=F] [--zapiszlista trafień=F] [--diffhitlist=F]
[--] [ źródło kod filet or źródło korzeń katalog ]+

OPIS


Flawfinder przeszukuje kod źródłowy C/C++ w poszukiwaniu potencjalnych luk w zabezpieczeniach. Do
uruchom wykrywacz błędów, po prostu daj mu listę katalogów lub plików. Dla każdego katalogu
podane, wszystkie pliki, które mają rozszerzenia nazw plików C/C++ w tym katalogu (i jego
podkatalogi, rekurencyjnie) zostaną zbadane. Dlatego w przypadku większości projektów po prostu dawaj
wykrywacz błędów nazwa najwyższego katalogu kodu źródłowego (użyj ``.'' dla bieżącego
katalog), a wykrywacz wad zbada cały kod źródłowy projektu C/C++. Jeśli ty
tylko chcieć mieć zmiany przejrzane, zapisz zunifikowaną różnicę tych zmian (utworzoną przez GNU
„diff -u” lub „svn diff” lub „git diff”) w pliku łatki i użyj opcji --patch (-P).

Flawfinder utworzy listę „trafień” (potencjalnych luk w zabezpieczeniach), posortowaną według ryzyka; the
najbardziej ryzykowne trafienia są wyświetlane jako pierwsze. Poziom ryzyka jest pokazany w nawiasach kwadratowych i jest różny
od 0 – bardzo małe ryzyko do 5 – duże ryzyko. Ten poziom ryzyka zależy nie tylko od
funkcji, ale od wartości parametrów funkcji. Na przykład stała
ciągi są często mniej ryzykowne niż w pełni zmienne ciągi w wielu kontekstach iw tych
kontekstach trafienie będzie miało niższy poziom ryzyka. Flawfinder wie o gettext (wspólny
biblioteka dla programów umiędzynarodowionych) i będzie traktować stałe łańcuchy, przez które przechodzi
gettext tak, jakby były ciągami stałymi; zmniejsza to liczbę fałszywych trafień
programy umiędzynarodowione. Flawfinder zrobi to samo z _T() i
_TEXT(), wspólne makra firmy Microsoft do obsługi programów międzynarodowych. Flakon
poprawnie ignoruje większość tekstu wewnątrz komentarzy i ciągów znaków. Zwykle wykrywacz błędów pokazuje wszystko
trafienia z poziomem ryzyka co najmniej 1, ale możesz użyć opcji --minlevel, aby wyświetlić tylko
trafienia o wyższym poziomie ryzyka, jeśli chcesz. Opisy trafień zawierają również odpowiedni Common
Weakness Enumeration (CWE) identyfikator(y) w nawiasach, jak omówiono poniżej. Flakon
jest oficjalnie kompatybilny z CWE.

Nie każde trafienie jest w rzeczywistości luką w zabezpieczeniach i nie każda luka w zabezpieczeniach
koniecznie się znajduje. Niemniej jednak, wykrywacz wad może być pomocny w znajdowaniu i usuwaniu
luki w zabezpieczeniach. Powszechnym sposobem korzystania z narzędzia do wykrywania wad jest zastosowanie go najpierw do
zestaw kodu źródłowego i zbadaj elementy o największym ryzyku. Następnie użyj --inputs do sprawdzenia
lokalizacje danych wejściowych i sprawdź, czy są to tylko zgodne z prawem i bezpieczne wartości wejściowe
akceptowane przez niezaufanych użytkowników.

Po przeprowadzeniu audytu programu możesz oznaczyć linie kodu źródłowego, które są w rzeczywistości w porządku, ale
wywoływać fałszywe ostrzeżenia, aby wykrywacz błędów przestał na nie narzekać. Aby zaznaczyć
wiersz, aby te ostrzeżenia zostały pominięte, umieść specjalnie sformatowany komentarz
w tej samej linii (po kodzie źródłowym) lub samodzielnie w poprzedniej linii. Komentarz
musi mieć jeden z dwóch następujących formatów:

· // Flawfinder: ignoruj

· /* Flawfinder: ignoruj ​​*/

Ze względu na kompatybilność możesz zamienić „Flawfinder:” na „ITS4:” lub „RATS:” w tych
specjalnie sformatowane komentarze. Ponieważ możliwe jest, że takie linie są błędne, możesz użyć
opcję --neverignore, która powoduje, że wykrywacz błędów nigdy nie ignoruje żadnej linii bez względu na wszystko
mówią dyrektywy komentarzy (bardziej mylące, --neverignore ignoruje ignorowane).

Flawfinder używa wewnętrznej bazy danych o nazwie ``zestaw reguł''; zestaw reguł identyfikuje
funkcje, które są częstymi przyczynami luk w zabezpieczeniach. Standardowy zestaw reguł zawiera plik large
szereg różnych potencjalnych problemów, w tym zarówno kwestie ogólne, które mogą mieć wpływ na każdy
Program C/C++, a także szereg specyficznych funkcji uniksopodobnych i Windows, które są
szczególnie problematyczne. Opcja --listrules wyświetla listę bieżących reguł i
ich domyślne poziomy ryzyka. Jak wspomniano powyżej, każda potencjalna luka w zabezpieczeniach wykryta w danym pliku
plik z kodem źródłowym (pasujący do wpisu w zestawie reguł) jest nazywany „trafieniem”, a zbiór
trafienia znalezione podczas dowolnego uruchomienia programu nazywane są „listą przebojów”. Listy przebojów
można zapisać (używając --savehitlist), ponownie załadować do ponownego wyświetlenia (używając --loadhitlist) i
możesz pokazać tylko trafienia, które różnią się od innego przebiegu (używając --diffhitlist).

Flawfinder to proste narzędzie, które ma kilka fundamentalnych zalet i wad. Flawfinder działa
wykonując prostą leksykalną tokenizację (pomijanie komentarzy i poprawne tokenizowanie ciągów znaków),
szukanie dopasowań tokenów do bazy danych (szczególnie w celu znalezienia wywołań funkcji).
Flawfinder jest więc podobny do RATS i ITS4, które również używają prostej tokenizacji leksykalnej.
Następnie Flawfinder analizuje tekst parametrów funkcji, aby oszacować ryzyko. w odróżnieniu
narzędzia takie jak splint, flagi ostrzegawcze gcc i clang, robi to wykrywacz błędów nie używać lub mieć
dostęp do informacji o przepływie sterowania, przepływie danych lub typach danych podczas wyszukiwania
potencjalnych podatności lub szacowania poziomu ryzyka. W ten sposób wykrywacz błędów będzie
z konieczności generują wiele fałszywych alarmów dotyczących luk w zabezpieczeniach i wielu nie zgłaszają
luki w zabezpieczeniach. Z drugiej strony, wykrywacz błędów może znaleźć luki w programach, które
nie można zbudować ani połączyć. Często może działać z programami, które nawet nie mogą być
skompilowane (przynajmniej przez narzędzia recenzenta). Flawfinder również nie jest tak zdezorientowany
definicje makr i inne dziwactwa, z którymi mają problem bardziej wyrafinowane narzędzia.
Flawfinder może być również przydatny jako proste wprowadzenie do narzędzi analizy statycznej w
ogólnie, ponieważ jest łatwy do rozpoczęcia użytkowania i łatwy do zrozumienia.

Sprawdzona zostanie dowolna nazwa pliku podana w wierszu poleceń (nawet jeśli nie ma ona zwykłego
rozszerzenie nazwy pliku C/C++); w ten sposób możesz zmusić wykrywacz błędów do zbadania określonych plików
pragnienie. Podczas rekurencyjnego przeszukiwania katalogów, wykrywacz błędów tylko otwiera i sprawdza
zwykłe pliki, które mają rozszerzenia nazw plików C/C++. Flawfinder zakłada, że ​​pliki są
pliki C/C++, jeśli mają rozszerzenia „.c”, „.h”, „.ec”, „.ecp”, „.pgc”, „.C”, „.cpp”,
„.CPP”, „.cxx”, „.cc”, „.CC”, „.pcc”, „.hpp” lub „.H”. Nazwa pliku ``-'' oznacza
standardowe wejście. Aby zapobiec problemom z bezpieczeństwem, pliki specjalne (takie jak pliki specjalne urządzenia
i nazwane potoki) są zawsze pomijane, a domyślnie pomijane są dowiązania symboliczne (tzw
Opcja --allowlink podąża za dowiązaniami symbolicznymi).

Po liście trafień znajduje się krótkie podsumowanie wyników (użyj -D, aby to usunąć
Informacja). Pokaże liczbę trafień, przeanalizowane linie (zgodnie z raportem wc -l) i
analizowane fizyczne linie źródłowe kodu (SLOC). Fizyczny SLOC to niepusty, nie-
wiersz komentarza. Następnie pokaże liczbę trafień na każdym poziomie; zauważ, że będzie
nigdy nie być trafionym na poziomie niższym niż minimalny (domyślnie 1). Zatem „[0] 0 [1] 9”
oznacza, że ​​na poziomie 0 zgłoszono 0 trafień, a na poziomie 1 9 trafień
zgłoszone. Następnie pokaże liczbę trafień na danym poziomie lub wyższym (więc poziom 3+
ma sumę liczby trafień na poziomie 3, 4 i 5). Zatem wpis „[0+] 37”
pokazuje, że na poziomie 0 lub wyższym było 37 trafień (wpis 0+ zawsze będzie taki sam
jak liczba „trafień” powyżej). Następnie pokazano trafienia na KSLOC; to jest każdy z „poziomów lub
wyższe” wartości pomnożone przez 1000 i podzielone przez fizyczny SLOC. Gdyby dowiązania symboliczne były
pominięte, podawana jest ich liczba. Jeśli trafienia zostały stłumione (za pomocą opcji „ignoruj”
dyrektywa w komentarzach do kodu źródłowego, jak opisano powyżej), zgłaszana jest pominięta liczba.
Wyświetlany jest minimalny poziom ryzyka, który ma zostać uwzględniony w raporcie; domyślnie jest to 1
(użyj --minlevel, aby to zmienić). Podsumowanie kończy się ważnymi przypomnieniami: Nie każde trafienie
jest z konieczności luką w zabezpieczeniach i mogą istnieć inne luki w zabezpieczeniach
nie zgłaszane przez narzędzie.

Flawfinder jest udostępniany na licencji GNU GPL w wersji 2 lub nowszej (GPLv2+).

Flawfinder działa podobnie do innego programu, ITS4, który nie jest w pełni open source
oprogramowanie (zgodnie z definicją w Open Source Definition) ani wolne oprogramowanie (zgodnie z definicją zawartą w
Fundacja Wolnego Oprogramowania). Autor Flawfindera nigdy nie widział kodu źródłowego ITS4.

KRÓTKI SEMINARIUM


Oto krótki przykład, w jaki sposób można użyć wykrywacza wad. Wyobraź sobie, że masz C/C++
kod źródłowy programu o nazwie xyzzy (który mogłeś napisać lub nie) oraz
szukasz luk w zabezpieczeniach (abyś mógł je naprawić przed klientami
napotkać luki w zabezpieczeniach). W tym samouczku założę, że używasz systemu Unix-
podobny system, taki jak Linux, OpenBSD lub MacOS X.

Jeśli kod źródłowy znajduje się w podkatalogu o nazwie xyzzy, prawdopodobnie zacząłbyś od otwarcia pliku
okno tekstowe i przy użyciu domyślnych ustawień wykrywacza błędów, aby przeanalizować program i sporządzić raport
uszeregowana pod względem ważności lista potencjalnych luk w zabezpieczeniach ("mniej" po prostu upewnia się, że
wyniki pozostają na ekranie):
wykrywacz wad xyzzy | mniej

W tym momencie zobaczysz dużą liczbę wpisów. Każdy wpis ma nazwę pliku, a
dwukropek, numer wiersza, poziom ryzyka w nawiasie (gdzie 5 oznacza największe ryzyko), kategorię,
nazwę funkcji i opis, dlaczego wykrywacz błędów uważa, że ​​ta linia to a
słaby punkt. Flawfinder zwykle sortuje według poziomu ryzyka, pokazując najpierw najbardziej ryzykowne elementy;
jeśli masz ograniczony czas, prawdopodobnie najlepiej zacząć pracę nad najbardziej ryzykownymi przedmiotami i
kontynuuj, aż skończy ci się czas. Jeśli chcesz ograniczyć wyświetlanie do zagrożeń tylko z a
określony poziom ryzyka lub wyższy, użyj opcji --minlevel. Jeśli otrzymujesz
nadzwyczajna liczba fałszywych alarmów, ponieważ nazwy zmiennych wyglądają na niebezpieczne
nazwy funkcji, użyj opcji -F, aby usunąć raporty na ich temat. Jeśli nie rozumiesz
komunikat o błędzie, zapoznaj się z dokumentami, takimi jak Pisanie Zabezpieczać Programy dla Linux i
Unix JAKhttp://www.dwheeler.com/secure-programs⟩ Na http://www.dwheeler.com/secure-
programów, który zawiera więcej informacji na temat pisania bezpiecznych programów.

Po zidentyfikowaniu problemu i zrozumieniu go można go naprawić. Czasami możesz
chcesz ponownie przeprowadzić analizę, ponieważ zmienią się numery linii i upewnić się
że nowy kod nie wprowadza jeszcze innej luki.

Jeśli ustaliłeś, że jakaś linia nie stanowi problemu i jesteś tego pewien, możesz to zrobić
wstaw tuż przed lub w obraźliwym wierszu komentarz podobny do
/* Flawfinder: ignoruj ​​*/
aby nie pojawiały się na wyjściu.

Gdy to zrobisz, powinieneś wrócić i wyszukać dane wejściowe programu, aby je wykonać
upewnij się, że program silnie filtruje wszystkie niezaufane dane wejściowe. Flawfinder może
zidentyfikuj wiele danych wejściowych programu, używając opcji --inputs, na przykład:
wykrywacz wad --wprowadza xyzzy

Flawfinder może dobrze integrować się z edytorami tekstu i zintegrowanymi środowiskami programistycznymi;
zobacz przykłady, aby uzyskać więcej informacji.

Flawfinder zawiera wiele innych opcji, w tym tworzenie wersji HTML plików
wyjście (przydatne do ładniejszych wyświetlaczy). W następnej sekcji opisano te opcje bardziej szczegółowo
Szczegół.

OPCJE


Flawfinder ma wiele opcji, które można pogrupować w opcje kontrolujące własne
dokumentację, wybierz dane wejściowe, wybierz, które trafienia mają być wyświetlane, wybierz format wyjściowy,
i wykonaj zarządzanie listą trafień. Flawfinder obsługuje standardową składnię zdefiniowaną w pliku
Sekcja POSIX (wydanie 7, wydanie 2013) ``Konwencje narzędziowe''. Obsługuje również GNU
długie opcje (opcje z podwójną kreską formularza --opcja) jak określono w ust GNU C Biblioteka
Numer Referencyjny Instrukcja obsługi ``Konwencje składni argumentów programu'' i GNU Kodowanie Wzorce
``Standardy dla interfejsów wiersza poleceń''. Długie argumenty opcji można podać jako
``--nazwa=wartość'' lub ``-nazwa wartość''. Dostęp do niektórych opcji można uzyskać tylko za pomocą opcji more
czytelne długie konwencje opcji GNU; wspólne opcje są również obsługiwane przez starsze
jednoliterowa konwencja opcyjna.

Dokumenty
--help

-h Pokaż informacje o użytkowaniu (pomoc).

--wersja Pokazuje (tylko) numer wersji i kończy działanie.

--listrule Wymień warunki (tokeny), które powodują dalsze badanie, ich ryzyko niewykonania zobowiązania
poziom i domyślne ostrzeżenie (w tym identyfikator(y) CWE), if
dotyczy), wszystkie oddzielone tabulatorami. Terminy to przede wszystkim nazwy potencjalnie-
niebezpieczne funkcje. Należy pamiętać, że zgłoszony poziom ryzyka i ostrzeżenie dla niektórych
określony kod może różnić się od domyślnego, w zależności od tego, jaki jest termin
używany. Połącz z -D, jeśli nie chcesz zwykłego nagłówka. Flakon
wersja 1.29 zmieniła separator ze spacji na tabulatory i dodała domyślny
pole ostrzegawcze.

Wybór Wkład Dane
--zezwól na link Zezwalaj na korzystanie z dowiązań symbolicznych; normalnie dowiązania symboliczne są pomijane. nie
użyj tej opcji, jeśli analizujesz kod innych osób; napastnicy mogli zrobić wiele
rzeczy, które mogą powodować problemy podczas analizy przy włączonej tej opcji. Dla
na przykład osoba atakująca może wstawić dowiązania symboliczne do plików, takich jak / Etc / passwd
(wyciek informacji o pliku) lub utworzyć pętlę okrężną, która by
powoduje, że wykrywacz błędów działa ``na zawsze''. Kolejny problem z włączeniem tego
opcja polega na tym, że jeśli ten sam plik jest wielokrotnie odwoływany przy użyciu symbolic
linków, będzie wielokrotnie analizowany (a tym samym wielokrotnie zgłaszany).
Zauważ, że wykrywacz błędów zawiera już pewną ochronę przed dowiązaniami symbolicznymi
do specjalnych typów plików, takich jak typy plików urządzeń (np. /dev/zero lub
C:\mystuff\com1). Zauważ, że w przypadku wersji 1.01 i wcześniejszych wersji wykrywacza błędów tak było
domyślny.

--followdotdir
Wprowadź katalogi, których nazwy zaczynają się od „.”. Zwykle takie katalogi są
ignorowane, ponieważ zwykle zawierają prywatne dane kontroli wersji (takie jak
.git/ lub .svn/), konfiguracje i tak dalej.

--brak łącza Ignorowane. Historycznie wyłączało to podążanie za dowiązaniami symbolicznymi; to zachowanie
jest teraz wartością domyślną.

--łatka=plik łatki

-P plik łatki
Sprawdź wybrane pliki lub katalogi, ale zgłaszaj tylko trafienia w wierszach, które
są dodawane lub modyfikowane przez dany plik poprawki. Plik poprawki musi być w formacie
rozpoznany ujednolicony format różnic (np. wyjście GNU „diff -u stary nowy”,
„svn diff” lub „git diff [commit]”). Flawfinder zakłada, że ​​łatka ma
zostały już zastosowane do plików. Plik poprawki może również zawierać zmiany w
nieistotne pliki (zostaną po prostu zignorowane). Numery linii podane w
patch służy do określenia, które linie zostały zmienione, więc jeśli tak
zmodyfikował pliki od czasu utworzenia pliku łaty, wygeneruj ponownie plik łaty
Pierwszy. Uważaj, aby nazwy plików nowych plików podane w pliku łatki
muszą dokładnie pasować, w tym wielkie/małe litery, prefiks ścieżki i katalog
separator (\ vs. /). Akceptowany jest tylko ujednolicony format różnic (GNU diff, svn
diff, a wyjście git diff jest w porządku); jeśli masz inny format, ponownie
najpierw go zregeneruj. Tylko trafienia, które występują na wynikowych zmienionych liniach lub
bezpośrednio nad nimi i pod nimi. Ta opcja implikuje
--nigdy nie ignoruj.

Wybór Odsłon do Wyświetlacz
--wejścia

-I Pokaż tylko funkcje, które uzyskują dane spoza programu; to też ustawia
minimalny poziom do 0.

--minpoziom=X

-m X Ustaw minimalny poziom ryzyka na X, aby umieścić go na liście trafień. Może to być od 0 (``no
ryzyko'') do 5 („maksymalne ryzyko”); wartość domyślna to 1.

--fałszywie dodatni

-F Nie uwzględniaj trafień, które mogą być fałszywymi trafieniami. Obecnie oznacza to
że nazwy funkcji są ignorowane, jeśli nie następuje po nich „(” i to
deklaracje tablic znaków nie są odnotowywane. Tak więc, jeśli używasz zmiennej
wszędzie o nazwie „dostęp”, wyeliminuje to odniesienia do tego zwykłego
zmienny. To nie jest ustawienie domyślne, ponieważ zwiększa to również prawdopodobieństwo
brakujące ważne hity; w szczególności nazwy funkcji w klauzulach #define i wywołaniach
poprzez wskaźniki funkcji zostaną pominięte.

--nigdy nie ignoruj

-n Nigdy nie ignoruj ​​problemów związanych z bezpieczeństwem, nawet jeśli zawierają one dyrektywę ``ignore'' w pliku
komentarz.

--wyrażenie regularne=WZÓR

-e WZÓR
Zgłaszaj tylko trafienia z tekstem pasującym do wzorca wyrażenia regularnego PATTERN.
Na przykład, aby zgłaszać tylko trafienia zawierające tekst „CWE-120”, użyj ``--regex
CWE-120''. Te nazwy flag opcji są takie same jak grep.

Wybór Wydajność utworzony
--kolumny

-C Pokaż numer kolumny (oraz nazwę pliku i numer wiersza) każdego trafienia;
jest to pokazane po numerze wiersza przez dodanie dwukropka i numeru kolumny w
linii (pierwszy znak w linii to kolumna numer 1). to jest przydatne
dla redaktorów, którzy mogą przeskakiwać do określonych kolumn lub do integracji z innymi
narzędzia (takie jak te do dalszego odfiltrowywania fałszywych trafień).

--kontekst

-c Pokaż kontekst, tj. wiersz zawierający „trafienie”/potencjalną wadę. Domyślnie
linia jest wyświetlana bezpośrednio po ostrzeżeniu.

--tylko dane

-D Nie wyświetlaj nagłówka i stopki. Użyj tego razem z opcją --quiet, aby zobaczyć po prostu
same dane.

--html

-H Sformatuj dane wyjściowe jako HTML zamiast zwykłego tekstu.

--natychmiastowy

-i Natychmiast wyświetlaj trafienia (nie czekaj tylko do końca).

--pojedyncza linia

-S Wyświetlaj jako pojedynczą linię tekstu wyjściowego dla każdego trafienia. Przydatne do interakcji
z narzędziami do kompilacji.

--pomiń czas Pomiń informacje o czasie. Jest to przydatne w przypadku testów regresji wykrywacza błędów
tak, aby dane wyjściowe nie zmieniały się w zależności od czasu trwania analizy
trwa.

--cichy

-Q Nie wyświetlaj informacji o stanie (tzn. które pliki są sprawdzane) podczas
analiza trwa.

Lista hitów Zarządzanie
--zapiszlista trafień=F
Zapisz wszystkie wynikowe trafienia („lista trafień”) do F.

--loadhitlist=F
Załaduj listę hitów z F zamiast analizować programy źródłowe. Ostrzeżenie: zrób nie
ładuj listy przebojów z niezaufanych źródeł (ze względów bezpieczeństwa).

--diffhitlist=F
Pokaż tylko trafienia (załadowane lub przeanalizowane), a nie w F. F prawdopodobnie został utworzony
wcześniej używając --savehitlist. Ostrzeżenie: zrób nie różnicowanie list przebojów od niezaufanych
źródeł (ze względów bezpieczeństwa). Jeśli nie podano opcji --loadhitlist,
spowoduje to wyświetlenie trafień w analizowanych plikach kodu źródłowego, których nie było
poprzednio przechowywane w F. Jeśli zostanie użyte razem z --loadhitlist, pokaże
hits w załadowanej liście hitów nie w F. Algorytm różnicowy jest
konserwatywny; trafienia są uważane za „takie same” tylko wtedy, gdy mają to samo
nazwa pliku, numer wiersza, pozycja kolumny, nazwa funkcji i poziom ryzyka.

PRZYKŁADY


Oto różne przykłady wywoływania metody wykrywania błędów. Pierwsze przykłady pokazują różne
proste opcje wiersza poleceń. Flawfinder został zaprojektowany do współpracy z edytorami tekstu i
zintegrowanych środowisk programistycznych, więc kolejne sekcje pokazują, jak zintegrować wykrywacz błędów
do vima i emacsa.

Prosty wiersza polecenia Opcje
wykrywacz wad /usr/src/linux-3.16
Sprawdź wszystkie pliki C/C++ w katalogu /usr/src/linux-3.16 i wszystkie jego
podkatalogi (rekurencyjnie), raportowanie wszystkich znalezionych trafień. Domyślnie
Wyszukiwarka błędów pominie dowiązania symboliczne i katalogi o nazwach zaczynających się od
okres.

wykrywacz wad --minpoziom=4 .
Sprawdź wszystkie pliki C/C++ w bieżącym katalogu i jego podkatalogach
(rekurencyjnie); zgłaszają tylko luki poziomu 4 i wyższego (dwa najwyższe
poziomy ryzyka).

wykrywacz wad --wejścia mój reż
Sprawdź wszystkie pliki C/C++ w mydir i jego podkatalogach (rekurencyjnie) i
funkcje raportu, które pobierają dane wejściowe (aby można było upewnić się, że filtrują one dane wejściowe
odpowiednio wejść).

wykrywacz wad --nigdy nie ignoruj mój reż
Sprawdź wszystkie pliki C/C++ w katalogu mydir i jego podkatalogach,
w tym nawet trafienia oznaczone do ignorowania w komentarzach do kodu.

wykrywacz wad -QD mój reż
Sprawdź mydir i zgłoś tylko rzeczywiste wyniki (usunięcie nagłówka i
stopka wyjścia). Ten formularz jest przydatny, jeśli dane wyjściowe będą przesyłane potokowo
inne narzędzia do dalszej analizy. -C (--kolumny) i -S (--pojedyncza linia)
opcje mogą być również przydatne, jeśli przesyłasz dane do innych narzędzi.

wykrywacz wad -QDSC mój reż
Sprawdź mydir, zgłaszając tylko rzeczywiste wyniki (bez nagłówka i stopki). Każdy
trafienie jest zgłaszane w jednym wierszu, a numery kolumn są zgłaszane. To może być
przydatne polecenie, jeśli przesyłasz dane wyjściowe z wykrywacza wad do innych narzędzi.

wykrywacz wad --cichy --html --kontekst mój reż > wyniki.html
Sprawdź wszystkie pliki C/C++ w katalogu mydir i jego podkatalogach oraz
utworzyć wersję wyników w formacie HTML. Zarządzanie kodem źródłowym
systemy (takie jak SourceForge i Savannah) mogą używać takiego polecenia.

wykrywacz wad --cichy --zapisz listę trafień zapisane.trafienia *.[kan]
Sprawdź wszystkie pliki .c i .h w bieżącym katalogu. Nie zgłaszaj dot
stan przetwarzania i zapisz wynikową listę trafień (zestaw wszystkich trafień) w
plik zapisany.hits.

wykrywacz wad --diffitlista zapisane.trafienia *.[kan]
Sprawdź wszystkie pliki .c i .h w bieżącym katalogu i pokaż wszystkie trafienia
nie znajdowały się już w pliku save.hits. Można tego użyć do pokazania tylko
``nowe'' luki w zmodyfikowanym programie, z którego utworzono plik save.hits
starsza wersja analizowanego programu.

wykrywacz wad --łata ostatnia.poprawka .
Sprawdź bieżący katalog rekurencyjnie, ale zgłoś tylko wiersze, które były
zmienione lub dodane w już zastosowanym pliku łatek o nazwie ostatnia.poprawka.

wykrywacz wad --wyrażenie regularne "CWE-120|CWE-126" src /
Sprawdź katalog src rekurencyjnie, ale zgłaszaj trafienia tylko wtedy, gdy CWE-120 lub
CWE-126 ma zastosowanie.

Przywoływanie od vim
Vim edytora tekstu zawiera mechanizm „szybkiej naprawy”, który dobrze współpracuje z wykrywaczem błędów, więc
aby można było łatwo wyświetlić komunikaty ostrzegawcze i przejść do odpowiedniego kodu źródłowego.

Najpierw musisz wywołać wykrywacz błędów, aby utworzyć listę trafień, a są na to dwa sposoby
Zrób to. Pierwszym sposobem jest najpierw uruchomienie wykrywacza błędów, a następnie (korzystając z jego danych wyjściowych) wywołanie
krzepa. Drugim sposobem jest uruchomienie (lub kontynuacja działania) vima, a następnie wywołanie wady
(zwykle z wnętrza vima).

Po pierwsze, uruchom wykrywacz wad i zapisz jego dane wyjściowe w jakimś FLAWFILE (powiedzmy „flawfile”),
następnie wywołaj vima, używając jego opcji -q, na przykład: „vim -q plik wad”. Drugi sposób
(uruchamianie wykrywacza błędów po uruchomieniu vima) można wykonać na wiele sposobów. Jednym z nich jest wzywanie
Flawfinder za pomocą polecenia powłoki „:!flawfinder-command > FLAWFILE”, a następnie wykonaj polecenie za pomocą
komenda „:cf BŁĄD”. Innym sposobem jest przechowywanie polecenia wykrywania wad w pliku
makefile (jak, powiedzmy, pseudopolecenie takie jak „flaw”), a następnie uruchom „:make skaza”.

We wszystkich tych przypadkach potrzebujesz polecenia, aby uruchomić wykrywacz błędów. Wiarygodne polecenie, które
umieszcza każde trafienie w osobnej linii (-S) i usuwa nagłówki i stopki, które mogłyby wprowadzać w błąd
to jest:

wykrywacz wad -SQD .

Możesz teraz używać różnych poleceń edycyjnych, aby przeglądać wyniki. Zostanie wyświetlone polecenie „:cn”.
następny hit; „:cN” wyświetla poprzednie trafienie, a „:cr” cofa do pierwszego trafienia.
":copen" otworzy okno z aktualną listą trafień, zwaną "quickfix
okno"; ":cclose" zamknie okno szybkiej poprawki. Jeśli bufor w używanym oknie ma
zmieniono, a błąd występuje w innym pliku, skok do błędu zakończy się niepowodzeniem. Musisz
upewnij się, że okno zawiera bufor, który można opuścić przed próbą przeskoczenia do pliku a
nowy plik, powiedzmy, zapisując plik; zapobiega to przypadkowej utracie danych.

Przywoływanie od emacs
Edytor tekstu/system operacyjny emacs zawiera „tryb grep” i „tryb kompilacji”
mechanizmy dobrze współpracujące z wykrywaczem błędów, ułatwiające przeglądanie komunikatów ostrzegawczych, skoki
do odpowiedniego kodu źródłowego i napraw znalezione problemy.

Najpierw musisz wywołać błądfindera, aby utworzyć listę komunikatów ostrzegawczych. Możesz użyć
„tryb grep” lub „tryb kompilacji”, aby utworzyć tę listę. Często „tryb grep” jest wygodniejszy;
pozostawia tryb kompilacji nietknięty, dzięki czemu można łatwo przekompilować po zmianie
coś. Jeśli jednak chcesz przejść do dokładnej pozycji kolumny trafienia, skompiluj
mode może być wygodniejszy, ponieważ emacs może używać danych wyjściowych z kolumny do wykrywania błędów
bezpośrednio przejść do właściwej lokalizacji bez żadnej specjalnej konfiguracji.

Aby użyć trybu grep, wprowadź polecenie „Mx grep”, a następnie wprowadź potrzebny wykrywacz wad
Komenda. Aby użyć trybu kompilacji, wprowadź polecenie „Mx Compilate” i wprowadź potrzebne
polecenie wykrywacza błędów. To jest polecenie meta-kluczowe, więc będziesz musiał użyć klucza meta dla
klawiaturze (zwykle jest to klawisz ESC). Tak jak w przypadku wszystkich poleceń emacsa, będziesz musiał
naciśnij RETURN po wpisaniu „grep” lub „kompiluj”. Tak więc w wielu systemach tryb grep jest
wywoływany przez wpisanie ESC xgrep RETURN.

Następnie musisz wprowadzić polecenie, usuwając wszystko, co było wcześniej, jeśli to konieczne. A
wiarygodne polecenie to:

wykrywacz wad -SQDC .

To polecenie sprawia, że ​​każdy raport o trafieniu jest pojedynczą linią, co jest znacznie łatwiejsze dla narzędzi
uchwyt. Opcje ciche i tylko dane usuwają inne niepotrzebne informacje o stanie
użyj wewnątrz emacsa. Końcowa kropka oznacza, że ​​bieżący katalog i wszystkie
potomkowie są przeszukiwani pod kątem kodu C/C++ i analizowani pod kątem wad.

Po wywołaniu narzędzia do wyszukiwania błędów możesz użyć emacsa, aby przeskakiwać w jego wynikach. The
polecenie Cx ` (Control-x backtick) odwiedza lokalizację kodu źródłowego dla następnego ostrzeżenia
wiadomość. Cu Cx ` (control-u control-x backtick) uruchamia się ponownie od początku. Możesz
odwiedź źródło konkretnego komunikatu o błędzie, przechodząc do tego komunikatu trafienia w pliku
bufor *kompilacji* lub bufor *grep* i wpisanie klawisza powrotu. (Uwaga techniczna: w
bufor kompilacji, wywołuje to błąd kompilacji-goto.) Możesz także kliknąć Mouse-2
w komunikacie o błędzie (nie musisz najpierw przełączać się do bufora *kompilacji*).

Jeśli chcesz użyć trybu grep, aby przejść do określonych kolumn trafienia, musisz to zrobić
specjalnie skonfiguruj emacsa, aby to zrobił. Aby to zrobić, zmodyfikuj zmienną emacsa „grep-regexp-
alist”. Ta zmienna mówi Emacsowi, jak parsować dane wyjściowe polecenia „grep”, podobnie jak polecenie
zmienna „compilation-error-regexp-alist”, która zawiera listę różnych formatów błędów kompilacji
wiadomości.

Przywoływanie od Zintegrowany oprogramowania Środowiska (IDE)
W przypadku (innych) IDE zapoznaj się z zestawem wtyczek swojego IDE.

WSPÓLNY SŁABOŚĆ WYLICZENIE (CWE)


Common Weakness Enumeration (CWE) jest „formalną listą lub słownikiem wspólnego oprogramowania
słabości, które mogą wystąpić w architekturze, projekcie, kodzie lub implementacji oprogramowania
może prowadzić do możliwych do wykorzystania luk w zabezpieczeniach… stworzonych, by służyć jako wspólny język
do opisywania słabych punktów w zabezpieczeniach oprogramowania” (http://cwe.mitre.org/about/faq.html). Dla
więcej informacji na temat CWE, zob http://cwe.mitre.org.

Flawfinder obsługuje CWE i jest oficjalnie kompatybilny z CWE. Typowe trafienia w opisy
zawrzeć odpowiedni identyfikator Common Weakness Enumeration (CWE) w nawiasach, jeśli istnieje
jest znany jako odpowiedni CWE. Na przykład wspomina wiele trafień związanych z buforem
CWE-120, identyfikator CWE dla ``kopii buforowej bez sprawdzania rozmiaru danych wejściowych'' (aka
``Klasyczne przepełnienie bufora''). W kilku przypadkach może być wymieniony więcej niż jeden identyfikator CWE.
Raport HTML zawiera również łącza hipertekstowe do definicji CWE hostowanych w MITRE. W
w ten sposób wykrywacz wad został zaprojektowany tak, aby spełniał wymagania CWE-Output.

Wiele CWE zgłoszonych przez wykrywacz wad znajduje się na liście 25 najlepszych CWE/SANS z 2011 r.
(http://cwe.mitre.org/top25/). Wiele osób będzie chciało wyszukać CWE na tej liście,
takie jak CWE-120 (klasyczne przepełnienie bufora), Gdy wykrywacz błędów odwzorowuje CWE, które jest bardziej
ogólny niż element z listy 25 najlepszych, wymienia go jako bardziej ogólny:bardziej szczegółowy (np.
CWE-119:CWE-120), gdzie bardziej ogólne jest rzeczywiste mapowanie. Jeśli błądfinder odwzorowuje na more
konkretna pozycja CWE, która jest szczególnym przypadkiem pozycji 25 najlepszych, jest wymieniona w formularzu
top-25/bardziej szczegółowe (np. CWE-362/CWE-367), gdzie rzeczywiste odwzorowanie jest bardziej szczegółowe
wpis CWE. Jeśli ten sam wpis jest odwzorowywany na wiele CWE, CWE są oddzielone przecinkami
(często zdarza się to w przypadku CWE-20, Nieprawidłowa walidacja danych wejściowych). Upraszcza to wyszukiwanie
niektóre CWE.

Do mapowania użyto wersji 2.7 CWE (wydanej 23 czerwca 2014 r.). Obecny CWE
mapowania wybierają najbardziej szczegółowe CWE, które narzędzie może określić. Teoretycznie większość CWE
elementy bezpieczeństwa (sygnatury/wzory, które narzędzie wyszukuje) mogłyby teoretycznie być
zmapowane do CWE-676 (Użycie potencjalnie niebezpiecznej funkcji), ale takie odwzorowanie nie byłoby
użyteczne. W związku z tym preferowano bardziej szczegółowe odwzorowania tam, gdzie można je było znaleźć. Flakon
jest narzędziem do analizy leksykalnej; w rezultacie jest niepraktyczne, aby był bardziej szczegółowy niż
aktualnie realizowane mapowania. Oznacza to również, że jest mało prawdopodobne, aby potrzebował dużo
aktualizacja waluty mapy; po prostu nie ma wystarczającej ilości informacji, aby uściślić do
szczegółowy poziom CWE, na który zazwyczaj miałyby wpływ zmiany CWE. Lista identyfikatorów CWE
został wygenerowany automatycznie przy użyciu „make show-cwes”, więc istnieje pewność, że ta lista
jest poprawne. Proszę zgłaszać problemy z mapowaniem CWE jako błędy, jeśli jakieś znajdziesz.

Flawfinder może nie znaleźć luki w zabezpieczeniach, nawet jeśli wykrywacz błędów obejmuje jedną z tych CWE
Słabości. To powiedziawszy, wykrywacz błędów znajduje luki w zabezpieczeniach wymienione przez CWE, które obejmuje,
iw wielu przypadkach nie zgłosi linii bez tych luk. Zatem, jak
wymagany dla każdego narzędzia, które ma być kompatybilne z CWE, wykrywacz błędów ma wskaźnik fałszu
pozytywnych mniej niż 100%, a odsetek wyników fałszywie ujemnych mniejszy niż 100%. Flakon prawie
zawsze zgłasza, gdy znajdzie dopasowanie do elementu bezpieczeństwa CWE (podpis/wzorzec jako
zdefiniowane w jego bazie danych), chociaż niektóre niejasne konstrukcje mogą spowodować awarię (zobacz BŁĘDY
poniżej).

Flawfinder może zgłaszać następujące CWE (są to CWE, które obejmuje wykrywacz błędów;
``*'' oznacza te z listy 25 najlepszych CWE/SANS):

· CWE-20: Nieprawidłowa walidacja danych wejściowych

· CWE-22: Niewłaściwe ograniczenie nazwy ścieżki do katalogu z ograniczeniami (``Path Traversal'')

· CWE-78: Niewłaściwa neutralizacja elementów specjalnych używanych w poleceniu systemu operacyjnego (polecenie ``OS
Zastrzyk'')*

· CWE-119: Niewłaściwe ograniczenie operacji w granicach bufora pamięci (a
rodzic CWE-120*, więc jest to pokazane jako CWE-119:CWE-120)

· CWE-120: Kopiowanie bufora bez sprawdzania rozmiaru danych wejściowych (``Klasyczne przepełnienie bufora'')*

· CWE-126: Przeczytano bufor

· CWE-134: Niekontrolowany ciąg formatujący*

· CWE-190: przepełnienie całkowitoliczbowe lub zawijanie*

· CWE-250: Egzekucja z niepotrzebnymi uprawnieniami

· CWE-327: Użycie zepsutego lub ryzykownego algorytmu kryptograficznego*

· CWE-362: Równoczesne wykonywanie przy użyciu zasobów współdzielonych z niewłaściwą synchronizacją
(``Warunek wyścigu'')

· CWE-377: Niepewny plik tymczasowy

· CWE-676: Użycie potencjalnie niebezpiecznej funkcji*

· CWE-732: Nieprawidłowe przypisanie uprawnień dla zasobu krytycznego*

· CWE-785: Użycie funkcji manipulacji ścieżką bez bufora o maksymalnym rozmiarze (dziecko z
CWE-120*, więc to jest pokazane jako CWE-120/CWE-785)

· CWE-807: Poleganie na niezaufanych danych wejściowych w decyzji dotyczącej bezpieczeństwa*

· CWE-829: Włączenie funkcjonalności z niezaufanej sfery sterowania*

Możesz wybrać określony podzbiór CWE do raportowania, używając opcji ``--regex'' (-e).
Ta opcja akceptuje wyrażenie regularne, więc możesz wybrać wiele CWE, np. ``--regex
"CWE-120|CWE-126"''. Jeśli wybierzesz wiele CWE z ``|'' w wierszu poleceń, to tak
zazwyczaj trzeba podać parametry w cudzysłowie (ponieważ niecytowany ``|'' jest symbolem potoku).
Flawfinder został zaprojektowany, aby spełnić wymagania CWE-Searchable.

Jeśli Twoim celem jest zgłoszenie podzbioru CWE wymienionych w pliku, można to osiągnąć
w systemie uniksopodobnym używając opcji ``--regex'' aka ``-e''. Plik musi być w
formacie wyrażenia regularnego. Na przykład, ``flawfinder -e $(cat plik1)'' spowoduje tylko raportowanie
trafień pasujących do wzorca w pliku ``file1''. Jeśli plik1 zawierał ``CWE-120|CWE-126'' to
raportowałby tylko trafienia pasujące do tych CWE.

Lista wszystkich elementów bezpieczeństwa CWE (sygnatury/wzorce, których szuka wykrywacz błędów)
można znaleźć za pomocą opcji ``--listrules''. W każdym wierszu znajduje się token podpisu
(zwykle nazwa funkcji), która może prowadzić do trafienia, domyślny poziom ryzyka i
domyślne ostrzeżenie (które zawiera domyślny identyfikator CWE). Dla większości celów tak jest
wystarczy również, jeśli chcesz zobaczyć, jakie elementy bezpieczeństwa CWE mapują do których CWE, lub
odwracać. Na przykład, aby zobaczyć większość sygnatur (nazw funkcji), które są mapowane
CWE-327, nie widząc domyślnego poziomu ryzyka ani szczegółowego tekstu ostrzeżenia, uruchom ``flawfinder
--liststrule | grep CWE-327 | cięcie -f1''. Możesz również zobaczyć tokeny bez mapowania CWE
w ten sposób uruchamiając ``flawfinder -D --listrules | grep -v CWE-''. Jednak podczas
--listrules wyświetla wszystkie elementy bezpieczeństwa CWE, zawiera tylko domyślne mapowania z CWE
elementy bezpieczeństwa do identyfikatorów CWE. Nie obejmuje on udoskonaleń, które zawiera wykrywacz wad
zastosowanie (np. poprzez badanie parametrów funkcji).

Jeśli chcesz uzyskać szczegółowe i dokładne odwzorowanie między elementami bezpieczeństwa CWE a CWE
identyfikatory, najlepszym miejscem jest kod źródłowy wykrywacza wad (zawarty w dystrybucji).
za te informacje. Te szczegółowe informacje są interesujące przede wszystkim dla tych nielicznych
ludzie, którzy próbują udoskonalić mapowania CWE w wykrywaczu błędów lub ogólnie udoskonalić CWE.
Kod źródłowy dokumentuje mapowanie między elementami bezpieczeństwa do odpowiedniego CWE
identyfikatory i jest pojedynczym plikiem Pythona. Zbiór danych ``c_rules'' definiuje większość reguł,
w odniesieniu do funkcji, która może wprowadzić dalsze udoskonalenia. Możesz wyszukać
zestaw danych dla nazw funkcji, aby zobaczyć, jakie CWE generuje domyślnie; jeśli pierwszym parametrem jest
nie ``normalna'', to jest to nazwa udoskonalonej metody Pythona, która może wybrać inną
CWE (w zależności od dodatkowych informacji). I odwrotnie, możesz wyszukać ``numer CWE''
i dowiedz się, jakie elementy bezpieczeństwa (sygnatury lub wzorce) odnoszą się do tego identyfikatora CWE.
Dla większości ludzi to znacznie więcej niż potrzebują; większość ludzi chce po prostu zeskanować swoje
kod źródłowy, aby szybko znaleźć problemy.

BEZPIECZEŃSTWO


Celem tego narzędzia jest pomoc w znalezieniu luk w zabezpieczeniach, aby można je było naprawić.
Jednak programiści i recenzenci muszą wiedzieć, jak opracować bezpieczne oprogramowanie, aby z tego korzystać
narzędzie, ponieważ inaczej a oszukać w a narzędzie is nadal a oszukać. Moja książka o
http://www.dwheeler.com/secure-programs może pomóc.

To narzędzie powinno być co najwyżej małą częścią większego procesu tworzenia oprogramowania
zaprojektowane w celu wyeliminowania lub zmniejszenia wpływu luk w zabezpieczeniach. Deweloperzy i recenzenci
muszą wiedzieć, jak tworzyć bezpieczne oprogramowanie, i muszą zastosować tę wiedzę w celu ograniczenia
przede wszystkim ryzyko związane z lukami w zabezpieczeniach.

Różne narzędzia do wyszukiwania luk mają tendencję do znajdowania różnych luk. W ten sposób ty
najlepiej skorzystać z weryfikacji ręcznej i różnych narzędzi. To narzędzie może pomóc znaleźć niektóre
luki w zabezpieczeniach, ale bynajmniej nie wszystkie.

Zawsze należy analizować a kopia analizowanego programu źródłowego, a nie katalogu
które mogą być modyfikowane przez programistę podczas przeprowadzania analizy przez wykrywacz błędów. To jest
szczególnie true , jeśli niekoniecznie ufasz twórcy analizowanego programu.
Jeśli osoba atakująca ma kontrolę nad plikami podczas ich analizy, osoba atakująca może to zrobić
przenosić pliki lub zmieniać ich zawartość, aby zapobiec ujawnieniu problemu bezpieczeństwa
(lub stworzyć wrażenie problemu tam, gdzie go nie ma). Jeśli martwisz się o
złośliwych programistów i tak powinieneś to zrobić, ponieważ po analizie będziesz musiał
sprawdź, czy ostatecznie uruchomiony kod jest kodem, który przeanalizowałeś. Nie należy również używać tzw
--allowlink opcja w takich przypadkach; osoby atakujące mogą tworzyć złośliwe dowiązania symboliczne do plików
poza obszarem kodu źródłowego (np / Etc / passwd).

Systemy zarządzania kodem źródłowym (takie jak SourceForge i Savannah) zdecydowanie się do tego nadają
Kategoria; jeśli utrzymujesz jeden z tych systemów, najpierw skopiuj lub rozpakuj pliki do
osobny katalog (który nie może być kontrolowany przez atakujących) przed uruchomieniem wykrywacza błędów lub
dowolne inne narzędzie do analizy kodu.

Zauważ, że wykrywacz błędów otwiera tylko zwykłe pliki, katalogi i (na żądanie) pliki symboliczne
spinki do mankietów; nigdy nie otworzy innego rodzaju plików, nawet jeśli zostanie do nich utworzone dowiązanie symboliczne.
To przeciwdziała atakującym, którzy wstawiają nietypowe typy plików do kodu źródłowego. Jednak to
działa tylko wtedy, gdy analizowany system plików nie może zostać zmodyfikowany przez atakującego podczas
analizy, zgodnie z zaleceniami powyżej. Ta ochrona nie działa również na platformach Cygwin,
Niestety.

Systemy Cygwin (emulacja Uniksa na systemie Windows) mają dodatkowy problem, jeśli wykrywacz błędów
służy do analizy programów, którym analityk nie może ufać. Problem wynika z projektu
luka w systemie Windows (którą dziedziczy z MS-DOS). W systemach Windows i MS-DOS niektóre nazwy plików
(np. ``com1'') są automatycznie traktowane przez system operacyjny jako nazwy
urządzeń peryferyjnych i jest to prawdą nawet wtedy, gdy podana jest pełna nazwa ścieżki. Tak, Windows i MS-DOS
naprawdę są tak źle zaprojektowane. Flawfinder radzi sobie z tym, sprawdzając, jaki system plików
obiekt jest, a następnie otwiera tylko katalogi i zwykłe pliki (i dowiązania symboliczne, jeśli są włączone).
Niestety, to nie działa na Cygwin; na przynajmniej niektórych wersjach Cygwina na niektórych
wersjach systemu Windows, sama próba ustalenia, czy plik jest typem urządzenia, może spowodować błąd
program do zawieszenia. Rozwiązaniem jest usunięcie lub zmiana nazw plików, które są interpretowane
jako nazwy urządzeń przed wykonaniem analizy. Te tak zwane ``nazwy zastrzeżone'' to
CON, PRN, AUX, CLOCK$, NUL, COM1-COM9 i LPT1-LPT9, opcjonalnie z rozszerzeniem
(np. ``com1.txt''), w dowolnym katalogu iw każdym przypadku (Windows nie rozróżnia wielkości liter).

Do nie ładuj lub różnicuj listy przebojów z niezaufanych źródeł. Są one realizowane za pomocą
Moduł pickle Pythona, a moduł pickle nie ma na celu zabezpieczenia przed błędami
lub złośliwie skonstruowanych danych. Przechowywane listy przebojów są przeznaczone do późniejszego wykorzystania przez to samo
użytkownik, który utworzył listę trafień; w tym kontekście to ograniczenie nie stanowi problemu.

Korzystaj z usługi onworks.net online, wykorzystując narzędzie do wyszukiwania błędów


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

  • 1
    Phaser
    Phaser
    Phaser to szybka, darmowa i zabawna gra otwarta
    źródłowa struktura gry HTML5, która oferuje
    Renderowanie WebGL i Canvas w poprzek
    przeglądarek internetowych na komputery i urządzenia mobilne. Gry
    może być współ...
    Pobierz Phaser
  • 2
    Silnik WASAL
    Silnik WASAL
    VASSAL to silnik gry do tworzenia
    elektroniczne wersje tradycyjnej tablicy
    i gry karciane. Zapewnia wsparcie dla
    renderowanie elementów gry i interakcja,
    i ...
    Pobierz silnik VASSAL
  • 3
    OpenPDF — rozwidlenie iText
    OpenPDF — rozwidlenie iText
    OpenPDF to biblioteka Java do tworzenia
    i edycji plików PDF z LGPL i
    Licencja open source MPL. OpenPDF to
    LGPL/MPL open source następca iText,
    w ...
    Pobierz OpenPDF — rozwidlenie iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - System do Automatyzacji
    Analizy geologiczne - to geografia
    Oprogramowanie systemu informacyjnego (GIS) z
    ogromne możliwości geodanych
    przetwarzanie i an...
    Pobierz SAGA GIS
  • 5
    Przybornik dla Java/JTOOpen
    Przybornik dla Java/JTOOpen
    IBM Toolbox for Java / JTOpen to
    biblioteka klas Java obsługująca
    klient/serwer i programowanie internetowe
    modeli do systemu z systemem OS/400,
    i5/OS, lub...
    Pobierz Zestaw narzędzi dla języka Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (lub D3 dla dokumentów opartych na danych)
    to biblioteka JavaScript, która pozwala
    do tworzenia dynamicznych, interaktywnych danych
    wizualizacje w przeglądarkach internetowych. Z D3
    ty...
    Pobierz plik D3.js
  • więcej »

Komendy systemu Linux

Ad