Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

công cụ tìm lỗi - Trực tuyến trên đám mây

Chạy máy tìm lỗ hổng trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là bộ sửa lỗi lệnh có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


người sửa lỗi - từ vựng tìm ra các lỗ hổng bảo mật tiềm ẩn ("lần truy cập") trong mã nguồn

SYNOPSIS


người hoàn thiện [--Cứu giúp|-h] [--phiên bản] [--listrules]
[--allowlink] [--followdotdir] [- liên kết]
[--patch =tên tập tin|-P tên tập tin]
[--đầu vào|-I] [ --minlevel =X | -m X ] [--false positive|-F]
[--không bao giờ bỏ qua|-n]
[--regex =MẪU | -e MẪU]
[--định nghĩa bài văn|-c] [--cột|-C] [--chỉ thông tin|-D] [--html|-H] [--ngay tức khắc|-i]
[--dòng đơn|-S] [--bỏ thời gian] [--Yên lặng|-Q]
[--loadhitlist =F] [--savehitlist =F] [--diffhitlist =F]
[--] [ nguồn hồ sơ or nguồn nguồn gốc thư mục ]+

MÔ TẢ


Flawfinder tìm kiếm thông qua mã nguồn C / C ++ để tìm các lỗ hổng bảo mật tiềm ẩn. Đến
chạy máy dò lỗ hổng, chỉ cần cung cấp cho máy dò lỗ hổng một danh sách các thư mục hoặc tệp. Đối với mỗi thư mục
đã cho, tất cả các tệp có phần mở rộng tên tệp C / C ++ trong thư mục đó (và
thư mục con, đệ quy) sẽ được kiểm tra. Do đó, đối với hầu hết các dự án, chỉ cần đưa ra
xác định lỗ hổng tên của thư mục trên cùng của mã nguồn (sử dụng ``. '' cho hiện tại
thư mục), và công cụ kiểm tra lỗ hổng sẽ kiểm tra tất cả mã nguồn C / C ++ của dự án. nếu bạn
chỉ muốn có thay đổi đã xem xét, lưu một sự khác biệt thống nhất của những thay đổi đó (do GNU tạo
"diff -u" hoặc "svn diff" hoặc "git diff") trong tệp vá và sử dụng tùy chọn --patch (-P).

Flawfinder sẽ đưa ra một danh sách các `` lần truy cập '' (các lỗi bảo mật tiềm ẩn), được sắp xếp theo mức độ rủi ro; các
lần truy cập rủi ro nhất được hiển thị đầu tiên. Mức độ rủi ro được hiển thị bên trong dấu ngoặc vuông và thay đổi
từ 0, rủi ro rất ít, đến 5, rủi ro lớn. Mức độ rủi ro này không chỉ phụ thuộc vào
hàm, nhưng trên các giá trị của các tham số của hàm. Ví dụ, hằng số
các chuỗi thường ít rủi ro hơn các chuỗi hoàn toàn có thể thay đổi trong nhiều ngữ cảnh và trong những
bối cảnh lượt truy cập sẽ có mức độ rủi ro thấp hơn. Flawfinder biết về gettext (một cách phổ biến
thư viện cho các chương trình quốc tế hóa) và sẽ xử lý các chuỗi không đổi được chuyển qua
gettext như thể chúng là các chuỗi không đổi; điều này làm giảm số lần truy cập sai trong
các chương trình quốc tế hóa. Flawfinder sẽ làm điều tương tự với _T () và
_TEXT (), macro Microsoft phổ biến để xử lý các chương trình quốc tế hóa. Kẻ phá bĩnh
chính xác bỏ qua hầu hết văn bản bên trong nhận xét và chuỗi. Thông thường người tìm kiếm hoàn thiện hiển thị tất cả
các lần truy cập với mức rủi ro ít nhất là 1, nhưng bạn có thể sử dụng tùy chọn - cấp độ tối thiểu để chỉ hiển thị
đánh với mức rủi ro cao hơn nếu bạn muốn. Mô tả lượt truy cập cũng lưu ý Điểm chung có liên quan
(Các) định danh Điểm yếu (CWE) trong ngoặc đơn, như được thảo luận bên dưới. Kẻ phá bĩnh
chính thức tương thích với CWE.

Không phải mọi lần truy cập đều là lỗ hổng bảo mật và không phải mọi lỗ hổng bảo mật
nhất thiết phải tìm thấy. Tuy nhiên, máy hoàn thiện có thể là một trợ giúp trong việc tìm kiếm và loại bỏ
lỗ hổng bảo mật. Một cách phổ biến để sử dụng công cụ hoàn thiện là trước tiên áp dụng công cụ hoàn thiện cho
một bộ mã nguồn và kiểm tra các mục có rủi ro cao nhất. Sau đó, sử dụng --inputs để kiểm tra
các vị trí đầu vào và kiểm tra để đảm bảo rằng chỉ các giá trị đầu vào hợp pháp và an toàn mới là
được chấp nhận từ những người dùng không đáng tin cậy.

Khi bạn đã kiểm tra một chương trình, bạn có thể đánh dấu các dòng mã nguồn thực sự tốt nhưng
gây ra các cảnh báo giả để người tìm lỗi sẽ ngừng phàn nàn về chúng. Để đánh dấu một
để những cảnh báo này bị loại bỏ, hãy đặt một nhận xét có định dạng đặc biệt trên
cùng một dòng (sau mã nguồn) hoặc tất cả của chính nó trong dòng trước đó. Lời bình luận
phải có một trong hai định dạng sau:

· // Flawfinder: bỏ qua

· / * Kẻ phá hoại: bỏ qua * /

Vì lợi ích của khả năng tương thích, bạn có thể thay thế "Flawfinder:" bằng "ITS4:" hoặc "RATS:" trong các
nhận xét định dạng đặc biệt. Vì có thể những dòng như vậy bị sai, bạn có thể sử dụng
tùy chọn --neverignore, khiến người tìm kiếm không bao giờ bỏ qua bất kỳ dòng nào bất kể điều gì
các chỉ thị nhận xét nói (khó hiểu hơn, --neverignore bỏ qua các bỏ qua).

Flawfinder sử dụng cơ sở dữ liệu nội bộ được gọi là `` bộ quy tắc ''; bộ quy tắc xác định
các chức năng là nguyên nhân phổ biến của lỗi bảo mật. Bộ quy tắc tiêu chuẩn bao gồm một
số lượng các vấn đề tiềm ẩn khác nhau, bao gồm cả các vấn đề chung có thể ảnh hưởng đến bất kỳ
Chương trình C / C ++, cũng như một số chức năng giống Unix và Windows cụ thể
đặc biệt có vấn đề. Tùy chọn --listrules báo cáo danh sách các quy tắc hiện tại và
mức rủi ro mặc định của họ. Như đã lưu ý ở trên, mọi lỗ hổng bảo mật tiềm ẩn được tìm thấy trong một
tệp mã nguồn (khớp với một mục trong bộ quy tắc) được gọi là `` lần truy cập '' và tập hợp
lượt truy cập được tìm thấy trong bất kỳ lần chạy cụ thể nào của chương trình được gọi là `` danh sách truy cập ''.
có thể được lưu (sử dụng --savehitlist), tải lại để hiển thị lại (sử dụng --loadhitlist) và
bạn chỉ có thể hiển thị các lần truy cập khác với lần chạy khác (sử dụng --diffhitlist).

