EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

flawfinder - Online în cloud

Rulați flawfinder în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda flawfinder care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


flawfinder - găsiți lexical potențiale defecte de securitate ("hituri") în codul sursă

REZUMAT


găsitor de defecte [--Ajutor|-h] [--versiune] [--listrule]
[--allowlink] [--followdotdir] [--nicio legătură]
[--patch=nume de fișier|-P nume de fișier]
[--intrari|-I] [ --minlevel=X | -m X ] [--fals pozitiv|-F]
[--niciodata sa nu ignori|-n]
[--regex=MODEL | -e MODEL]
[--context|-c] [--coloane|-C] [--numai date|-D] [--html|-H] [--imediat|-i]
[--o singura linie|-S] [--omite timpul] [--Liniște|-Q]
[--loadhitlist=F] [--savehitlist=F] [--diffhitlist=F]
[--] [ sursă cod fişier or sursă rădăcină director ]+

DESCRIERE


Flawfinder caută prin codul sursă C/C++ căutând potențiale defecte de securitate. La
rulați flawfinder, pur și simplu dați flawfinder o listă de directoare sau fișiere. Pentru fiecare director
dat, toate fișierele care au extensii de nume de fișiere C/C++ în acel director (și
subdirectoare, recursiv) vor fi examinate. Astfel, pentru majoritatea proiectelor, pur și simplu dă
flawfinder numele directorului cel mai de sus al codului sursă (utilizați ``.'' pentru curentul
director), iar flawfinder va examina tot codul sursă C/C++ al proiectului. daca tu
vreau doar sa aiba schimbari revizuit, salvați o diferență unificată a acelor modificări (create de GNU
„diff -u” sau „svn diff” sau „git diff”) într-un fișier de corecție și utilizați opțiunea --patch (-P).

Flawfinder va produce o listă de ``hituri'' (potenţiale defecte de securitate), sortate după risc; cel
loviturile cele mai riscante sunt afișate mai întâi. Nivelul de risc este afișat între paranteze pătrate și variază
de la 0, risc foarte mic, la 5, risc mare. Acest nivel de risc depinde nu numai de
functie, ci pe valorile parametrilor functiei. De exemplu, constantă
șirurile sunt adesea mai puțin riscante decât șirurile complet variabile în multe contexte și în acelea
contextele în care lovitura va avea un nivel de risc mai scăzut. Flawfinder știe despre gettext (obișnuit
bibliotecă pentru programe internaționalizate) și va trata șirurile constante trecute
gettext ca și cum ar fi șiruri constante; aceasta reduce numărul de accesări false în
programe internaţionalizate. Flawfinder va face același lucru cu _T() și
_TEXT(), macrocomenzi comune Microsoft pentru gestionarea programelor internaționalizate. Găsitorul de defecte
ignoră corect majoritatea textului din comentarii și șiruri. În mod normal, Flawfinder arată totul
hit-uri cu un nivel de risc de cel puțin 1, dar puteți utiliza opțiunea --minlevel numai pentru a afișa
lovituri cu niveluri de risc mai mari, dacă doriți. Descrierile hit-urilor notează, de asemenea, Comune relevante
Identificatorul(i) de enumerare a punctelor slabe (CWE) în paranteze, după cum se discută mai jos. Găsitorul de defecte
este oficial compatibil CWE.

Nu fiecare lovitură este de fapt o vulnerabilitate de securitate și nu orice vulnerabilitate de securitate
este neapărat găsit. Cu toate acestea, flawfinder poate fi un ajutor în găsirea și eliminarea
vulnerabilități de securitate. O modalitate obișnuită de a folosi flawfinder este să aplici mai întâi flawfinder
un set de cod sursă și examinați elementele cu cel mai mare risc. Apoi, utilizați --inputs pentru a examina
locațiile de intrare și verificați pentru a vă asigura că sunt doar valorile de intrare legale și sigure
acceptate de la utilizatori neîncrezători.

Odată ce ați auditat un program, puteți marca linii de cod sursă care sunt de fapt bune, dar
provoca avertismente false, astfel încât Flawfinder să nu se mai plângă de ele. Pentru a marca a
astfel încât aceste avertismente să fie suprimate, puneți un comentariu special formatat
aceeași linie (după codul sursă) sau de la sine în linia anterioară. Comentariul
trebuie să aibă unul dintre următoarele două formate:

· // Flawfinder: ignoră

· /* Flawfinder: ignora */

Din motive de compatibilitate, puteți înlocui „Flawfinder:” cu „ITS4:” sau „RATS:” în aceste
comentarii special formatate. Deoarece este posibil ca astfel de linii să fie greșite, puteți utiliza
opțiunea --neverignore, care face ca flawfinder să nu ignore niciodată nicio linie, indiferent de ce
directivele de comentarii spun (mai confuz, --neverignore ignoră ignorările).

Flawfinder folosește o bază de date internă numită ``ruleset''; setul de reguli identifică
funcții care sunt cauze comune ale defectelor de securitate. Setul de reguli standard include un mare
număr de probleme potențiale diferite, inclusiv ambele probleme generale care pot afecta oricare
Programul C/C++, precum și o serie de funcții specifice Unix-like și Windows care sunt
deosebit de problematică. Opțiunea --listrules raportează lista regulilor curente și
nivelurile lor de risc implicit. După cum sa menționat mai sus, fiecare defecțiune potențială de securitate găsită într-un anumit
fișierul cod sursă (care se potrivește cu o intrare din setul de reguli) se numește „hit”, iar setul de
hit-urile găsite în timpul unei anumite rulări a programului se numesc ``hitlist''. Hitlists
poate fi salvat (folosind --savehitlist), reîncărcat înapoi pentru re-afișare (folosind --loadhitlist) și
puteți afișa numai hit-urile care sunt diferite de o altă rulare (folosind --diffhitlist).

