AppSec khó
Các chương trình bảo mật ứng dụng rất khó. Có rất nhiều bộ phận chuyển động. Nhưng cần đảm bảo rằng phần mềm được thiết kế, xây dựng và triển khai theo cách giảm thiểu các lỗ hổng bảo mật, từ đó bảo vệ người dùng và dữ liệu của họ khỏi các cuộc tấn công mạng tiềm ẩn. Một chương trình AppSec mạnh mẽ sẽ có cách tiếp cận toàn diện liên quan đến việc tích hợp nhiều thực tiễn khác nhau trong suốt quá trình phát triển phần mềm để giảm thiểu rủi ro về các lỗ hổng và vi phạm bảo mật. Đây không phải là một danh sách đầy đủ, nhưng điều này sẽ cho bạn cảm giác về phạm vi.
Mô hình hóa mối đe dọa là quá trình xác định và đánh giá các mối đe dọa và lỗ hổng bảo mật tiềm ẩn trong phần mềm trước khi chúng có thể bị khai thác. Điều này có thể được thực hiện bằng cách phân tích kiến trúc và thiết kế của phần mềm, xác định dữ liệu nhạy cảm và xác định các hướng tấn công tiềm ẩn. Mô hình mối đe dọa dựa trên Agile là một phương pháp kết hợp các nguyên tắc phát triển phần mềm nhanh với mô hình mối đe dọa. Cách tiếp cận này cho phép các nhóm xác định và giải quyết sớm các mối đe dọa và lỗ hổng bảo mật tiềm ẩn trong quá trình phát triển, trong khi vẫn có thể đáp ứng nhanh chóng các yêu cầu thay đổi.
Mã hóa an toàn là một thực hành quan trọng khác trong phát triển phần mềm an toàn. Điều này liên quan đến việc viết mã không có lỗi và lỗ hổng bảo mật phổ biến. Điều này có thể được hỗ trợ thông qua việc sử dụng các nguyên tắc mã hóa an toàn, chẳng hạn như tài liệu OWASP . Những loại tài nguyên này cung cấp cho nhà phát triển một tập hợp các phương pháp hay nhất để viết mã bảo mật và giúp họ tránh những lỗi phổ biến có thể dẫn đến lỗ hổng bảo mật.
Giữ phần mềm được vá là một thực hành quan trọng khác. Điều này không chỉ bao gồm bản thân phần mềm mà còn bất kỳ thư viện và phần phụ thuộc nào của bên thứ ba. Điều này đảm bảo rằng mọi lỗ hổng bảo mật đã biết đều được giải quyết kịp thời, giảm nguy cơ bị kẻ tấn công khai thác.
Tất nhiên, có thử nghiệm thâm nhập và quét lỗ hổng là những kỹ thuật được sử dụng để xác định và giải quyết các lỗ hổng bảo mật trong phần mềm. Những kỹ thuật này mô phỏng các cuộc tấn công trong thế giới thực vào phần mềm, cho phép các nhà phát triển xác định và giải quyết bất kỳ lỗ hổng nào trước khi chúng có thể bị kẻ tấn công khai thác. Các công cụ tự động như phân tích thành phần phần mềm (SCA), kiểm tra bảo mật ứng dụng tĩnh (SAST), kiểm tra bảo mật ứng dụng động (DAST), kiểm tra bảo mật ứng dụng tương tác (IAST), kiểm tra bảo mật ứng dụng di động (MAST) và tự bảo vệ ứng dụng thời gian chạy ( RASP) có thể được sử dụng để tự động xác định và khắc phục các lỗ hổng bảo mật. Ngoài ra, bảo mật API là một khía cạnh quan trọng của sự phát triển phần mềm hiện đại.
Một khía cạnh quan trọng khác của phát triển phần mềm an toàn là ngăn ngừa mất dữ liệu (DLP). Các giải pháp DLP có thể được sử dụng để phát hiện và ngăn chặn việc tiết lộ trái phép dữ liệu nhạy cảm, chẳng hạn như thông tin nhận dạng cá nhân (PII), bí mật, v.v.
Giáo dục và đào tạo cũng rất quan trọng để phát triển phần mềm an toàn. Các chương trình hỗ trợ bảo mật và chương trình giáo dục dành cho nhà phát triển có thể giúp đảm bảo rằng tất cả các thành viên của nhóm phát triển đều có kiến thức và kỹ năng cần thiết để viết mã bảo mật. Điều này bao gồm việc hiểu Top 10 của OWASP, danh sách các rủi ro bảo mật ứng dụng web quan trọng nhất và Top 25 của Common Weakness Enumeration (CWE) , danh sách các điểm yếu phổ biến của phần mềm.
Phương pháp shift-left và cổng tự động trong đường ống cũng rất cần thiết để phát triển phần mềm an toàn. Các thực tiễn này cho phép các nhà phát triển sớm xác định và giải quyết các lỗ hổng tiềm ẩn, trước khi chúng trở thành một phần của cơ sở mã và được triển khai vào sản xuất bằng cách tích hợp các công cụ vào các đường ống tích hợp và phân phối liên tục (CI/CD), cũng như nhận đầu ra của các công cụ đó một nơi nào đó mà bạn có thể theo dõi các Chỉ số hiệu suất chính (KPI) và cũng có thể phân loại các lỗ hổng tiềm ẩn bằng cách tích hợp với thứ gì đó như JIRA để quản lý công việc linh hoạt.
Pre-commit git hooks cũng là một công cụ hữu ích để phát triển phần mềm an toàn. Các hook này có thể được sử dụng để tự động kiểm tra mã để tìm sự không an toàn trước khi nó được chuyển giao cho kho lưu trữ hoặc ngăn bạn chuyển giao bí mật.
Một khía cạnh quan trọng khác của AppSec là xử lý các lỗ hổng. Đây là quá trình xác định và ưu tiên các lỗ hổng dựa trên mức độ nghiêm trọng và tác động tiềm ẩn của chúng. Cách tiếp cận này cho phép các tổ chức tập trung nguồn lực của họ vào các lỗ hổng nghiêm trọng nhất và giải quyết chúng một cách kịp thời. Các yếu tố như khả năng bị khai thác, tác động tiềm ẩn và khả năng dễ bị khai thác được xem xét khi xử lý các lỗ hổng. Trong một số trường hợp, vá lỗi có thể không phải là cách hành động tốt nhất và có thể xem xét các giải pháp thay thế như giám sát, phân đoạn mạng và kiểm soát truy cập.
Để quản lý một chương trình AppSec mạnh mẽ, điều quan trọng là phải có sẵn các công cụ và nền tảng phù hợp. Một số tùy chọn phổ biến bao gồm Esno để tăng khả năng hiển thị và điều phối các công cụ, con người và quy trình. Checkmarx và Veracode cung cấp nhiều phạm vi tính năng để quét tĩnh và động, đồng thời Snyk nổi tiếng về khả năng bảo mật nguồn mở và toàn bộ nền tảng được yêu thích vì tính dễ sử dụng và lấy nhà phát triển làm trung tâm, nhưng Black Duck có một danh tiếng mạnh mẽ trong SCA. Invicti tốt cho IAST, Wiz đang trở nên phổ biến cho CSPM. Aqua cho bảo mật vùng chứa đã được thử và đúng, SpectralOpscho DLP, NoName Security hoặc Salt cho API Security, NowSecure cho Mobile AppSec, Irius Risk cho mô hình hóa mối đe dọa hoặc Bionic cho phương pháp quản lý tư thế và mô hình hóa mối đe dọa tự động hơn. Ngoài ra còn có fuzzing, là một loại thử nghiệm động, dựa trên hành vi để kiểm tra những điều chưa biết và cố gắng tìm ra lỗ hổng; một ví dụ rất hiện đại về nền tảng trong không gian này là Mayhem .
Để tiếp tục theo dõi nguồn mở và rủi ro của bên thứ ba, điều quan trọng là phải giữ hóa đơn nguyên liệu phần mềm (SBOM). Một số công cụ này có thể tạo chúng cho bạn (Veracode, Black Duck, v.v.).
Một số người có thể không coi đây là một phần của chương trình AppSec, nhưng tôi tin rằng công nghệ Deception Engineering nên là một phần của chương trình Bảo mật Sản phẩm lớn hơn nhằm cố gắng lãng phí tài nguyên của những kẻ tấn công và buộc chúng chuyển sang các mục tiêu dễ dàng hơn, ít tốn kém hơn. Một ví dụ hàng đầu trong không gian này là CounterCraft. Hãy suy nghĩ công nghệ honeypot trên steroid.
Ngoài ra, đào tạo và giáo dục là điều cần thiết để phát triển phần mềm an toàn. Các tùy chọn đào tạo Đánh giá Mã Bảo mật bao gồm Chiến binh Mã Bảo mật , Hành trình Bảo mật , Phòng thí nghiệm Nhập vai và Avatao . Chương trình tiết lộ lỗ hổng bảo mật (VDP) có thể được quản lý thông qua các nền tảng như HackerOne và Chương trình tiền thưởng lỗi có thể được thiết lập và quản lý thông qua các nền tảng như Intigriti.
Chúng ta có thể tìm hiểu thêm về vai trò của chính sách dưới dạng mã và cách tự động hóa hoàn toàn các cổng cũng như cách thức hoạt động của quy trình phê duyệt trong các bối cảnh được quản lý chặt chẽ, nhưng hiện tại chúng ta sẽ phải để nó ở đây.
Tóm lại, phát triển phần mềm an toàn đòi hỏi một cách tiếp cận toàn diện và nhiều mặt bao gồm việc tích hợp tất cả các thực tiễn nêu trên trong suốt quá trình phát triển phần mềm. Bằng cách đó, các nhà phát triển có thể đảm bảo an toàn và bảo mật cho người dùng cũng như dữ liệu của họ, đồng thời tạo ra phần mềm mạnh mẽ, đáng tin cậy và bảo mật. Điều quan trọng cần lưu ý là bối cảnh bảo mật liên tục thay đổi, do đó, việc xem xét và nghiên cứu liên tục là cần thiết để theo kịp.

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