Flawfinder là một công cụ đơn giản, dẫn đến một số ưu và nhược điểm cơ bản. Flawfinder hoạt động
bằng cách thực hiện mã hóa từ vựng đơn giản (bỏ qua nhận xét và mã hóa chuỗi ký tự chính xác),
tìm kiếm mã thông báo khớp với cơ sở dữ liệu (đặc biệt để tìm các lệnh gọi hàm).
Vì vậy, Flawfinder tương tự như RATS và ITS4, cũng sử dụng mã hóa từ vựng đơn giản.
Sau đó, Flawfinder sẽ kiểm tra văn bản của các tham số hàm để ước tính rủi ro. không giống
các công cụ như nẹp, cờ cảnh báo của gcc, và tiếng kêu, máy dò lỗ hổng không sử dụng hoặc có
truy cập thông tin về luồng điều khiển, luồng dữ liệu hoặc các loại dữ liệu khi tìm kiếm
các lỗ hổng tiềm ẩn hoặc ước tính mức độ rủi ro. Do đó, người hoàn thiện sẽ
nhất thiết phải tạo ra nhiều kết quả dương tính giả cho các lỗ hổng và không báo cáo nhiều
các lỗ hổng. Mặt khác, người sửa lỗi có thể tìm thấy lỗ hổng trong các chương trình
không thể xây dựng hoặc không thể liên kết. Nó thường có thể hoạt động với các chương trình thậm chí không thể
được biên soạn (ít nhất bằng các công cụ của người đánh giá). Flawfinder cũng không bối rối bởi
các định nghĩa vĩ mô và những điều kỳ quặc khác mà các công cụ phức tạp hơn gặp khó khăn.
Flawfinder cũng có thể hữu ích như một phần giới thiệu đơn giản về các công cụ phân tích tĩnh trong
nói chung, vì nó dễ bắt đầu sử dụng và dễ hiểu.

Bất kỳ tên tệp nào được cung cấp trên dòng lệnh sẽ được kiểm tra (ngay cả khi nó không có
C / C ++ phần mở rộng tên tệp); do đó, bạn có thể buộc người kiểm tra lỗ hổng kiểm tra bất kỳ tệp cụ thể nào mà bạn
khao khát. Trong khi tìm kiếm các thư mục một cách đệ quy, công cụ hoàn thiện chỉ mở và kiểm tra
tệp thông thường có phần mở rộng tên tệp C / C ++. Flawfinder cho rằng các tệp
Tệp C / C ++ nếu chúng có phần mở rộng ".c", ".h", ".ec", ".ecp", ".pgc", ".C", ".cpp",
".CPP", ".cxx", ".cc", ".CC", ".pcc", ".hpp" hoặc ".H". Tên tệp `` - '' có nghĩa là
đầu vào chuẩn. Để tránh các sự cố bảo mật, các tệp đặc biệt (chẳng hạn như các tệp đặc biệt của thiết bị
và các đường ống được đặt tên) luôn bị bỏ qua và các liên kết tượng trưng theo mặc định bị bỏ qua (
tùy chọn --allowlink theo sau các liên kết tượng trưng).

Sau danh sách các lần truy cập là một bản tóm tắt ngắn gọn về kết quả (sử dụng -D để loại bỏ phần này
thông tin). Nó sẽ hiển thị số lần truy cập, số dòng được phân tích (theo báo cáo của wc -l) và
các dòng mã nguồn vật lý (SLOC) được phân tích. SLOC vật lý là một SLOC không trống, không
dòng bình luận. Sau đó, nó sẽ hiển thị số lần truy cập ở mỗi cấp độ; lưu ý rằng sẽ có
không bao giờ là một hit ở cấp độ thấp hơn minlevel (1 theo mặc định). Do đó, "[0] 0 [1] 9"
có nghĩa là ở cấp độ 0, có 0 lần truy cập được báo cáo và ở cấp độ 1 có 9 lần truy cập
đã báo cáo. Tiếp theo, nó sẽ hiển thị số lần truy cập ở cấp độ nhất định hoặc lớn hơn (vì vậy cấp độ 3+
có tổng số lần truy cập ở cấp 3, 4 và 5). Do đó, một mục nhập của "[0+] 37"
cho thấy rằng ở cấp 0 hoặc cao hơn, có 37 lần truy cập (mục nhập 0+ sẽ luôn giống nhau
như số "lần truy cập" ở trên). Lần truy cập trên mỗi KSLOC được hiển thị tiếp theo; đây là mỗi "cấp độ hoặc
cao hơn "nhân với 1000 và chia cho SLOC vật lý. Nếu các liên kết tượng trưng là
đã bỏ qua, số lượng trong số đó được báo cáo. Nếu lần truy cập bị chặn (sử dụng "bỏ qua"
chỉ thị trong nhận xét mã nguồn như được mô tả ở trên), số bị chặn được báo cáo.
Mức rủi ro tối thiểu được đưa vào báo cáo được hiển thị; theo mặc định đây là 1
(sử dụng --minlevel để thay đổi điều này). Bản tóm tắt kết thúc với những lời nhắc quan trọng: Không phải mọi lần truy cập
nhất thiết phải là một lỗ hổng bảo mật và có thể có các lỗ hổng bảo mật khác
không được báo cáo bởi công cụ.

Flawfinder được phát hành theo giấy phép GNU GPL phiên bản 2 trở lên (GPLv2 +).

Flawfinder hoạt động tương tự như một chương trình khác, ITS4, không phải là mã nguồn mở hoàn toàn
phần mềm (như được định nghĩa trong Định nghĩa nguồn mở) cũng như phần mềm miễn phí (theo định nghĩa của
Tổ chức phần mềm miễn phí). Tác giả của Flawfinder chưa bao giờ nhìn thấy mã nguồn của ITS4.

Anh Tutorial


Dưới đây là một ví dụ ngắn gọn về cách có thể sử dụng công cụ tìm lỗ hổng. Hãy tưởng tượng rằng bạn có C / C ++
mã nguồn cho một số chương trình có tên xyzzy (bạn có thể đã viết hoặc chưa viết), và
bạn đang tìm kiếm các lỗ hổng bảo mật (vì vậy bạn có thể sửa chúng trước khi khách hàng
gặp phải các lỗ hổng). Đối với hướng dẫn này, tôi sẽ giả sử rằng bạn đang sử dụng Unix-
như hệ thống, chẳng hạn như Linux, OpenBSD hoặc MacOS X.

Nếu mã nguồn nằm trong thư mục con có tên xyzzy, bạn có thể bắt đầu bằng cách mở
cửa sổ văn bản và sử dụng cài đặt mặc định của máy dò lỗ hổng, để phân tích chương trình và báo cáo
danh sách ưu tiên các lỗ hổng bảo mật tiềm ẩn (`` ít hơn '' chỉ đảm bảo
kết quả hiển thị trên màn hình):
người hoàn thiện xyzzy | ít hơn