Flawfinder este un instrument simplu, care duce la unele avantaje și dezavantaje fundamentale. Flawfinder funcționează
făcând tokenizare lexicală simplă (sărirea comentariilor și tokenizarea corectă a șirurilor),
caută potriviri de token cu baza de date (în special pentru a găsi apeluri de funcții).
Flawfinder este astfel similar cu RATS și ITS4, care folosesc, de asemenea, tokenizarea lexicală simplă.
Flawfinder examinează apoi textul parametrilor funcției pentru a estima riscul. Spre deosebire de
instrumente precum splint, steaguri de avertizare gcc și clang, flawfinder face nu folosi sau ai
acces la informații despre fluxul de control, fluxul de date sau tipurile de date atunci când căutați
vulnerabilități potențiale sau estimarea nivelului de risc. Astfel, flawfinder va
produce în mod necesar multe fals pozitive pentru vulnerabilități și nu reușesc să raporteze multe
vulnerabilități. Pe de altă parte, flawfinder poate găsi vulnerabilități în programele care
nu poate fi construit sau nu poate fi legat. Poate funcționa adesea cu programe care nici măcar nu pot fi
compilate (cel puțin de instrumentele recenzentului). Flawfinder, de asemenea, nu devine la fel de confuz de
definiții macro și alte ciudățenii cu care instrumentele mai sofisticate au probleme.
Flawfinder poate fi, de asemenea, util ca o simplă introducere în instrumentele de analiză statică în
general, deoarece este ușor de utilizat și ușor de înțeles.

Orice nume de fișier dat pe linia de comandă va fi examinat (chiar dacă nu are un nume obișnuit
extensia nume de fișier C/C++); astfel, puteți forța flawfinder să examineze orice fișiere specifice dvs
dorință. În timp ce căutați în directoare recursiv, flawfinder se deschide și examinează doar
fișiere obișnuite care au extensii de nume de fișiere C/C++. Flawfinder presupune că fișierele sunt
Fișierele C/C++ dacă au extensiile „.c”, „.h”, „.ec”, „.ecp”, „.pgc”, „.C”, „.cpp”,
„.CPP”, „.cxx”, „.cc”, „.CC”, „.pcc”, „.hpp” sau „.H”. Numele fișierului ``-'' înseamnă
intrare standard. Pentru a preveni problemele de securitate, fișierele speciale (cum ar fi fișierele speciale ale dispozitivului
și conductele numite) sunt întotdeauna omise și, implicit, legăturile simbolice sunt omise (the
Opțiunea --allowlink urmează legături simbolice).

După lista de accesări este un scurt rezumat al rezultatelor (utilizați -D pentru a elimina acest lucru
informație). Va afișa numărul de accesări, liniile analizate (așa cum sunt raportate de wc -l) și
liniile sursă fizice de cod (SLOC) analizate. Un SLOC fizic este un non-blank, non-
linia de comentarii. Va afișa apoi numărul de accesări la fiecare nivel; rețineți că va exista
nu fi niciodată un hit la un nivel mai mic decât minlevel (1 în mod implicit). Astfel, „[0] 0 [1] 9”
înseamnă că la nivelul 0 au fost raportate 0 accesări, iar la nivelul 1 au fost 9 accesări
raportat. În continuare, va afișa numărul de accesări la un anumit nivel sau mai mare (deci nivelul 3+
are suma numărului de accesări la nivelul 3, 4 și 5). Astfel, o intrare de „[0+] 37”
arată că la nivelul 0 sau mai mare au existat 37 de accesări (înregistrarea 0+ va fi întotdeauna aceeași
ca numărul „hiturilor” de mai sus). Afișările pe KSLOC sunt afișate în continuare; acesta este fiecare din „nivelul sau
mai mari" valori înmulțite cu 1000 și împărțite la SLOC fizic. Dacă legăturile simbolice ar fi
ignorate, se raportează numărul acestora. Dacă accesările au fost suprimate (folosind „ignorare”
directivă în comentariile codului sursă, așa cum este descris mai sus), este raportat numărul suprimat.
Se afișează nivelul minim de risc care trebuie inclus în raport; implicit acesta este 1
(utilizați --minlevel pentru a schimba acest lucru). Rezumatul se termină cu mementouri importante: nu toate loviturile
este în mod necesar o vulnerabilitate de securitate și pot exista și alte vulnerabilități de securitate
nu este raportat de instrument.

Flawfinder este lansat sub licența GNU GPL versiunea 2 sau ulterioară (GPLv2+).

Flawfinder funcționează similar cu un alt program, ITS4, care nu este complet open source
software (așa cum este definit în Definiția Open Source) și nici software-ul liber (așa cum este definit de
Free Software Foundation). Autorul cărții Flawfinder nu a văzut niciodată codul sursă al ITS4.

SCURT TUTORIAL


Iată un scurt exemplu despre cum ar putea fi folosit flawfinder. Imaginați-vă că aveți C/C++
codul sursă pentru un program numit xyzzy (pe care este posibil să l-ați scris sau nu) și
sunteți în căutarea unor vulnerabilități de securitate (astfel încât să le puteți remedia înaintea clienților
întâlni vulnerabilități). Pentru acest tutorial, voi presupune că utilizați un Unix-
ca un sistem, cum ar fi Linux, OpenBSD sau MacOS X.

Dacă codul sursă se află într-un subdirector numit xyzzy, probabil că ați începe prin a deschide a
fereastră de text și folosind setările implicite ale flawfinder, pentru a analiza programul și a raporta a
listă prioritizată a potențialelor vulnerabilități de securitate („mai puține” doar se asigură că
rezultatele rămân pe ecran):
flawfinder xyzzy | Mai puțin

În acest moment, veți vedea un număr mare de intrări. Fiecare intrare are un nume de fișier, a
două puncte, un număr de rând, un nivel de risc între paranteze (unde 5 este cel mai riscant), o categorie,
numele funcției și o descriere a motivului pentru care flawfinder crede că linia este a
vulnerabilitate. Flawfinder sortează în mod normal după nivelul de risc, arătând mai întâi elementele cele mai riscante;
dacă ai timp limitat, probabil cel mai bine este să începi să lucrezi la cele mai riscante articole și
continuă până când epuizezi timpul. Dacă doriți să limitați afișarea la riscuri doar cu a
un anumit nivel de risc sau mai mare, utilizați opțiunea --minlevel. Dacă primești un
număr extraordinar de fals pozitive deoarece numele variabilelor par periculoase
numele funcțiilor, utilizați opțiunea -F pentru a elimina rapoartele despre acestea. Daca nu intelegi
mesajul de eroare, vă rugăm să vedeți documente precum Scris Asigura Programe pentru Linux și
Unix HOWTOhttp://www.dwheeler.com/secure-programs⟩ la http://www.dwheeler.com/secure-
programe care oferă mai multe informații despre scrierea programelor securizate.

