Đọc mã thủ công là một quá trình tốn thời gian. Nó cũng dễ bị lỗi vì rất dễ bỏ sót các chi tiết quan trọng. Với tư cách là nhà phát triển và người thử nghiệm thâm nhập, chúng tôi cần tìm cách tự động hóa quy trình này. SAST là một kỹ thuật có thể giúp chúng ta thực hiện nhiệm vụ này.
SAST không phải là viên đạn bạc. Nó chỉ có thể sử dụng được cho các trường hợp sử dụng có quyền truy cập vào mã nguồn cho các dự án nguồn mở hoặc thử nghiệm thâm nhập hộp trắng. Tuy nhiên, nó có thể giúp bạn tìm được một số thành quả dễ dàng và tiết kiệm thời gian.
Kiểm tra bảo mật ứng dụng tĩnh (SAST) là một tập hợp con của phân tích mã tĩnh được sử dụng để tăng tính bảo mật và độ tin cậy của mã. SAST phát hiện các phần phụ thuộc cũ, phát hiện bí mật, lỗi logic dẫn đến lỗ hổng bảo mật, v.v. SAST bao gồm thử nghiệm ảnh hưởng thứ hai đến an ninh mạng, chẳng hạn như độ phức tạp của mã trực quan, mã không rõ ràng và các phương pháp thực hành không trực quan có thể dẫn đến lỗ hổng.
Các công cụ SAST thường là các công cụ so khớp mẫu biểu thức chính quy trên các steroid để tìm kiếm các lỗ hổng đã biết trong mã. Ví dụ: một công cụ SAST có thể tìm kiếm việc sử dụng eval
, exec
hoặc pickle
trong mã Python, các hàm này có thể được sử dụng để thực thi mã tùy ý.
Tôi sẽ chia cách tiếp cận SAST của mình thành ba loại:
Phát hiện lỗ hổng : Tôi sử dụng các công cụ như Semgrep , Bandit , Nodejsscan để tìm các vectơ tấn công trong mã. Bạn thường có thể tìm thấy những hậu quả dễ xảy ra như đầu vào không được vệ sinh, mật mã kém hoặc thư viện dễ bị tấn công. Nhân tiện, phiên bản Semgrep PRO có nhiều quy tắc hơn; sẽ miễn phí nếu có không quá 10 nhà phát triển trong dự án.
Phát hiện bí mật : Gitleaks , Trufflehog hoặc Grep có thể giúp bạn tìm ra bí mật trong mã. Điều này rất quan trọng vì bí mật có thể được sử dụng để nâng cấp đặc quyền hoặc truy cập dữ liệu nhạy cảm. Thông thường, chuỗi kết nối cơ sở dữ liệu, khóa API hoặc mật khẩu được lưu trữ trong mã.
Cấu hình sai : Các công cụ như Checkov hoặc Trivy có thể giúp bạn tìm ra cấu hình sai. Cấu hình sai thường nằm trong tệp "cơ sở hạ tầng dưới dạng mã" (IaC) nhưng cũng có thể nằm trong chính mã đó. Một ví dụ sẽ là tệp soạn thảo docker bị định cấu hình sai làm hiển thị cơ sở dữ liệu trên internet. Để quét Dockerfiles, tôi khuyên bạn nên kết hợp hadolint và grype
Thông tin thêm: https://dkb-zh.gitlab-pages.ics.muni.cz/vulnerability-management/web-guides-external/docs/guide_iac_sast/#docker
Công cụ SAST không hoàn hảo. Họ sẽ cho bạn kết quả dương tính giả và âm tính giả. **Tuy nhiên, nó tiết kiệm được nhiều thời gian so với việc khai thác ngẫu nhiên một số ứng dụng. Tôi đã sử dụng các công cụ SAST trong các cuộc thi và cam kết thử nghiệm thâm nhập của mình. Nó giúp tôi bắt đầu với cơ sở mã và cho tôi một số gợi ý về nơi cần tìm các lỗ hổng.
Tôi khuyên bạn nên bắt đầu với Hack The Box . Nền tảng này đưa ra những thách thức, chẳng hạn như lấy mã nguồn và tìm lỗ hổng. Sau đó, khai thác chúng trên máy thật. Đây là một cách tuyệt vời để học cách sử dụng các công cụ SAST trong thực tế.
Hoặc, nếu bạn là nhà phát triển, bạn có thể sử dụng các công cụ SAST trong quy trình CI/CD của mình. Bằng cách này, bạn có thể làm quen với các công cụ và kết quả của chúng. Đồng thời, bạn sẽ cải thiện tính bảo mật cho ứng dụng của mình.
Tôi đã chuẩn bị một danh sách hướng dẫn để giúp bạn bắt đầu với SAST và phát hiện bí mật. Những hướng dẫn này được viết như một phần luận án của tôi và là điểm khởi đầu tuyệt vời cho bất kỳ ai quan tâm đến các công cụ SAST.
Khi phát hiện bí mật, hãy nhớ: tin tặc biết được thì không phải là bí mật. Ngay cả những nhà phát triển dày dặn kinh nghiệm cũng có thể vô tình đẩy mật khẩu hoặc chuỗi kết nối vào bộ điều khiển nguồn từ xa. Sử dụng nhiều công cụ khác nhau, hướng dẫn này cung cấp các phương pháp nhanh chóng và dễ dàng để giảm thiểu rủi ro này.
Hướng dẫn này tập trung vào việc tìm hiểu cách phát hiện bí mật bằng cách sử dụng móc nối trước và quy trình CI/CD. Mặc dù mã chủ yếu tập trung vào GitLab nhưng phần cuối cùng cũng sẽ đề cập đến GitHub.
Hướng dẫn này phác thảo các bước để bắt đầu Kiểm tra bảo mật ứng dụng tĩnh (SAST) trong GitLab một cách hiệu quả. SAST là một quá trình sử dụng phân tích mã tĩnh để xác định các lỗ hổng tiềm ẩn.
Bảng tóm tắt này giới thiệu các công cụ hữu ích để quét các tạo phẩm Cơ sở hạ tầng dưới dạng Mã (IaC) và cung cấp các ví dụ về cách tích hợp chúng vào quy trình CI/CD của bạn.
Tôi đã tạo một công cụ tùy chỉnh trong Golang để giúp tôi nhanh chóng đối sánh các biểu thức chính quy với các cơ sở mã khổng lồ.
Có một sự cân bằng vô hạn giữa độ chính xác và phương sai.
Giả sử bạn cần nhiều sự khác biệt hơn và không bận tâm đến việc xem xét thủ công hơn. Trong trường hợp đó, bạn có thể thử RegFinder , giống như grep
nhưng phù hợp hơn để phát hiện bí mật (nhanh hơn trong các kho lưu trữ lớn hơn, đầu ra rõ ràng, bỏ qua một số phần mở rộng tệp). Hoặc bạn có thể sử dụng grep trực tiếp. Giá trị nhất là các biểu thức chính quy trong kho lưu trữ chứ không phải công cụ bạn sẽ sử dụng.
grep -n -r your_app/ -Ef regex_dir/general.txt
Hoặc
./regfinder.elf -d your_app/ -f regex_dir/general.txt
Thật đơn giản để mở rộng các mẫu biểu thức chính quy hiện có. Công cụ này không khả thi đối với các đường ống tự động. Tuy nhiên, nó rất hữu ích nếu bạn cần tìm một bí mật không chuẩn hoặc trong các đánh giá khác, chẳng hạn như đánh giá bảo mật, nơi dự kiến sẽ có nhiều công việc thủ công hơn.
Bình luận nếu bạn có kinh nghiệm tuyệt vời với các công cụ khác . Cảm ơn bạn đã đọc.