Tại thời điểm này, bạn sẽ thấy một số lượng lớn các mục nhập. Mỗi mục nhập có một tên tệp, một
dấu hai chấm, số dòng, mức rủi ro trong ngoặc (trong đó 5 là rủi ro cao nhất), danh mục,
tên của chức năng và mô tả lý do tại sao người sửa lỗi cho rằng dòng này là
tính dễ bị tổn thương. Flawfinder thường sắp xếp theo mức độ rủi ro, hiển thị các hạng mục rủi ro nhất trước tiên;
nếu bạn có thời gian hạn chế, có lẽ tốt nhất bạn nên bắt đầu làm việc với những hạng mục rủi ro nhất và
tiếp tục cho đến khi bạn hết thời gian. Nếu bạn muốn hạn chế rủi ro hiển thị chỉ với một
mức rủi ro nhất định hoặc cao hơn, hãy sử dụng tùy chọn --minlevel. Nếu bạn nhận được một
số lượng dương tính giả bất thường bởi vì các tên biến trông giống như nguy hiểm
tên hàm, sử dụng tùy chọn -F để xóa báo cáo về chúng. Nếu bạn không hiểu
thông báo lỗi, vui lòng xem các tài liệu như Writing Bảo mật Khóa Học cho Linux
Unix LÀM THẾ NÀO ĐỂhttp://www.dwheeler.com/secure-programs⟩ tại http://www.dwheeler.com/secure-
chương trình cung cấp thêm thông tin về cách viết các chương trình an toàn.

Khi bạn xác định được vấn đề và hiểu nó, bạn có thể khắc phục nó. Thỉnh thoảng bạn có thể
muốn thực hiện lại phân tích, cả hai vì số dòng sẽ thay đổi để chắc chắn
rằng mã mới chưa giới thiệu một lỗ hổng bảo mật khác.

Nếu bạn đã xác định rằng một số dòng thực sự không phải là vấn đề và bạn chắc chắn về điều đó, bạn có thể
chèn ngay trước hoặc trên dòng vi phạm một nhận xét như
/ * Kẻ phá hoại: bỏ qua * /
để ngăn chúng hiển thị trong đầu ra.

Khi bạn đã hoàn thành việc đó, bạn nên quay lại và tìm kiếm các đầu vào của chương trình, để thực hiện
chắc chắn rằng chương trình sẽ lọc mạnh mẽ bất kỳ đầu vào không đáng tin cậy nào của nó. Kẻ phá hoại có thể
xác định nhiều đầu vào chương trình bằng cách sử dụng tùy chọn --inputs, như sau:
người tìm kiếm lỗi --inputs xyzzy

Flawfinder có thể tích hợp tốt với các trình soạn thảo văn bản và các môi trường phát triển tích hợp;
xem các ví dụ để biết thêm thông tin.

Flawfinder bao gồm nhiều tùy chọn khác, bao gồm cả những tùy chọn để tạo phiên bản HTML của
đầu ra (hữu ích cho màn hình đẹp hơn). Phần tiếp theo mô tả các tùy chọn đó trong nhiều hơn
chi tiết.

LỰA CHỌN


Flawfinder có một số tùy chọn, có thể được nhóm lại thành các tùy chọn kiểm soát
tài liệu, chọn dữ liệu đầu vào, chọn lượt truy cập để hiển thị, chọn định dạng đầu ra,
và thực hiện quản lý danh sách truy cập. Flawfinder hỗ trợ cú pháp tiêu chuẩn được xác định trong
Phần `` Quy ước Tiện ích '' của POSIX (Ấn bản 7, 2013). Nó cũng hỗ trợ GNU
tùy chọn dài (tùy chọn dấu gạch ngang đôi của biểu mẫu -tùy chọn) như được định nghĩa trong GNU C Thư viện
Tài liệu tham khảo Hướng dẫn sử dụng `` Quy ước cú pháp đối số chương trình '' và GNU Lập trình Tiêu chuẩn
`` Tiêu chuẩn cho giao diện dòng lệnh ''. Đối số tùy chọn dài có thể được cung cấp dưới dạng
`` --name = value '' hoặc `` -name value ''. Một số tùy chọn chỉ có thể được truy cập bằng cách sử dụng
quy ước tùy chọn dài GNU có thể đọc được; các tùy chọn chung cũng được hỗ trợ bởi
quy ước quyền chọn một chữ cái.

Tài liệu
--Cứu giúp

-h Hiển thị thông tin sử dụng (trợ giúp).

--phiên bản Hiển thị (chỉ) số phiên bản và số lần thoát.

--listrules Liệt kê các thuật ngữ (mã thông báo) kích hoạt kiểm tra thêm, rủi ro mặc định của chúng
và cảnh báo mặc định (bao gồm (các) số nhận dạng CWE, nếu
áp dụng), tất cả được phân tách bằng tab. Các điều khoản chủ yếu là tên của
các chức năng nguy hiểm. Lưu ý rằng mức độ rủi ro được báo cáo và cảnh báo đối với một số
mã cụ thể có thể khác với mã mặc định, tùy thuộc vào cách thuật ngữ
được sử dụng. Kết hợp với -D nếu bạn không muốn tiêu đề thông thường. Kẻ phá bĩnh
phiên bản 1.29 đã thay đổi dấu phân cách từ dấu cách thành tab và thêm giá trị mặc định
trường cảnh báo.

Chọn Đầu vào Ngày
--allowlink Cho phép sử dụng các liên kết tượng trưng; thông thường các liên kết tượng trưng bị bỏ qua. Đừng
sử dụng tùy chọn này nếu bạn đang phân tích mã bởi người khác; những kẻ tấn công có thể làm nhiều
những thứ có thể gây ra sự cố cho một phân tích với tùy chọn này được bật. Vì
ví dụ, kẻ tấn công có thể chèn các liên kết tượng trưng vào các tệp như / etc / passwd
(rò rỉ thông tin về tệp) hoặc tạo một vòng lặp tròn, điều này sẽ
khiến lỗi chạy `` mãi mãi ''. Một vấn đề khác khi bật tính năng này
tùy chọn là nếu cùng một tệp được tham chiếu nhiều lần bằng cách sử dụng biểu tượng
liên kết, nó sẽ được phân tích nhiều lần (và do đó được báo cáo nhiều lần).
Lưu ý rằng máy tìm lỗ hổng đã bao gồm một số biện pháp bảo vệ chống lại các liên kết tượng trưng
thành các loại tệp đặc biệt, chẳng hạn như loại tệp thiết bị (ví dụ: / dev / zero hoặc
C: \ mystuff \ com1). Lưu ý rằng đối với phiên bản máy hoàn thiện 1.01 trở về trước, đây là
mặc định.

--followdotdir
Nhập các thư mục có tên bắt đầu bằng ".". Thông thường các thư mục như vậy là
bị bỏ qua, vì chúng thường bao gồm dữ liệu riêng tư kiểm soát phiên bản (chẳng hạn như
.git / hoặc .svn /), cấu hình, v.v.

- liên kết Làm ngơ. Trong lịch sử, điều này đã vô hiệu hóa các liên kết tượng trưng sau đây; hành vi này
bây giờ là mặc định.

--patch =tập tin vá lỗi