Odată ce identificați problema și o înțelegeți, o puteți remedia. Ocazional poți
doriți să refaceți analiza, atât pentru că numerele liniilor se vor schimba și să te asiguri
că noul cod nu introduce încă o altă vulnerabilitate.

Dacă ați stabilit că o linie nu este cu adevărat o problemă și sunteți sigur de asta, puteți
introduceți chiar înainte sau pe linia ofensătoare un comentariu de like
/* Flawfinder: ignora */
pentru a le împiedica să apară în ieșire.

Odată ce ați făcut asta, ar trebui să vă întoarceți și să căutați intrările programului, pentru a le face
asigurați-vă că programul filtrează puternic oricare dintre intrările sale nesigure. Flawfinder poate
identificați multe intrări de program folosind opțiunea --inputs, astfel:
flawfinder --inputs xyzzy

Flawfinder se poate integra bine cu editorii de text și mediile de dezvoltare integrate;
consultați exemplele pentru mai multe informații.

Flawfinder include multe alte opțiuni, inclusiv cele pentru a crea versiuni HTML ale
ieșire (utilă pentru afișaje mai frumoase). Următoarea secțiune descrie aceste opțiuni în mai multe
detaliu.

OPŢIUNI


Flawfinder are o serie de opțiuni, care pot fi grupate în opțiuni care își controlează propriile opțiuni
documentație, selectați datele de intrare, selectați ce accesări să afișați, selectați formatul de ieșire,
și efectuați gestionarea listelor de rezultate. Flawfinder acceptă sintaxa standard definită în
POSIX (Numărul 7, Ediția 2013) secțiunea ``Convenții de utilitate''. De asemenea, acceptă GNU
opțiuni lungi (opțiuni cu liniuță dublă de formular --opțiune) așa cum este definit în GNU C Bibliotecă
Referinţă Manual ``Convențiile de sintaxă a argumentului programului'' și GNU Codificare Standarde
``Standarde pentru interfețele liniei de comandă''. Argumentele opțiunii lungi pot fi furnizate ca
``--name=valoare'' sau ``-name value''. Unele opțiuni pot fi accesate numai folosind mai multe
convenții de opțiune lungă GNU lizibile; opțiunile comune sunt acceptate și de cele mai vechi
convenție de opțiune cu o singură literă.

Documentație
--Ajutor

-h Afișați informații de utilizare (ajutor).

--versiune Afișează (doar) numărul versiunii și iese.

--listrule Enumerați termenii (jetoanele) care declanșează o examinare ulterioară, riscul lor implicit
nivelul și avertismentul implicit (inclusiv identificatorul(i) CWE, dacă
aplicabil), toate separate prin file. Termenii sunt în primul rând nume de potențial-
funcții periculoase. Rețineți că nivelul de risc raportat și avertisment pentru unii
codul specific poate fi diferit de cel implicit, în funcție de modul în care este termenul
folosit. Combinați cu -D dacă nu doriți antetul obișnuit. Găsitorul de defecte
versiunea 1.29 a schimbat separatorul din spații în file și a adăugat valoarea implicită
câmp de avertizare.

selectarea Intrare Date
--allowlink Permite utilizarea legăturilor simbolice; în mod normal, legăturile simbolice sunt sărite. Nu
utilizați această opțiune dacă analizați codul de către alții; atacatorii ar putea face multe
lucruri care să cauzeze probleme pentru o analiză cu această opțiune activată. Pentru
de exemplu, un atacator ar putea insera legături simbolice către fișiere precum / Etc / passwd
(scurgerea de informații despre fișier) sau creați o buclă circulară, ceea ce ar face
face ca flawfinder să ruleze „pentru totdeauna”. O altă problemă cu activarea acestui lucru
opțiunea este aceea dacă același fișier este referit de mai multe ori folosind simbolul
link-uri, va fi analizat de mai multe ori (și astfel raportat de mai multe ori).
Rețineți că flawfinder include deja o anumită protecție împotriva legăturilor simbolice
la tipuri de fișiere speciale, cum ar fi tipuri de fișiere de dispozitiv (de exemplu, /dev/zero sau
C:\mystuff\com1). Rețineți că pentru versiunea flawfinder 1.01 și anterioară, aceasta a fost
implicit.

--followdotdir
Introduceți directoare ale căror nume încep cu „.”. În mod normal, astfel de directoare sunt
ignorate, deoarece în mod normal includ date private de control al versiunilor (cum ar fi
.git/ sau .svn/), configurații și așa mai departe.

--nicio legătură Ignorat. Din punct de vedere istoric, aceasta a fost dezactivată în urma legăturilor simbolice; acest comportament
este acum valoarea implicită.

--patch=patchfile

-P patchfile
Examinați fișierele sau directoarele selectate, dar raportați numai accesările în rândurile care
sunt adăugate sau modificate de fișierul de corecție dat. Fișierul de corecție trebuie să fie în a
format de diff unificat recunoscut (de exemplu, rezultatul GNU „diff -u old new”,
„svn diff” sau „git diff [commit]”). Flawfinder presupune că patch-ul are
au fost deja aplicate fișierelor. Fișierul de corecție poate include și modificări la
fișiere irelevante (vor fi pur și simplu ignorate). Numerele liniilor date în
fișierele de corecție sunt folosite pentru a determina ce linii au fost modificate, deci dacă aveți
modificat fișierele de când a fost creat fișierul de corecție, regenerează fișierul de corecție
primul. Aveți grijă ca numele fișierelor noilor fișiere date în fișierul de corecție
trebuie să se potrivească exact, inclusiv majuscule/minuscule, prefixul căii și directorul
separator (\ vs. /). Este acceptat doar formatul unificat de diff (GNU diff, svn
diff, iar ieșirea git diff este în regulă); dacă aveți alt format, din nou
regenerează-l mai întâi. Doar loviturile care apar pe liniile modificate rezultate sau
imediat deasupra și dedesubtul lor, sunt raportate. Această opțiune implică
--niciodata sa nu ignori.

