Bạn có thể quét lỗ hổng bảo mật cho mã của mình ngay trong trình soạn thảo bằng tiện ích mở rộng Go cho Visual Studio Code.
Lưu ý: để hiểu rõ cách khắc phục lỗ hổng xuất hiện trong các hình bên dưới, xem bài hướng dẫn govulncheck.
Yêu cầu trước khi bắt đầu:
- Go. Chúng tôi khuyến nghị dùng phiên bản Go mới nhất để theo bài hướng dẫn này. Xem hướng dẫn cài đặt tại Cài đặt Go.
- VS Code, đã cập nhật lên phiên bản mới nhất. Tải tại đây. Bạn cũng có thể dùng Vim (xem chi tiết tại đây), nhưng bài hướng dẫn này tập trung vào VS Code Go.
- Tiện ích mở rộng VS Code Go, có thể tải tại đây.
- Thay đổi thiết lập riêng cho trình soạn thảo. Bạn sẽ cần chỉnh thiết lập IDE theo các đặc tả này thì mới tái lập được kết quả bên dưới.
Cách quét lỗ hổng bằng VS Code Go
Bước 1. Chạy “Go: Toggle Vulncheck”
Lệnh Toggle Vulncheck hiển thị kết quả phân tích lỗ hổng cho toàn bộ các phụ thuộc được liệt kê trong module của bạn. Để dùng lệnh này, mở command palette trong IDE (Ctrl+Shift+P trên Linux/Windows hoặc Cmd+Shift+P trên Mac OS) rồi chạy “Go: Toggle Vulncheck.” Trong tệp go.mod, bạn sẽ thấy thông tin chẩn đoán về những phụ thuộc có lỗ hổng, cả những phụ thuộc được dùng trực tiếp lẫn gián tiếp trong mã của bạn.

Lưu ý: Để tái lập bài hướng dẫn này trên trình soạn thảo của bạn, hãy chép đoạn mã dưới đây vào tệp main.go.
// This program takes language tags as command-line
// arguments and parses them.
package main
import (
"fmt"
"os"
"golang.org/x/text/language"
)
func main() {
for _, arg := range os.Args[1:] {
tag, err := language.Parse(arg)
if err != nil {
fmt.Printf("%s: error: %v\n", arg, err)
} else if tag == language.Und {
fmt.Printf("%s: undefined\n", arg)
} else {
fmt.Printf("%s: tag %s\n", arg, tag)
}
}
}
Sau đó, hãy chắc chắn rằng tệp go.mod tương ứng của chương trình trông như thế này:
module module1
go 1.18
require golang.org/x/text v0.3.5
Bây giờ, chạy go mod tidy để bảo đảm tệp go.sum của bạn được cập nhật.
Bước 2. Chạy govulncheck thông qua code action.
Chạy govulncheck bằng code action cho phép bạn tập trung vào những phụ thuộc thực sự được gọi trong mã của mình. Code action trong VS Code được đánh dấu bằng biểu tượng bóng đèn; di chuột lên phụ thuộc tương ứng để xem thông tin về lỗ hổng, rồi chọn “Quick Fix” để hiện menu các tuỳ chọn. Trong đó, hãy chọn “run govulncheck to verify.” Thao tác này sẽ trả về phần đầu ra govulncheck tương ứng trong terminal của bạn.


Bước 3. Di chuột lên một phụ thuộc được liệt kê trong tệp go.mod.
Bạn cũng có thể xem phần đầu ra govulncheck về một phụ thuộc cụ thể bằng cách di chuột lên phụ thuộc đó trong tệp go.mod. Nếu chỉ cần liếc nhanh thông tin phụ thuộc, cách này thậm chí còn hiệu quả hơn dùng code action.

Bước 4. Nâng cấp lên phiên bản “fixed in” của phụ thuộc.
Code action còn dùng được để nâng cấp nhanh lên phiên bản phụ thuộc đã khắc phục lỗ hổng. Hãy làm điều đó bằng cách chọn mục “Upgrade” trong menu thả xuống của code action.

Tài nguyên bổ sung
- Xem trang này để biết thêm thông tin về việc quét lỗ hổng trong IDE. Cụ thể, mục Ghi chú và lưu ý bàn về những trường hợp đặc biệt mà việc quét lỗ hổng có thể phức tạp hơn ví dụ ở trên.
- Cơ sở dữ liệu lỗ hổng Go chứa thông tin từ nhiều nguồn sẵn có, bên cạnh các báo cáo trực tiếp từ những người bảo trì package Go gửi tới nhóm bảo mật Go.
- Trang Quản lý lỗ hổng Go cung cấp cái nhìn tổng quan về kiến trúc của Go trong việc phát hiện, báo cáo và quản lý lỗ hổng.