-P tập tin vá lỗi
Kiểm tra các tệp hoặc thư mục đã chọn, nhưng chỉ báo cáo lần truy cập trong các dòng
được thêm vào hoặc sửa đổi bởi tệp bản vá đã cho. Tệp vá lỗi phải ở trong
định dạng khác biệt thống nhất được công nhận (ví dụ: đầu ra của GNU "diff -u cũ mới",
"svn diff" hoặc "git diff [commit]"). Flawfinder giả định rằng bản vá có
đã được áp dụng cho các tệp. Tệp vá lỗi cũng có thể bao gồm các thay đổi đối với
các tệp không liên quan (đơn giản là chúng sẽ bị bỏ qua). Các số dòng được đưa ra trong
tệp vá được sử dụng để xác định dòng nào đã được thay đổi, vì vậy nếu bạn có
đã sửa đổi các tệp kể từ khi tệp vá được tạo, tạo lại tệp vá
đầu tiên. Hãy lưu ý rằng tên tệp của các tệp mới được cung cấp trong tệp vá
phải khớp chính xác, bao gồm cả chữ hoa / chữ thường, tiền tố đường dẫn và thư mục
dấu phân tách (\ so với /). Chỉ định dạng khác biệt thống nhất được chấp nhận (GNU diff, svn
diff, và đầu ra git diff là được); nếu bạn có một định dạng khác, một lần nữa
tái tạo nó trước. Chỉ các lần truy cập xảy ra trên các dòng được thay đổi kết quả hoặc
ngay trên và dưới chúng, được báo cáo. Tùy chọn này ngụ ý
--không bao giờ bỏ qua.

Chọn Số lượt truy cập đến Giao diện
--đầu vào

-I Chỉ hiển thị các hàm lấy dữ liệu từ bên ngoài chương trình; cái này cũng đặt
mức tối thiểu đến 0.

--minlevel =X

-m X Đặt mức rủi ro tối thiểu thành X để đưa vào danh sách truy cập. Đây có thể là từ 0 (`` không
rủi ro '') đến 5 (`` rủi ro tối đa ''); mặc định là 1.

--false positive

-F Không bao gồm các lần truy cập có khả năng là kết quả dương tính giả. Hiện tại, điều này có nghĩa là
tên hàm đó sẽ bị bỏ qua nếu chúng không được theo sau bởi "(" và rằng
khai báo mảng ký tự không được ghi chú. Do đó, nếu bạn đã sử dụng một biến
được đặt tên là "quyền truy cập" ở mọi nơi, điều này sẽ loại bỏ các tham chiếu đến thông thường này
Biến đổi. Đây không phải là mặc định, vì điều này cũng làm tăng khả năng
bỏ lỡ những cú đánh quan trọng; cụ thể là tên hàm trong các mệnh đề và lệnh gọi #define
thông qua các con trỏ hàm sẽ bị bỏ sót.

--không bao giờ bỏ qua

-n Không bao giờ bỏ qua các vấn đề bảo mật, ngay cả khi chúng có chỉ thị `` bỏ qua '' trong
bình luận.

--regexp =MẪU

-e MẪU
Chỉ báo cáo lần truy cập có văn bản phù hợp với mẫu biểu thức chính quy PATTERN.
Ví dụ: để chỉ báo cáo lần truy cập có chứa văn bản "CWE-120", hãy sử dụng `` --regex
CWE-120 ''. Các tên cờ tùy chọn này giống như grep.

Chọn Đầu ra Định dạng
--cột

-C Hiển thị số cột (cũng như tên tệp và số dòng) của mỗi lần truy cập;
điều này được hiển thị sau số dòng bằng cách thêm dấu hai chấm và số cột trong
dòng (ký tự đầu tiên trong dòng là cột số 1). Cái này hữu ích
cho các trình chỉnh sửa có thể chuyển đến các cột cụ thể hoặc để tích hợp với các
các công cụ (chẳng hạn như những công cụ để lọc thêm các kết quả dương tính giả).

--định nghĩa bài văn

-c Hiển thị ngữ cảnh, tức là dòng có lỗ hổng "hit" / tiềm năng. Theo mặc định,
dòng được hiển thị ngay sau cảnh báo.

--chỉ thông tin

-D Không hiển thị đầu trang và chân trang. Sử dụng cái này cùng với --quiet để xem chỉ
dữ liệu của chính nó.

--html

-H Định dạng đầu ra dưới dạng HTML thay vì dưới dạng văn bản đơn giản.

--ngay tức khắc

-i Hiển thị ngay lượt truy cập (không chỉ đợi cho đến khi kết thúc).

--dòng đơn

-S Hiển thị dưới dạng một dòng văn bản đầu ra cho mỗi lần truy cập. Hữu ích để tương tác
với các công cụ biên dịch.

--bỏ thời gian Bỏ qua thông tin thời gian. Điều này rất hữu ích cho các bài kiểm tra hồi quy của máy tìm lỗ hổng
chính nó, do đó đầu ra không thay đổi tùy thuộc vào thời gian phân tích
nhận.

--Yên lặng

-Q Không hiển thị thông tin trạng thái (tức là tệp nào đang được kiểm tra) trong khi
phân tích đang diễn ra.

Danh sách hit Quản lý
--savehitlist =F
Lưu tất cả các lần truy cập kết quả ("danh sách truy cập") vào F.

--loadhitlist =F
Tải danh sách hit từ F thay vì phân tích các chương trình nguồn. Cảnh báo: Làm không
tải danh sách truy cập từ các nguồn không đáng tin cậy (vì lý do bảo mật).

--diffhitlist =F
Chỉ hiển thị các lần truy cập (được tải hoặc phân tích) không có trong F. F có lẽ đã được tạo
trước đây đã sử dụng --savehitlist. Cảnh báo: Làm không danh sách hit khác với không đáng tin cậy
nguồn (vì lý do bảo mật). Nếu tùy chọn --loadhitlist không được cung cấp,
điều này sẽ hiển thị các lần truy cập trong các tệp mã nguồn được phân tích không
trước đó được lưu trữ trong F. Nếu được sử dụng cùng với --loadhitlist, điều này sẽ hiển thị
lần truy cập trong danh sách truy cập đã tải không ở F. Thuật toán khác biệt là
thận trọng; lượt truy cập chỉ được coi là `` giống nhau '' nếu chúng có cùng
tên tệp, số dòng, vị trí cột, tên chức năng và mức độ rủi ro.

VÍ DỤ


Dưới đây là các ví dụ khác nhau về cách gọi bộ dò tìm lỗ hổng. Các ví dụ đầu tiên cho thấy nhiều
các tùy chọn dòng lệnh đơn giản. Flawfinder được thiết kế để hoạt động tốt với các trình soạn thảo văn bản và
môi trường phát triển tích hợp, vì vậy các phần tiếp theo sẽ trình bày cách tích hợp bộ lọc lỗ hổng
vào vim và emacs.

Đơn giản dòng lệnh lựa chọn
người hoàn thiện /usr/src/linux-3.16
Kiểm tra tất cả các tệp C / C ++ trong thư mục /usr/src/linux-3.16 và tất cả
thư mục con (đệ quy), báo cáo về tất cả các lần truy cập được tìm thấy. Theo mặc định
người hoàn thiện sẽ bỏ qua các liên kết tượng trưng và thư mục có tên bắt đầu bằng
một khoảng thời gian.

người hoàn thiện --minlevel = 4 .
Kiểm tra tất cả các tệp C / C ++ trong thư mục hiện tại và các thư mục con của nó
(đệ quy); chỉ báo cáo các lỗ hổng ở cấp độ 4 trở lên (hai lỗ hổng cao nhất
mức độ rủi ro).

người hoàn thiện --đầu vào mydir
Kiểm tra tất cả các tệp C / C ++ trong mydir và các thư mục con của nó (đệ quy), và
báo cáo các hàm nhận đầu vào (để bạn có thể đảm bảo rằng chúng lọc
đầu vào một cách thích hợp).