selectarea hit-uri la Afişa
--intrari

-I Afișează numai funcțiile care obțin date din afara programului; se stabileste si asta
minlevel la 0.

--minlevel=X

-m X Setați nivelul minim de risc la X pentru a fi inclus în lista de rezultate. Acesta poate fi de la 0 (``nr
risc'') la 5 ("risc maxim"); implicit este 1.

--fals pozitiv

-F Nu includeți accesări care sunt susceptibile de a fi fals pozitive. În prezent, asta înseamnă
că numele funcțiilor sunt ignorate dacă nu sunt urmate de „(”, și asta
declarațiile de matrice de caractere nu sunt notate. Astfel, dacă aveți, utilizați o variabilă
numit „acces” peste tot, acest lucru va elimina referirile la acest obișnuit
variabil. Aceasta nu este valoarea implicită, deoarece aceasta crește și probabilitatea
lipsesc hit-uri importante; în special, numele funcțiilor din #define clauze și apeluri
prin indicatori de funcție vor fi ratați.

--niciodata sa nu ignori

-n Nu ignorați niciodată problemele de securitate, chiar dacă au o directivă „ignore” în a
cometariu.

--regexp=MODEL

-e MODEL
Raportați numai accesări cu text care se potrivește cu modelul de expresie regulată PATTERN.
De exemplu, pentru a raporta numai accesări care conțin textul „CWE-120”, utilizați ``--regex
CWE-120''. Aceste nume de opțiuni sunt aceleași cu grep.

selectarea producție Format
--coloane

-C Afișați numărul coloanei (precum și numele fișierului și numărul rândului) pentru fiecare accesare;
aceasta este afișată după numărul rândului, adăugând două puncte și numărul coloanei în
linia (primul caracter dintr-o linie este coloana numărul 1). Acest lucru este util
pentru editori care pot sări la anumite coloane sau pentru integrarea cu altele
instrumente (cum ar fi cele pentru a filtra în continuare fals pozitive).

--context

-c Afișați contextul, adică linia care are „lovirea”/defectul potențial. În mod implicit,
linia este afișată imediat după avertisment.

--numai date

-D Nu afișa antetul și subsolul. Utilizați acest lucru împreună cu --quiet pentru a vedea doar
datele în sine.

--html

-H Formatați rezultatul ca HTML în loc de text simplu.

--imediat

-i Afișați imediat hit-urile (nu așteptați doar până la sfârșit).

--o singura linie

-S Afișați ca o singură linie de text pentru fiecare accesare. Util pentru interacțiune
cu instrumente de compilare.

--omite timpul Omiteți informațiile de sincronizare. Acest lucru este util pentru testele de regresie ale Flawfinder
în sine, astfel încât rezultatul să nu varieze în funcție de durata analizei
ia.

--Liniște

-Q Nu afișați informații despre stare (adică ce fișiere sunt examinate) în timp ce
analiza este in curs.

Lista de hituri Management
--savehitlist=F
Salvați toate accesările rezultate („lista de rezultate”) în F.

--loadhitlist=F
Încărcați lista de rezultate din F în loc să analizați programele sursă. Avertisment: faceți nu
încărcați listele de rezultate din surse nesigure (din motive de securitate).

--diffhitlist=F
Afișați numai accesări (încărcate sau analizate) care nu sunt în F. Se presupune că a fost creat
folosind anterior --savehitlist. Avertisment: faceți nu listele de rezultate diferite de cele neîncrezute
surse (din motive de securitate). Dacă nu este furnizată opțiunea --loadhitlist,
aceasta va afișa accesările din fișierele de cod sursă analizate care nu au fost
stocat anterior în F. Dacă este folosit împreună cu --loadhitlist, acesta va afișa
hit-uri în lista de rezultate încărcată nu în F. Algoritmul de diferență este
conservator; hit-urile sunt considerate „același” numai dacă au aceleași
numele fișierului, numărul rândului, poziția coloanei, numele funcției și nivelul de risc.

EXEMPLE


Iată diverse exemple despre cum să invocați flawfinder. Primele exemple arată diverse
opțiuni simple din linia de comandă. Flawfinder este proiectat să funcționeze bine cu editorii de text și
medii de dezvoltare integrate, astfel încât secțiunile următoare arată cum să integrați flawfinder
în vim și emacs.

simplu Linie de comanda Opțiuni
găsitor de defecte /usr/src/linux-3.16
Examinați toate fișierele C/C++ din directorul /usr/src/linux-3.16 și toate
subdirectoare (recursiv), raportând toate accesările găsite. În mod implicit
flawfinder va sări peste linkurile simbolice și directoarele cu nume care încep cu
o perioada.

găsitor de defecte --minlevel=4 .
Examinați toate fișierele C/C++ din directorul curent și subdirectoarele acestuia
(recursiv); raportați doar vulnerabilitățile de la nivelul 4 și mai sus (cele două cele mai mari
niveluri de risc).

găsitor de defecte --intrari mydir
Examinați toate fișierele C/C++ din mydir și subdirectoarele sale (recursiv) și
funcțiile de raportare care preiau intrări (pentru a vă asigura că filtrează
intrări în mod corespunzător).

găsitor de defecte --niciodata sa nu ignori mydir
Examinați toate fișierele C/C++ din directorul mydir și subdirectoarele acestuia,
inclusiv chiar și hit-urile marcate pentru ignorare în comentariile codului.

găsitor de defecte -QD mydir
Examinați mydir și raportați numai rezultatele reale (eliminând antetul și
subsolul ieşirii). Acest formular este util dacă ieșirea va fi conectată
alte instrumente de analiză ulterioară. -C (--coloanele) și -S (--singleline)
opțiunile pot fi utile și dacă transferați datele în alte instrumente.

găsitor de defecte -QDSC mydir
Examinați mydir, raportând doar rezultatele reale (fără antet sau subsol). Fiecare
hit-ul este raportat pe o singură linie, iar numerele coloanei sunt raportate. Aceasta poate fi o
comandă utilă dacă alimentați rezultatul Flawfinder către alte instrumente.

găsitor de defecte --Liniște --html --context mydir > rezultate.html
Examinați toate fișierele C/C++ din directorul mydir și subdirectoarele acestuia și
produce o versiune formatată HTML a rezultatelor. Gestionarea codului sursă
sistemele (cum ar fi SourceForge și Savannah) ar putea folosi o comandă ca aceasta.

găsitor de defecte --Liniște --savehitlist salvate.hituri *.[ch]
Examinați toate fișierele .c și .h din directorul curent. Nu raportați despre
starea procesării și salvați lista de accesări rezultată (setul tuturor accesărilor) în
fișierul salvat.hits.

găsitor de defecte --diffhitlist salvate.hituri *.[ch]
Examinați toate fișierele .c și .h din directorul curent și afișați toate accesările
nu erau deja în fișierul salvat.hits. Aceasta poate fi folosită pentru a afișa numai
vulnerabilități „noi” într-un program modificat, dacă saved.hits a fost creat din
versiunea mai veche a programului analizat.

găsitor de defecte --plasture recent.patch .
Examinați directorul curent în mod recursiv, dar raportați numai liniile care au fost
schimbat sau adăugat în fișierul de corecție deja aplicat numit recent.patch.

găsitor de defecte --regex „CWE-120|CWE-126” src /
Examinați directorul src recursiv, dar raportați numai hit-urile unde CWE-120 sau
Se aplică CWE-126.

Invocarea din sevă
Editorul de text vim include un mecanism de „remediere rapidă” care funcționează bine cu flawfinder, deci
că puteți vizualiza cu ușurință mesajele de avertizare și puteți sări la codul sursă relevant.

În primul rând, trebuie să invocați flawfinder pentru a crea o listă de accesări și există două moduri de a face acest lucru
fa asta. Prima modalitate este să porniți mai întâi Flawfinder și apoi (folosind rezultatul său) să invoceți
vim. A doua modalitate este să porniți (sau să continuați să rulați) vim și apoi să invocați flawfinder
(de obicei din interiorul vim).

Pentru prima modalitate, rulați flawfinder și stocați rezultatul său într-un FLAWFILE (să spuneți „fawfile”),
apoi invocați vim folosind opțiunea -q, astfel: „vim -q flawfile”. A doua cale
(pornirea Flawfinder după pornirea vim) se poate face o multitudine de moduri. Una este să invocem
flawfinder folosind o comandă shell, „:!flawfinder-command > FLAWFILE”, apoi urmați cu
comanda „:cf FLAWFILE”. O altă modalitate este să stocați comanda flawfinder în dvs
makefile (ca, să zicem, o pseudocomandă precum „faw”), apoi rulați „:make flaw”.

În toate aceste cazuri, aveți nevoie de o comandă pentru ca flawfinder să ruleze. O comandă plauzibilă, care
plasează fiecare hit în propria linie (-S) și elimină anteturile și subsolurile care ar deruta
este:

găsitor de defecte -SQD .

Acum puteți utiliza diverse comenzi de editare pentru a vizualiza rezultatele. Se afișează comanda „:cn”.
următoarea lovitură; „:cN” afișează accesarea anterioară, iar „:cr” derulează înapoi la prima lovitură.
„:copen” va deschide o fereastră pentru a afișa lista curentă de accesări, numită „remediere rapidă
window"; ":cclose" va închide fereastra de remediere rapidă. Dacă buffer-ul din fereastra folosită are
schimbat și eroarea se află într-un alt fișier, săritul la eroare va eșua. Trebuie să
asigurați-vă că fereastra conține un buffer care poate fi abandonat înainte de a încerca să săriți la a
fișier nou, să spunem prin salvarea fișierului; aceasta previne pierderea accidentală a datelor.

Invocarea din emacs
Editorul de text/sistemul de operare emacs include „modul grep” și „modul de compilare”
mecanisme care funcționează bine cu flawfinder, facilitând vizualizarea mesajelor de avertizare, săriți
la codul sursă relevant și remediați orice probleme pe care le găsiți.

Mai întâi, trebuie să invocați flawfinder pentru a crea o listă de mesaje de avertizare. Poți să folosești
„grep mode” sau „compile mode” pentru a crea această listă. Adesea, „modul grep” este mai convenabil;
lasă modul de compilare neatins, astfel încât să puteți recompila cu ușurință odată ce ați schimbat
ceva. Cu toate acestea, dacă doriți să săriți la poziția exactă a coloanei a unui hit, compilați
modul poate fi mai convenabil deoarece emacs poate folosi ieșirea coloanei de la flawfinder pentru
sari direct la locatia potrivita fara nicio configuratie speciala.

Pentru a utiliza modul grep, introduceți comanda „Mx grep” și apoi introduceți flawfinder-ul necesar
comanda. Pentru a utiliza modul de compilare, introduceți comanda „Mx compile” și introduceți necesarul
comandă pentru găsirea de defecte. Aceasta este o comandă meta-cheie, așa că va trebui să utilizați meta-cheia pentru
tastatura dvs. (aceasta este de obicei tasta ESC). Ca și în cazul tuturor comenzilor emacs, va trebui
apăsați RETURN după ce ați tastat „grep” sau „compile”. Deci, pe multe sisteme, modul grep este
invocat prin tastarea ESC xgrep RETURN.

Apoi, trebuie să introduceți o comandă, eliminând tot ce era acolo înainte, dacă este necesar. A
comanda plauzibila este:

găsitor de defecte -SQDC .

Această comandă face ca fiecare raport de accesare să fie o singură linie, ceea ce este mult mai ușor pentru instrumente
mâner. Opțiunile silențioase și numai pentru date elimină celelalte informații de stare care nu sunt necesare
utilizați în interiorul emacs. Perioada finală înseamnă că directorul curent și tot
descendenții sunt căutați pentru codul C/C++ și analizați pentru defecte.

Odată ce ați invocat flawfinder, puteți utiliza emacs pentru a sări în rezultatele sale. The
comanda Cx ` (Control-x backtick) vizitează locația codului sursă pentru următorul avertisment
mesaj. Cu Cx ` (control-u control-x backtick) repornește de la început. Puteți
vizitați sursa pentru un anumit mesaj de eroare trecând la acel mesaj de accesare în
*compilation* buffer sau *grep* buffer și tastând tasta return. (Notă tehnică: în
tampon de compilare, aceasta invocă compile-goto-error.) De asemenea, puteți face clic pe Mouse-2
butonul de pe mesajul de eroare (nu trebuie să comutați mai întâi la *compilare* buffer-ul).

Dacă doriți să utilizați modul grep pentru a sări la anumite coloane ale unui hit, va trebui
configurați în mod special emacs pentru a face acest lucru. Pentru a face acest lucru, modificați variabila emacs „grep-regexp-
alist". Această variabilă îi spune lui Emacs cum să analizeze rezultatul unei comenzi „grep”, similar cu
variabila „compilation-error-regexp-alist” care listează diferite formate de erori de compilare
mesaje.

Invocarea din Integrat Dezvoltare medii (IDE-uri)
Pentru (alte) IDE-uri, consultați setul de plug-in-uri ale IDE-ului dvs.

COMUNĂ SLĂBICIUNE ENUMERARE (CWE)


Common Weakness Enumeration (CWE) este „o listă formală sau dicționar de software comun
punctele slabe care pot apărea în arhitectura, designul, codul sau implementarea software-ului
poate duce la vulnerabilități de securitate exploatabile... create pentru a servi drept limbaj comun
pentru descrierea deficiențelor de securitate a software-ului" (http://cwe.mitre.org/about/faq.html). Pentru
mai multe informații despre CWE, vezi http://cwe.mitre.org.

Flawfinder acceptă CWE și este oficial compatibil CWE. Descrieri de acces de obicei
includeți un identificator relevant de Enumerare a punctelor slabe comune (CWE) între paranteze acolo unde există
este cunoscut a fi un CWE relevant. De exemplu, multe dintre accesările legate de buffer menționează
CWE-120, identificatorul CWE pentru „copiere tampon fără a verifica dimensiunea intrării” (alias
``Classic Buffer Overflow''). În câteva cazuri, poate fi listat mai mult de un identificator CWE.
Raportul HTML include, de asemenea, link-uri hipertext către definițiile CWE găzduite la MITRE. În
în acest fel, flawfinder este proiectat să îndeplinească cerința CWE-Output.

Multe dintre CWE-urile raportate de flawfinder sunt identificate în lista CWE/SANS top 25 2011
(http://cwe.mitre.org/top25/). Mulți oameni vor dori să caute CWE în această listă,
cum ar fi CWE-120 (buffer overflow clasic), Când flawfinder mapează la un CWE care este mai mult
general decât un articol de top 25, îl listează ca fiind mai general: mai specific (de exemplu,
CWE-119:CWE-120), unde mai general este maparea reală. Dacă flawfinder mapează la un mai
articol CWE specific, care este un caz specific al unui articol de top 25, este listat în formular
top-25/mai-specific (de exemplu, CWE-362/CWE-367), unde maparea reală este mai specifică
intrare CWE. Dacă aceeași intrare se mapează la mai multe CWE, CWE-urile sunt separate prin virgule
(acest lucru se întâmplă adesea cu CWE-20, Validare de intrare necorespunzătoare). Acest lucru simplifică căutarea
anumite CWE-uri.

CWE versiunea 2.7 (lansată pe 23 iunie 2014) a fost folosită pentru mapare. Actualul CWE
mapările selectează cel mai specific CWE pe care instrumentul îl poate determina. În teorie, majoritatea CWE
elementele de securitate (semnături/modele pe care instrumentul le caută) ar putea fi teoretic
mapat la CWE-676 (Utilizarea funcției potențial periculoase), dar o astfel de mapare nu ar fi
util. Astfel, au fost preferate mapări mai specifice acolo unde putea fi găsită una. Găsitorul de defecte
este un instrument de analiză lexicală; ca urmare, este imposibil ca acesta să fie mai specific decât
mapările implementate în prezent. Acest lucru înseamnă, de asemenea, că este puțin probabil să aibă nevoie de mult
actualizare pentru moneda hărții; pur și simplu nu are suficiente informații pentru a se rafina la a
nivelul CWE detaliat pe care modificările CWE l-ar afecta de obicei. Lista identificatorilor CWE
a fost generat automat folosind „make show-cwes”, deci există încredere că această listă
este corect. Vă rugăm să raportați problemele de cartografiere CWE ca erori dacă găsiți.

Flawfinder poate să nu găsească o vulnerabilitate, chiar dacă flawfinder acoperă unul dintre aceste CWE
puncte slabe. Acestea fiind spuse, flawfinder găsește vulnerabilități enumerate de CWE-urile pe care le acoperă,
și nu va raporta linii fără acele vulnerabilități în multe cazuri. Astfel, ca
necesar pentru orice instrument care intenționează să fie compatibil CWE, flawfinder are o rată de fals
pozitive mai puțin de 100% și o rată a fals-negative mai mică de 100%. Flawfinder aproape
raportează întotdeauna ori de câte ori găsește o potrivire cu un element de securitate CWE (o semnătură/model ca
definite în baza sa de date), deși anumite constructe obscure pot duce la eșecul acestuia (vezi BUGS
de mai jos).

Flawfinder poate raporta despre următoarele CWE (acestea sunt CWE-urile pe care le acoperă flawfinder;
``*'' îi marchează pe cei din lista de top 25 CWE/SANS):

· CWE-20: Validare incorectă a intrărilor

· CWE-22: Limitarea necorespunzătoare a unui nume de cale la un director restricționat (``Path Traversal'')

· CWE-78: Neutralizarea necorespunzătoare a elementelor speciale utilizate într-o comandă OS (``Comandă OS
Injecţie'')*

· CWE-119: Restricționarea necorespunzătoare a operațiunilor în limitele unui buffer de memorie (a
părintele CWE-120*, deci acesta este afișat ca CWE-119:CWE-120)

· CWE-120: Copiere tampon fără verificarea dimensiunii intrării („Classic Buffer Overflow”)*

· CWE-126: Supra-citire tampon

· CWE-134: șir de format necontrolat*

· CWE-190: Integer Overflow sau Wraparound*

· CWE-250: Execuție cu privilegii inutile

· CWE-327: Utilizarea unui algoritm criptografic deteriorat sau riscant*

· CWE-362: Execuție simultană folosind resurse partajate cu sincronizare necorespunzătoare
(``Condiția cursei'')

· CWE-377: Fișier temporar nesigur

· CWE-676: Utilizarea funcției potențial periculoase*

· CWE-732: Atribuire incorectă a permisiunii pentru resursa critică*

· CWE-785: Utilizarea funcției de manipulare a căii fără tampon de dimensiune maximă (copil de
CWE-120*, deci acesta este afișat ca CWE-120/CWE-785)

· CWE-807: Încrederea pe intrările neîncrezătoare într-o decizie de securitate*

· CWE-829: Includerea funcționalității din sfera de control neîncrezătoare*

Puteți selecta un anumit subset de CWE de raportat utilizând opțiunea „--regex” (-e).
Această opțiune acceptă o expresie regulată, așa că puteți selecta mai multe CWE, de exemplu, ``--regex
„CWE-120|CWE-126”''. Dacă selectați mai multe CWE-uri cu ``|'' pe o linie de comandă, o veți face
de obicei, trebuie să citați parametrii (deoarece un ``|'' fără ghilimele este simbolul conductei).
Flawfinder este conceput pentru a îndeplini cerința CWE-Searchable.

Dacă scopul dvs. este să raportați un subset de CWE care sunt listate într-un fișier, acest lucru poate fi atins
pe un sistem asemănător Unix folosind opțiunea ``--regex'' alias ``-e''. Dosarul trebuie să fie în
format de expresie regulată. De exemplu, ``flawfinder -e $(cat file1)'' ar raporta numai
hit-uri care se potriveau cu modelul din ``file1''. Dacă fișierul1 conținea „CWE-120|CWE-126” acesta
ar raporta doar hit-uri care se potrivesc acelor CWE.

O listă cu toate elementele de securitate CWE (semnăturile/modelele pe care le caută flawfinder)
poate fi găsit folosind opțiunea ``--listrules''. Fiecare linie listează simbolul de semnătură
(de obicei, un nume de funcție) care poate duce la o lovitură, la nivelul de risc implicit și la
avertisment implicit (care include identificatorul CWE implicit). Pentru cele mai multe scopuri, aceasta este
de asemenea, suficient dacă doriți să vedeți ce elemente de securitate CWE mapează la ce CWE sau
verso. De exemplu, pentru a vedea cele mai multe semnături (nume de funcții) la care se mapează
CWE-327, fără a vedea nivelul de risc implicit sau textul de avertizare detaliat, rulați ``flawfinder
--listuri | grep CWE-327 | tăiați -f1''. De asemenea, puteți vedea jetoanele fără o mapare CWE
în acest fel rulând ``flawfinder -D --listrules | grep -v CWE-''. Cu toate acestea, în timp ce
--listrules listează toate elementele de securitate CWE, listează doar mapările implicite din CWE
elemente de securitate la identificatorii CWE. Nu include rafinamentele care găsesc defecte
se aplică (de exemplu, prin examinarea parametrilor funcției).

Dacă doriți o mapare detaliată și exactă între elementele de securitate CWE și CWE
identificatori, codul sursă pentru găsirea defectelor (inclus în distribuție) este cel mai bun loc
pentru acea informatie. Aceste informații detaliate sunt de interes în primul rând pentru cei puțini
oameni care încearcă să perfecționeze mapările CWE ale flawfinder sau să rafineze CWE în general.
Codul sursă documentează maparea dintre elementele de securitate la CWE respectiv
identificatori și este un singur fișier Python. Setul de date ``c_rules'' definește majoritatea regulilor,
cu referire la o funcție care poate aduce perfecționări ulterioare. Puteți căuta
set de date pentru numele funcțiilor pentru a vedea ce CWE generează implicit; dacă primul parametru este
nu ``normal'', atunci acesta este numele unei metode Python de rafinare care poate selecta diferite
CWE (în funcție de informații suplimentare). În schimb, puteți căuta „CWE-number”
și găsiți ce elemente de securitate (semnături sau modele) se referă la acel identificator CWE.
Pentru majoritatea oamenilor, acest lucru este mult mai mult decât au nevoie; majoritatea oamenilor vor doar să-și scaneze
cod sursă pentru a găsi rapid probleme.

SECURITATE


Scopul acestui instrument este de a ajuta la găsirea vulnerabilităților, astfel încât acestea să poată fi remediate.
Cu toate acestea, dezvoltatorii și recenzenții trebuie să știe cum să dezvolte software securizat pentru a utiliza acest lucru
instrument, pentru că altfel, a păcăli cu a instrument is încă a păcăli. Cartea mea la
http://www.dwheeler.com/secure-programs poate ajuta.

Acest instrument ar trebui să fie, cel mult, o mică parte a unui proces de dezvoltare software mai amplu
concepute pentru a elimina sau reduce impactul vulnerabilităților. Dezvoltatori și recenzenți
trebuie să știe cum să dezvolte software securizat și trebuie să aplice aceste cunoștințe pentru a reduce
riscurile vulnerabilităților în primul rând.

Diferite instrumente de găsire a vulnerabilităților tind să găsească vulnerabilități diferite. Astfel, tu
este cel mai bine să folosească recenzia umană și o varietate de instrumente. Acest instrument vă poate ajuta să găsiți unele
vulnerabilități, dar în niciun caz toate.

Ar trebui să analizați întotdeauna a copiaţi a programului sursă analizat, nu un director
care poate fi modificat de un dezvoltator în timp ce flawfinder efectuează analiza. Aceasta este
mai ales adevărat dacă nu aveți neapărat încredere într-un dezvoltator al programului analizat.
Dacă un atacator are control asupra fișierelor în timp ce le analizezi, atacatorul ar putea
mutați fișierele sau modificați conținutul acestora pentru a preveni expunerea unei probleme de securitate
(sau creați impresia unei probleme acolo unde nu există). Dacă ești îngrijorat
programatori rău intenționați ar trebui să faceți acest lucru oricum, deoarece după analiză va trebui să faceți acest lucru
verificați dacă codul rulat în cele din urmă este codul pe care l-ați analizat. De asemenea, nu utilizați
--allowlink opțiunea în astfel de cazuri; atacatorii ar putea crea legături simbolice rău intenționate către fișiere
în afara zonei codului sursă (cum ar fi / Etc / passwd).

Sistemele de management al codului sursă (cum ar fi SourceForge și Savannah) se încadrează cu siguranță în acest lucru
categorie; dacă întrețineți unul dintre acele sisteme, mai întâi copiați sau extrageți fișierele în
un director separat (care nu poate fi controlat de atacatori) înainte de a rula flawfinder sau
orice alt instrument de analiză a codului.

Rețineți că flawfinder deschide numai fișiere obișnuite, directoare și (dacă este solicitat) simboluri
link-uri; nu va deschide niciodată alte tipuri de fișiere, chiar dacă se face o legătură simbolică către ele.
Aceasta contracarează atacatorii care introduc tipuri de fișiere neobișnuite în codul sursă. Cu toate acestea, aceasta
funcționează numai dacă sistemul de fișiere analizat nu poate fi modificat de către un atacator în timpul
analiză, conform recomandărilor de mai sus. Această protecție nu funcționează nici pe platformele Cygwin,
din pacate.

Sistemele Cygwin (emulație Unix pe partea de sus a Windows) au o problemă suplimentară dacă flawfinder
este folosit pentru a analiza programe în care analistul nu poate avea încredere. Problema se datorează unui design
defect în Windows (pe care îl moștenește de la MS-DOS). Pe Windows și MS-DOS, anumite nume de fișiere
(de exemplu, ``com1'') sunt tratate automat de sistemul de operare ca nume de
periferice, iar acest lucru este adevărat chiar și atunci când este dat un nume complet de cale. Da, Windows și MS-DOS
într-adevăr sunt proiectate atât de prost. Flawfinder se ocupă de asta verificând ce sistem de fișiere
obiect este și apoi deschide doar directoare și fișiere obișnuite (și legături simbolice dacă sunt activate).
Din păcate, acest lucru nu funcționează pe Cygwin; pe cel puțin unele versiuni de Cygwin pe unele
versiuni de Windows, doar încercarea de a determina dacă un fișier este un tip de dispozitiv poate provoca
program de agățat. O soluție este să ștergeți sau să redenumiți orice nume de fișiere care sunt interpretate
ca nume de dispozitiv înainte de efectuarea analizei. Aceste așa-numite „nume rezervate” sunt
CON, PRN, AUX, CLOCK$, NUL, COM1-COM9 și LPT1-LPT9, urmate opțional de o extensie
(de exemplu, ``com1.txt''), în orice director și în orice caz (Windows nu face distincție între majuscule și minuscule).

Do nu încărcați sau diferențiați listele de rezultate din surse nesigure. Ele sunt implementate folosind
Modulul Python pickle, iar modulul pickle nu este destinat să fie protejat împotriva erorilor
sau date construite cu răutate. Listele de hit-uri stocate sunt destinate utilizării ulterioare de către acesta
utilizatorul care a creat lista de rezultate; în acest context, această restricție nu este o problemă.

Utilizați flawfinder online folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

  • 1
    Phaser
    Phaser
    Phaser este o deschidere rapidă, gratuită și distractivă
    cadru de joc HTML5 sursă care oferă
    Redare WebGL și Canvas
    browsere web desktop și mobile. Jocuri
    poate fi co...
    Descărcați Phaser
  • 2
    Motor VASSAL
    Motor VASSAL
    VASSAL este un motor de joc pentru creare
    versiuni electronice ale plăcii tradiționale
    și jocuri de cărți. Oferă suport pentru
    redarea și interacțiunea pieselor de joc,
    și ...
    Descărcați VASSAL Engine
  • 3
    OpenPDF - Furk of iText
    OpenPDF - Furk of iText
    OpenPDF este o bibliotecă Java pentru creare
    și editarea fișierelor PDF cu un LGPL și
    Licență open source MPL. OpenPDF este
    Succesorul LGPL/MPL open source al iText,
    o ...
    Descărcați OpenPDF - Furk of iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - Sistem pentru automatizare
    Analize Geoștiințifice - este un Geografic
    Sistemul informatic (GIS) software cu
    capacități imense pentru geodate
    procesare și ana...
    Descărcați SAGA GIS
  • 5
    Caseta de instrumente pentru Java/JTOpen
    Caseta de instrumente pentru Java/JTOpen
    IBM Toolbox for Java / JTOpen este un
    biblioteca de clase Java care acceptă
    programare client/server și internet
    modele către un sistem care rulează OS/400,
    i5/OS, o...
    Descărcați Toolbox pentru Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (sau D3 pentru documente bazate pe date)
    este o bibliotecă JavaScript care vă permite
    pentru a produce date dinamice, interactive
    vizualizări în browsere web. Cu D3
    tu...
    Descărcați D3.js
  • Mai mult »

Comenzi Linux

  • 1
    abidiff
    abidiff
    abidiff - comparați ABI-urile fișierelor ELF
    abidiff compară aplicația binară
    Interfețe (ABI) a două biblioteci partajate
    în format ELF. Emite un sens
    repor ...
    Fugi abidiff
  • 2
    abidw
    abidw
    abidw - serializați ABI-ul unui ELF
    fișierul abidw citește o bibliotecă partajată în ELF
    format și emite o reprezentare XML
    a ABI-ului său la ieșirea standard. The
    emis...
    Run abidw
  • 3
    copac2xml
    copac2xml
    bibutils - conversie bibliografie
    utilitati...
    Rulați copac2xml
  • 4
    Copt
    Copt
    copt - optimizator peephole SYSNOPIS:
    fișier copt.. DESCRIERE: copt este a
    optimizator de uz general pentru vizor. Aceasta
    citește codul din intrarea sa standard și
    scrie un...
    Fugi copt
  • 5
    gather_stx_titles
    gather_stx_titles
    gather_stx_titles - aduna titlul
    declarații din documentele Stx...
    Rulați gather_stx_titles
  • 6
    gatling-banc
    gatling-banc
    bench - http benchmark...
    Alerga gatling-bench
  • Mai mult »

Ad