người hoàn thiện --không bao giờ bỏ qua mydir
Kiểm tra tất cả các tệp C / C ++ trong thư mục mydir và các thư mục con của nó,
bao gồm cả những lần truy cập được đánh dấu để bỏ qua trong các bình luận mã.

người hoàn thiện -QĐ mydir
Kiểm tra mydir và chỉ báo cáo kết quả thực tế (xóa tiêu đề và
footer của đầu ra). Biểu mẫu này hữu ích nếu đầu ra sẽ được chuyển vào
các công cụ khác để phân tích sâu hơn. -C (--cột) và -S (--mạch)
các tùy chọn cũng có thể hữu ích nếu bạn đang chuyển dữ liệu vào các công cụ khác.

người hoàn thiện -QĐSC mydir
Kiểm tra mydir, chỉ báo cáo kết quả thực tế (không có đầu trang hoặc chân trang). Mỗi
lần truy cập được báo cáo trên một dòng và số cột được báo cáo. Đây có thể là một
lệnh hữu ích nếu bạn đang cung cấp đầu ra của máy dò lỗ hổng cho các công cụ khác.

người hoàn thiện --Yên lặng --html --định nghĩa bài văn mydir > kết quả.html
Kiểm tra tất cả các tệp C / C ++ trong thư mục mydir và các thư mục con của nó, và
tạo ra một phiên bản kết quả được định dạng HTML. Quản lý mã nguồn
hệ thống (chẳng hạn như SourceForge và Savannah) có thể sử dụng lệnh như thế này.

người hoàn thiện --Yên lặng --savehitlist save.hits *. [ch]
Kiểm tra tất cả các tệp .c và .h trong thư mục hiện tại. Không báo cáo về
trạng thái xử lý và lưu danh sách truy cập kết quả (tập hợp tất cả các lần truy cập) trong
tệp đã lưu .hits.

người hoàn thiện --diffhitlist save.hits *. [ch]
Kiểm tra tất cả các tệp .c và .h trong thư mục hiện tại và hiển thị bất kỳ lần truy cập nào
chưa có trong tệp save.hits. Điều này có thể được sử dụng để chỉ hiển thị
lỗ hổng bảo mật `` mới '' trong một chương trình đã sửa đổi, nếu được lưu. lỗ hổng được tạo từ
phiên bản cũ hơn của chương trình đang được phân tích.

người hoàn thiện --vá gần đây.patch .
Kiểm tra thư mục hiện tại một cách đệ quy, nhưng chỉ báo cáo các dòng đã
đã thay đổi hoặc thêm vào tệp bản vá đã được áp dụng có tên gần đây.patch.

người hoàn thiện --regex "CWE-120 | CWE-126" src /
Kiểm tra thư mục src đệ quy, nhưng chỉ báo cáo lần truy cập trong đó CWE-120 hoặc
CWE-126 áp dụng.

Kêu gọi từ khí lực
Vim của trình soạn thảo văn bản bao gồm cơ chế "sửa lỗi nhanh" hoạt động tốt với trình sửa lỗi, vì vậy
mà bạn có thể dễ dàng xem các thông báo cảnh báo và chuyển đến mã nguồn có liên quan.

Đầu tiên, bạn cần gọi công cụ tìm kiếm lỗi để tạo danh sách các lần truy cập và có hai cách để
làm cái này. Cách đầu tiên là khởi động máy tìm lỗ hổng trước, sau đó (sử dụng đầu ra của nó) gọi
khí lực. Cách thứ hai là bắt đầu (hoặc tiếp tục chạy) vim, và sau đó gọi bộ dò tìm lỗi
(thường là từ bên trong vim).

Đối với cách đầu tiên, hãy chạy công cụ tìm lỗ hổng và lưu trữ đầu ra của nó trong một số FLAWFILE (giả sử "tập tin lỗ hổng"),
sau đó gọi vim bằng cách sử dụng tùy chọn -q của nó, như sau: "vim -q lỗ hổng". Cách thứ hai
(bắt đầu hoàn thiện sau khi bắt đầu vim) có thể được thực hiện theo nhiều cách. Một là để gọi
lỗi sử dụng lệnh shell, ":! perffinder-command> FLAWFILE", sau đó làm theo lệnh đó với
lệnh ": cf FLAWFILE". Một cách khác là lưu trữ lệnh sửa lỗi trong
makefile (ví dụ, một lệnh giả như "lỗ hổng"), và sau đó chạy ": tạo lỗ hổng".

Trong tất cả những trường hợp này, bạn cần một lệnh để máy hoàn thiện chạy. Một lệnh hợp lý,
đặt mỗi lượt truy cập vào dòng riêng (-S) và xóa đầu trang và chân trang có thể gây nhầm lẫn
nó là:

người hoàn thiện -SQĐ .

Bây giờ bạn có thể sử dụng các lệnh chỉnh sửa khác nhau để xem kết quả. Lệnh ": cn" hiển thị
cú đánh tiếp theo; ": cN" hiển thị lần truy cập trước đó và ": cr" tua lại lần truy cập đầu tiên.
": copen" sẽ mở một cửa sổ để hiển thị danh sách các lần truy cập hiện tại, được gọi là "quickfix
window ";": cclose "sẽ đóng cửa sổ Quickfix. Nếu bộ đệm trong cửa sổ được sử dụng có
đã thay đổi, và lỗi nằm trong tệp khác, việc chuyển đến lỗi sẽ không thành công. Bạn phải
đảm bảo cửa sổ chứa bộ đệm có thể bị bỏ qua trước khi cố gắng chuyển đến
tệp mới, giả sử bằng cách lưu tệp; điều này ngăn ngừa mất dữ liệu ngẫu nhiên.

Kêu gọi từ emacs
Trình soạn thảo văn bản / emac của hệ điều hành bao gồm "chế độ grep" và "chế độ biên dịch"
các cơ chế hoạt động tốt với bộ lọc lỗ hổng, giúp dễ dàng xem các thông báo cảnh báo, nhảy
vào mã nguồn có liên quan và khắc phục bất kỳ sự cố nào bạn tìm thấy.

Đầu tiên, bạn cần gọi bộ dò tìm lỗ hổng để tạo danh sách các thông báo cảnh báo. Bạn có thể dùng
"chế độ grep" hoặc "chế độ biên dịch" để tạo danh sách này. Thường thì "chế độ grep" thuận tiện hơn;
nó để nguyên chế độ biên dịch để bạn có thể dễ dàng biên dịch lại sau khi đã thay đổi
thứ gì đó. Tuy nhiên, nếu bạn muốn chuyển đến vị trí cột chính xác của một lần truy cập, hãy biên dịch
chế độ này có thể thuận tiện hơn vì emacs có thể sử dụng đầu ra cột của bộ lọc khuyết tật để
trực tiếp chuyển đến đúng vị trí mà không cần bất kỳ cấu hình đặc biệt nào.

Để sử dụng chế độ grep, hãy nhập lệnh "Mx grep" và sau đó nhập bộ tìm lỗ hổng cần thiết
yêu cầu. Để sử dụng chế độ biên dịch, hãy nhập lệnh "Biên dịch Mx" và nhập
lệnh hoàn thiện. Đây là lệnh meta-key, vì vậy bạn sẽ cần sử dụng meta key cho
bàn phím của bạn (đây thường là phím ESC). Như với tất cả các lệnh emacs, bạn sẽ cần
nhấn RETURN sau khi gõ "grep" hoặc "compile". Vì vậy, trên nhiều hệ thống, chế độ grep là
được gọi bằng cách gõ ESC xgrep RETURN.

Sau đó, bạn cần nhập một lệnh, xóa bất kỳ thứ gì đã có trước đó nếu cần. MỘT
lệnh hợp lý là:

người hoàn thiện -SQĐC .

Lệnh này làm cho mỗi lần truy cập báo cáo một dòng duy nhất, điều này dễ dàng hơn nhiều cho các công cụ
xử lý. Các tùy chọn yên tĩnh và chỉ dữ liệu loại bỏ thông tin trạng thái khác không cần thiết cho
sử dụng bên trong emacs. Dấu chấm có nghĩa là thư mục hiện tại và tất cả
phần tử con được tìm kiếm mã C / C ++ và phân tích các sai sót.

Một khi bạn đã gọi ra công cụ hoàn thiện, bạn có thể sử dụng emacs để xem kết quả của nó. Các
lệnh Cx `(Control-x backtick) truy cập vị trí mã nguồn cho cảnh báo tiếp theo
nhắn. Cu Cx `(control-u control-x backtick) khởi động lại từ đầu. Bạn có thể
truy cập nguồn cho bất kỳ thông báo lỗi cụ thể nào bằng cách chuyển đến thông báo lần truy cập đó trong
* biên dịch * bộ đệm hoặc bộ đệm * grep * và gõ phím quay lại. (Lưu ý kỹ thuật: trong
bộ đệm biên dịch, điều này gây ra lỗi biên dịch.) Bạn cũng có thể nhấp vào Chuột-2
trên thông báo lỗi (trước tiên bạn không cần phải chuyển sang bộ đệm * biên dịch *).

Nếu bạn muốn sử dụng chế độ grep để chuyển đến các cột cụ thể của một lần truy cập, bạn sẽ cần
đặc biệt cấu hình emacs để làm điều này. Để thực hiện việc này, hãy sửa đổi biến emacs "grep-regexp-
alist ". Biến này cho Emacs biết cách phân tích cú pháp đầu ra của lệnh" grep ", tương tự như
biến "compilation-error-regexp-alist" liệt kê các định dạng khác nhau của lỗi biên dịch
tin nhắn.

Kêu gọi từ Tích hợp Phát triển Môi trường (IDE)
Đối với IDE (khác), hãy tham khảo tập hợp các trình cắm thêm của IDE của bạn.

CHUNG YẾU ĐUỐI NĂNG LƯỢNG (CWE)


Bảng kê điểm yếu chung (CWE) là `` một danh sách chính thức hoặc từ điển của phần mềm phổ biến
những điểm yếu có thể xảy ra trong kiến ​​trúc, thiết kế, mã hoặc triển khai của phần mềm
có thể dẫn đến các lỗ hổng bảo mật có thể khai thác được ... được tạo ra để phục vụ như một ngôn ngữ chung
để mô tả các điểm yếu bảo mật của phần mềm '' (http://cwe.mitre.org/about/faq.html). Dành cho
thêm thông tin về CWE, xem http://cwe.mitre.org.

Flawfinder hỗ trợ CWE và chính thức tương thích với CWE. Nhấn vào mô tả thường
bao gồm một mã định danh Liệt kê Điểm Yếu Chung (CWE) có liên quan trong dấu ngoặc đơn ở đó
được biết đến là một CWE có liên quan. Ví dụ: nhiều lượt truy cập liên quan đến bộ đệm đề cập đến
CWE-120, mã định danh CWE cho `` bản sao bộ đệm mà không cần kiểm tra kích thước đầu vào '' (hay còn gọi là
`` Tràn bộ đệm cổ điển ''). Trong một số trường hợp, nhiều số nhận dạng CWE có thể được liệt kê.
Báo cáo HTML cũng bao gồm các liên kết siêu văn bản đến các định nghĩa CWE được lưu trữ tại MITER. Trong
theo cách này, máy đo khuyết tật được thiết kế để đáp ứng yêu cầu Đầu ra của CWE.

Nhiều CWE được báo cáo bởi người hoàn thiện được xác định trong danh sách 25 CWE / SANS 2011
(http://cwe.mitre.org/top25/). Nhiều người sẽ muốn tìm kiếm CWE trong danh sách này,
chẳng hạn như CWE-120 (tràn bộ đệm cổ điển), Khi máy dò khuyết tật ánh xạ tới một CWE
chung chung hơn 25 mục hàng đầu, nó liệt kê nó dưới dạng tổng quát hơn: cụ thể hơn (ví dụ:
CWE-119: CWE-120), trong đó tổng quát hơn là ánh xạ thực tế. Nếu người tìm lỗi ánh xạ đến một
mặt hàng CWE cụ thể là một trường hợp cụ thể của 25 mặt hàng hàng đầu, nó được liệt kê trong biểu mẫu
top-25 / cụ thể hơn (ví dụ: CWE-362 / CWE-367), trong đó ánh xạ thực càng cụ thể hơn
Mục nhập CWE. Nếu cùng một mục nhập ánh xạ tới nhiều CWE, các CWE được phân tách bằng dấu phẩy
(điều này thường xảy ra với CWE-20, Xác thực đầu vào không đúng). Điều này đơn giản hóa việc tìm kiếm
một số CWE.

CWE phiên bản 2.7 (phát hành ngày 23 tháng 2014 năm XNUMX) đã được sử dụng để lập bản đồ. CWE hiện tại
ánh xạ chọn CWE cụ thể nhất mà công cụ có thể xác định. Về lý thuyết, hầu hết CWE
các yếu tố bảo mật (chữ ký / mẫu mà công cụ tìm kiếm) về mặt lý thuyết có thể là
được ánh xạ tới CWE-676 (Sử dụng Chức năng Có thể Nguy hiểm), nhưng ánh xạ như vậy sẽ không
có ích. Do đó, các ánh xạ cụ thể hơn được ưu tiên ở những nơi có thể tìm thấy. Kẻ phá bĩnh
là một công cụ phân tích từ vựng; kết quả là nó không thực tế nếu nó cụ thể hơn
các ánh xạ hiện được triển khai. Điều này cũng có nghĩa là không cần nhiều
cập nhật tiền tệ cho bản đồ; nó chỉ đơn giản là không có đủ thông tin để tinh chỉnh
mức CWE chi tiết mà các thay đổi CWE thường ảnh hưởng. Danh sách các số nhận dạng CWE
được tạo tự động bằng cách sử dụng "make show-cwes", vì vậy, có thể tin tưởng rằng danh sách này
đúng. Vui lòng báo cáo sự cố lập bản đồ CWE dưới dạng lỗi nếu bạn tìm thấy bất kỳ lỗi nào.

Kẻ phá lỗi có thể không tìm thấy lỗ hổng, ngay cả khi kẻ phá lỗi che một trong những CWE này
những điểm yếu. Điều đó nói rằng, người tìm ra lỗ hổng bảo mật được liệt kê bởi CWE mà nó bao gồm,
và nó sẽ không báo cáo các dòng không có các lỗ hổng đó trong nhiều trường hợp. Vì vậy, như
cần thiết cho bất kỳ công cụ nào có ý định tương thích với CWE, máy dò khuyết tật có tỷ lệ sai
dương tính dưới 100% và tỷ lệ âm tính giả dưới 100%. Kẻ hoàn thiện gần như
luôn báo cáo bất cứ khi nào nó tìm thấy sự phù hợp với phần tử bảo mật CWE (một chữ ký / mẫu như
được xác định trong cơ sở dữ liệu của nó), mặc dù một số cấu trúc tối nghĩa có thể khiến nó không thành công (xem BUGS
dưới đây).

Kẻ phạm lỗi có thể báo cáo về các CWE sau (đây là những CWE mà kẻ phạm lỗi che đậy;
`` * '' đánh dấu những người trong danh sách 25 hàng đầu của CWE / SANS):

· CWE-20: Xác thực đầu vào không đúng

· CWE-22: Giới hạn sai tên đường dẫn đối với thư mục bị hạn chế (`` Truyền dẫn đường dẫn '')

· CWE-78: Trung hòa không đúng các yếu tố đặc biệt được sử dụng trong lệnh hệ điều hành (`` Lệnh hệ điều hành
Mũi tiêm'')*

· CWE-119: Hạn chế Hoạt động Không đúng trong Giới hạn của Bộ đệm Bộ nhớ (a
cha của CWE-120 *, vì vậy điều này được hiển thị là CWE-119: CWE-120)

· CWE-120: Sao chép bộ đệm mà không cần kiểm tra kích thước đầu vào (`` Tràn bộ đệm cổ điển '') *

· CWE-126: Đọc quá bộ đệm

· CWE-134: Chuỗi định dạng không được kiểm soát *

· CWE-190: Tràn số nguyên hoặc Bao vây *

· CWE-250: Thực thi với các đặc quyền không cần thiết

· CWE-327: Sử dụng thuật toán mật mã bị hỏng hoặc rủi ro *

· CWE-362: Thực thi đồng thời bằng cách sử dụng tài nguyên được chia sẻ với đồng bộ hóa không phù hợp
(`` Điều kiện cuộc đua '')

· CWE-377: Tệp tạm thời không an toàn

· CWE-676: Sử dụng chức năng có thể nguy hiểm *

· CWE-732: Chuyển nhượng quyền không chính xác cho tài nguyên quan trọng *

· CWE-785: Sử dụng Chức năng Thao tác Đường dẫn mà không có Bộ đệm Kích thước Tối đa (con của
CWE-120 *, vì vậy nó được hiển thị là CWE-120 / CWE-785)

· CWE-807: Phụ thuộc vào các đầu vào không đáng tin cậy trong một quyết định bảo mật *

· CWE-829: Bao gồm chức năng từ không gian điều khiển không tin cậy *

Bạn có thể chọn một tập hợp con CWE cụ thể để báo cáo bằng cách sử dụng tùy chọn `` --regex '' (-e).
Tùy chọn này chấp nhận một biểu thức chính quy, vì vậy bạn có thể chọn nhiều CWE, ví dụ: `` --regex
"CWE-120 | CWE-126" ''. Nếu bạn chọn nhiều CWE với dấu `` | '' trên một dòng lệnh, bạn sẽ
thường cần phải trích dẫn các tham số (vì ký hiệu `` | '' không được trích dẫn là ký hiệu ống dẫn).
Flawfinder được thiết kế để đáp ứng yêu cầu CWE-Searchable.

Nếu mục tiêu của bạn là báo cáo một tập hợp con các CWE được liệt kê trong một tệp, điều đó có thể đạt được
trên hệ thống giống Unix bằng cách sử dụng tùy chọn `` --regex '' hay còn gọi là `` -e ''. Tệp phải ở
định dạng biểu thức chính quy. Ví dụ: `` lỗ hổng -e $ (cat file1) '' sẽ chỉ báo cáo
lần truy cập phù hợp với mẫu trong `` file1 ''. Nếu file1 chứa `` CWE-120 | CWE-126 '' thì nó
sẽ chỉ báo cáo các lần truy cập phù hợp với các CWE đó.

Danh sách tất cả các yếu tố bảo mật của CWE (các chữ ký / mẫu mà thợ sửa lỗi tìm kiếm)
có thể được tìm thấy bằng cách sử dụng tùy chọn `` --listrules ''. Mỗi dòng liệt kê mã thông báo chữ ký
(thường là tên hàm) có thể dẫn đến một lần truy cập, mức rủi ro mặc định và
cảnh báo mặc định (bao gồm mã định danh CWE mặc định). Đối với hầu hết các mục đích, đây là
cũng đủ nếu bạn muốn xem những yếu tố bảo mật CWE nào ánh xạ tới những CWE nào, hoặc
đảo ngược. Ví dụ: để xem hầu hết các chữ ký (tên hàm) ánh xạ tới
CWE-327, mà không thấy mức độ rủi ro mặc định hoặc văn bản cảnh báo chi tiết, hãy chạy `` máy tìm kiếm lỗi
--listrules | grep CWE-327 | cắt -f1 ''. Bạn cũng có thể thấy các mã thông báo mà không cần ánh xạ CWE
theo cách này bằng cách chạy `` perfectfinder -D --listrules | grep -v CWE- ''. Tuy nhiên, trong khi
--listrules liệt kê tất cả các phần tử bảo mật CWE, nó chỉ liệt kê các ánh xạ mặc định từ CWE
các yếu tố bảo mật đối với số nhận dạng CWE. Nó không bao gồm các sàng lọc mà người hoàn thiện
áp dụng (ví dụ: bằng cách kiểm tra các tham số chức năng).

Nếu bạn muốn ánh xạ chi tiết và chính xác giữa các yếu tố bảo mật CWE và CWE
mã nhận dạng, mã nguồn của người sửa lỗi (được bao gồm trong bản phân phối) là nơi tốt nhất
cho thông tin đó. Thông tin chi tiết này chủ yếu quan tâm đến những
những người đang cố gắng tinh chỉnh ánh xạ CWE của người tìm lỗi hoặc tinh chỉnh CWE nói chung.
Mã nguồn lập tài liệu ánh xạ giữa các phần tử bảo mật tới CWE tương ứng
số nhận dạng và là một tệp Python duy nhất. Tập dữ liệu `` c_rules '' xác định hầu hết các quy tắc,
với tham chiếu đến một chức năng có thể thực hiện các cải tiến thêm. Bạn có thể tìm kiếm
tập dữ liệu cho các tên hàm để xem nó tạo ra CWE gì theo mặc định; nếu tham số đầu tiên là
không phải là `` bình thường '' thì đó là tên của một phương thức Python tinh chỉnh có thể chọn
CWE (tùy thuộc vào thông tin bổ sung). Ngược lại, bạn có thể tìm kiếm `` số CWE ''
và tìm các yếu tố bảo mật (chữ ký hoặc mẫu) tham chiếu đến mã định danh CWE đó.
Đối với hầu hết mọi người, đây là nhiều hơn những gì họ cần; hầu hết mọi người chỉ muốn quét
mã nguồn để nhanh chóng tìm ra vấn đề.

AN NINH


Toàn bộ điểm của công cụ này là giúp tìm ra các lỗ hổng để chúng có thể được sửa chữa.
Tuy nhiên, các nhà phát triển và người đánh giá phải biết cách phát triển phần mềm an toàn để sử dụng
công cụ, bởi vì nếu không, a đánh lừa với a công cụ is vẫn còn a đánh lừa. Sách của tôi tại
http://www.dwheeler.com/secure-programs có thể giúp.

Công cụ này ít nhất phải là một phần nhỏ của quy trình phát triển phần mềm lớn hơn
được thiết kế để loại bỏ hoặc giảm tác động của các lỗ hổng. Nhà phát triển và người đánh giá
cần biết cách phát triển phần mềm an toàn và họ cần áp dụng kiến ​​thức này để giảm
những rủi ro về lỗ hổng bảo mật ngay từ đầu.

Các công cụ tìm lỗ hổng khác nhau có xu hướng tìm ra các lỗ hổng khác nhau. Vì vậy, bạn
tốt nhất nên sử dụng đánh giá của con người và nhiều công cụ khác nhau. Công cụ này có thể giúp tìm một số
lỗ hổng, nhưng không có nghĩa là tất cả.

Bạn nên luôn luôn phân tích một bản sao của chương trình nguồn đang được phân tích, không phải là một thư mục
có thể được nhà phát triển sửa đổi trong khi người tìm lỗi đang thực hiện phân tích. Đây là
đặc biệt đúng nếu bạn không cần thiết phải tin tưởng một nhà phát triển của chương trình đang được phân tích.
Nếu kẻ tấn công có quyền kiểm soát các tệp trong khi bạn đang phân tích chúng, kẻ tấn công có thể
di chuyển các tệp xung quanh hoặc thay đổi nội dung của chúng để ngăn chặn sự xuất hiện của sự cố bảo mật
(hoặc tạo ấn tượng về một vấn đề không có). Nếu bạn lo lắng về
những lập trình viên độc hại thì bạn cũng nên làm điều này, vì sau khi phân tích, bạn sẽ cần phải
xác minh rằng mã cuối cùng chạy là mã bạn đã phân tích. Ngoài ra, không sử dụng
- tùy chọn liên kết trong những trường hợp như vậy; những kẻ tấn công có thể tạo các liên kết tượng trưng độc hại đến các tệp
bên ngoài vùng mã nguồn của họ (chẳng hạn như / etc / passwd).

Hệ thống quản lý mã nguồn (như SourceForge và Savannah) chắc chắn rơi vào trường hợp này
thể loại; nếu bạn đang duy trì một trong những hệ thống đó, trước tiên hãy sao chép hoặc giải nén các tệp vào
một thư mục riêng biệt (không thể bị kẻ tấn công kiểm soát) trước khi chạy máy tìm lỗ hổng hoặc
bất kỳ công cụ phân tích mã nào khác.

Lưu ý rằng công cụ hoàn thiện chỉ mở các tệp, thư mục thông thường và (nếu được yêu cầu) tượng trưng
các liên kết; nó sẽ không bao giờ mở các loại tệp khác, ngay cả khi một liên kết tượng trưng được tạo cho chúng.
Điều này chống lại những kẻ tấn công chèn các loại tệp bất thường vào mã nguồn. Tuy nhiên, điều này
chỉ hoạt động nếu kẻ tấn công không thể sửa đổi hệ thống tệp đang được phân tích trong quá trình
phân tích, như khuyến nghị ở trên. Tính năng bảo vệ này cũng không hoạt động trên nền tảng Cygwin,
không may.

Hệ thống Cygwin (giả lập Unix trên Windows) có một vấn đề bổ sung nếu lỗi
được sử dụng để phân tích các chương trình mà nhà phân tích không thể tin tưởng. Vấn đề là do thiết kế
lỗ hổng trong Windows (nó kế thừa từ MS-DOS). Trên Windows và MS-DOS, một số tên tệp nhất định
(ví dụ: `` com1 '') được hệ điều hành tự động coi là tên của
thiết bị ngoại vi và điều này đúng ngay cả khi tên đường dẫn đầy đủ được cung cấp. Có, Windows và MS-DOS
thực sự được thiết kế này xấu. Flawfinder giải quyết vấn đề này bằng cách kiểm tra hệ thống tệp nào
đối tượng là, và sau đó chỉ mở các thư mục và tệp thông thường (và các liên kết tượng trưng nếu được bật).
Thật không may, điều này không hoạt động trên Cygwin; trên ít nhất một số phiên bản của Cygwin trên một số
phiên bản Windows, việc chỉ cố gắng xác định xem một tệp có phải là một loại thiết bị có thể gây ra lỗi
chương trình để treo. Một cách giải quyết là xóa hoặc đổi tên bất kỳ tên tệp nào được diễn giải
như tên thiết bị trước khi thực hiện phân tích. Những cái gọi là `` tên dành riêng '' này là
CON, PRN, AUX, CLOCK $, NUL, COM1-COM9 và LPT1-LPT9, theo sau là một phần mở rộng tùy chọn
(ví dụ: `` com1.txt ''), trong bất kỳ thư mục nào và trong mọi trường hợp (Windows không phân biệt chữ hoa chữ thường).

Do không tải hoặc khác danh sách truy cập từ các nguồn không đáng tin cậy. Chúng được thực hiện bằng cách sử dụng
Mô-đun dưa muối Python và mô-đun dưa muối không nhằm mục đích bảo mật chống lại lỗi
hoặc dữ liệu được xây dựng độc hại. Danh sách bài hát được lưu trữ nhằm mục đích sử dụng sau này bởi cùng một
người dùng đã tạo danh sách truy cập; trong bối cảnh đó, hạn chế này không phải là vấn đề.

Sử dụng công cụ hoàn thiện trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

  • 1
    Máy pha
    Máy pha
    Phaser là một công cụ mở nhanh, miễn phí và thú vị
    nguồn HTML5 trò chơi khung cung cấp
    Hiển thị WebGL và Canvas trên
    trình duyệt web trên máy tính để bàn và thiết bị di động. Trò chơi
    có thể được đồng ...
    Tải xuống Phaser
  • 2
    Động cơ VASSAL
    Động cơ VASSAL
    VASSAL là một công cụ trò chơi để tạo
    phiên bản điện tử của bảng truyền thống
    và các trò chơi bài. Nó cung cấp hỗ trợ cho
    kết xuất và tương tác mảnh trò chơi,
    và ...
    Tải xuống Công cụ VASSAL
  • 3
    OpenPDF - Ngã ba của iText
    OpenPDF - Ngã ba của iText
    OpenPDF là một thư viện Java để tạo
    và chỉnh sửa các tệp PDF bằng LGPL và
    Giấy phép nguồn mở MPL. OpenPDF là
    Mã nguồn mở LGPL/MPL kế thừa của iText,
    có ...
    Tải xuống OpenPDF - Một nhánh của iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - Hệ thống tự động
    Phân tích khoa học địa lý - là một địa lý
    Phần mềm Hệ thống Thông tin (GIS) với
    khả năng to lớn cho dữ liệu địa lý
    chế biến và ana ...
    Tải xuống SAGA GIS
  • 5
    Hộp công cụ cho Java / JTOpen
    Hộp công cụ cho Java / JTOpen
    Hộp công cụ IBM dành cho Java/JTOpen là một
    thư viện các lớp Java hỗ trợ
    lập trình client/server và internet
    các mô hình cho một hệ thống chạy OS/400,
    i5/OS, hoặc...
    Tải xuống Hộp công cụ cho Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (hoặc D3 cho Tài liệu hướng dữ liệu)
    là một thư viện JavaScript cho phép bạn
    để tạo dữ liệu động, tương tác
    trực quan hóa trong trình duyệt web. Với D3
    bạn...
    Tải xuống D3.js
  • Khác »

Lệnh Linux

Ad