8 công cụ miễn phí để bảo mật khi lập trình phần mềm

Công Nghệ
8 công cụ miễn phí để bảo mật khi lập trình phần mềm
Bài viết được sự cho phép của tác giả AnonyViet Shifting left là một nguyên tắc phát triển, nêu rõ rằng bảo mật sẽ di chuyển từ bên phải (hoặc kết thúc) của vòng đời lập trình phần mềm (SDLC) sang bên trái (bắt đầu). Nói cách khác, bảo mật nên được thiết kế và tích hợp vào tất cả các giai đoạn trong quá trình phát triển. Sự thay đổi mới này đòi hỏi các nhà phát triển phải có quyền sở hữu an ninh và hiểu về các nguyên tắc bảo mật. Tin tốt là có rất nhiều công cụ có sẵn để giúp các nhà phát triển trong quá trình này. Trong bài viết này, chúng ta sẽ chia Bảo mật Ứng dụng thành các lĩnh vực chính và tìm hiểu một số giải pháp mã nguồn mở miễn phí giúp các nhà phát triển và tổ chức đảm bảo mọi giai đoạn của SLDC, các thay đổi này giúp họ cải thiện chất lượng và bảo mật tổng thể phần mềm của họ. Shifting left giống như thêm công việc bổ sung vào phần mềm của nhà phát triển, nhưng trên thực tế, nó cho phép các nhà phát triển tìm hiểu thêm về thực tiễn bảo mật, giúp giảm thời gian sữa lỗi và mất thêm một chút thời gian hơn để xây dựng các ứng dụng tuyệt vời. Bảo mật ứng dụng trong quá trình lập trình phần mềm Điều quan trọng nhất là bạn phải nhận ra rằng tất cả các lỗ hổng bảo mật ứng dụng không thể được sửa chữa bởi một phần mềm duy nhất. Bảo mật thành công đòi hỏi phải tiếp cận nhiều lớp với nhiều tuyến phòng thủ cho các giai đoạn khác nhau của SDLC. Các...

Bài viết được sự cho phép của tác giả AnonyViet

Shifting left là một nguyên tắc phát triển, nêu rõ rằng bảo mật sẽ di chuyển từ bên phải (hoặc kết thúc) của vòng đời lập trình phần mềm (SDLC) sang bên trái (bắt đầu). Nói cách khác, bảo mật nên được thiết kế và tích hợp vào tất cả các giai đoạn trong quá trình phát triển. Sự thay đổi mới này đòi hỏi các nhà phát triển phải có quyền sở hữu an ninh và hiểu về các nguyên tắc bảo mật. Tin tốt là có rất nhiều công cụ có sẵn để giúp các nhà phát triển trong quá trình này.

8 công cụ miễn phí để bảo mật khi lập trình phần mềm8 công cụ miễn phí để bảo mật khi lập trình phần mềm

Trong bài viết này, chúng ta sẽ chia Bảo mật Ứng dụng thành các lĩnh vực chính và tìm hiểu một số giải pháp mã nguồn mở miễn phí giúp các nhà phát triển và tổ chức đảm bảo mọi giai đoạn của SLDC, các thay đổi này giúp họ cải thiện chất lượng và bảo mật tổng thể phần mềm của họ.

8 công cụ miễn phí để bảo mật khi lập trình phần mềm8 công cụ miễn phí để bảo mật khi lập trình phần mềm

Shifting left giống như thêm công việc bổ sung vào phần mềm của nhà phát triển, nhưng trên thực tế, nó cho phép các nhà phát triển tìm hiểu thêm về thực tiễn bảo mật, giúp giảm thời gian sữa lỗi và mất thêm một chút thời gian hơn để xây dựng các ứng dụng tuyệt vời.

Bảo mật ứng dụng trong quá trình lập trình phần mềm

Điều quan trọng nhất là bạn phải nhận ra rằng tất cả các lỗ hổng bảo mật ứng dụng không thể được sửa chữa bởi một phần mềm duy nhất. Bảo mật thành công đòi hỏi phải tiếp cận nhiều lớp với nhiều tuyến phòng thủ cho các giai đoạn khác nhau của SDLC.

8 công cụ miễn phí để bảo mật khi lập trình phần mềm8 công cụ miễn phí để bảo mật khi lập trình phần mềm

Các công cụ chúng ta sẽ tìm hiểu bao gồm:

  • SAST – Static Application Security Testing (Kiểm tra bảo mật ứng dụng tĩnh)
  • DAST – Dynamic Application Security Testing (Kiểm tra bảo mật ứng dụng động)
  • IAST – Integrated Application Security Testing (Kiểm thử bảo mật ứng dụng tích hợp)
  • RASP – Run-time Application Self Protection (Tự bảo vệ ứng dụng trong thời gian chạy)
  • Dependency Scanning
  • Secrets Detection

Mặc dù sự thật là các lỗ hổng được chọn để kiểm tra sớm sẽ rẻ và dễ dàng khắc phục hơn, bạn không thể tìm kiếm tất cả các lỗ hổng trong giai đoạn đầu của quá trình phát triển. Bảo mật cần phải trải đều và được quan tâm trong toàn bộ quá trình SDLC.

8 công cụ miễn phí để bảo mật khi lập trình phần mềm8 công cụ miễn phí để bảo mật khi lập trình phần mềm

SAST

Static Application System Testing – còn được gọi là “white box testing”, xuất hiện sớm nhất và là loại phổ biến nhất về bảo mật ứng dụng tự động. SAST quét mã nguồn của ứng dụng để tìm mọi lỗ hổng đã biết. Vì SAST không yêu cầu ứng dụng biên dịch hoặc chạy khi tìm lỗ hổng (không giống như DAST), nên nó được triển khai rất sớm trong SDLC.

Xem thêm:  Hướng dẫn nhận Code giảm giá Lazada 50K

Nó cũng thực hiện các hướng dẫn và tiêu chuẩn mã hoá mà không cần thực thi mã cơ bản. Danh mục thử nghiệm ứng dụng này có sẵn rất nhiều giải pháp, vì vậy khi quyết định sử dụng một giải pháp, hãy đảm bảo giải pháp đó được hỗ trợ và thường xuyên được cập nhật. Dưới đây là một số công cụ SAST miễn phí tốt nhất.

NodeJsScan

8 công cụ miễn phí để bảo mật khi lập trình phần mềm8 công cụ miễn phí để bảo mật khi lập trình phần mềm

NodeJsScan có giao diện dòng lệnh để tích hợp dễ dàng với các DevSecOps CI/CD pipelines và tạo ra các kết quả trong JSON.

Một tệp cấu hình có sẵn cho mỗi ngôn ngữ có thể được sửa đổi cho việc tìm kiếm. Tổng quan về các tệp, cũng như toàn bộ cơ sở code, có thể được hiển thị thông qua các số liệu thống kê và biểu đồ tròn. Chương trình có thể phát hiện lỗi tràn bộ nhớ đệm và lỗi trong code Java có thể chứa rủi ro bảo mật OWASP.

SonarQube

8 công cụ miễn phí để bảo mật khi lập trình phần mềm8 công cụ miễn phí để bảo mật khi lập trình phần mềm

Được coi là một trong những công cụ đánh giá code tự động tốt nhất hiện có trên thị trường. SonarQube có hàng ngàn quy tắc phân tích code tĩnh (Static Code Analysis) tự động. SonarQube cũng hỗ trợ 27 ngôn ngữ hiện đại và lỗi thời (nói lỗi thời vậy chứ vẫn còn có nhiều giá trị lắm à nha) để SonarQube có thể bao quát toàn bộ dự án của bạn và sự phát triển của nó.

Dynamic Application Security Testing – còn được gọi là “black box testing”. kỹ thuật này không tìm lỗ hổng trong mã nguồn như SAST, mà là tìm lỗ hổng trong lúc ứng dụng đang chạy. Nó thực hiện điều này bằng cách sử dụng các kỹ thuật injection trên ứng dụng. DAST có thể xác định các lỗ hổng bảo mật phổ biến, chẳng hạn như SQL injection và XSS. DAST cũng chú ý tới các vấn đề như thời gian chạy không thể xác định được bằng phân tích tĩnh, các vấn đề về xác thực và cấu hình máy chủ, cũng như các lỗ hổng chỉ hiển thị khi người dùng đã đăng nhập.

OWASP ZAP

8 công cụ miễn phí để bảo mật khi lập trình phần mềm8 công cụ miễn phí để bảo mật khi lập trình phần mềm

OWASP ZAP là công cụ DAST mã nguồn mở, miễn phí được trang bị đầy đủ tính năng, bao gồm cả tự động quét lỗ hổng và các công cụ để hỗ trợ việc pentest web-app thủ công. ZAP có một danh sách lớn các lỗ hỗng mà nó có thể khai thác hoặc xác định.

Interactive Application Security Testing – hay còn được gọi là “grey box testing”, là công nghệ kết hợp đồng thời các yêu tố của cả SAST và DAST. Nó thường được triển khai như một đặc vụ trong thời gian chạy thử nghiệm (ví dụ: thiết bị cho máy ảo Java[JVM] hoặc .NET CLR) để quan sát hoạt động hoặc các cuộc tấn công và xác định các lỗ hổng.

Contrast Security – Community

8 công cụ miễn phí để bảo mật khi lập trình phần mềm8 công cụ miễn phí để bảo mật khi lập trình phần mềm

Contrast là sản phẩm đầu tiên dành cho các nhà phát triển có khả năng tìm hiểu sâu hơn vào các lỗ hổng khi không biết về bối cảnh thời gian chạy của ứng dụng như bộ điều khiển, logic ứng dụng, lớp dữ liệu, chế độ xem, thư viện người dùng, các thành phần của mã nguồn và máy chủ của ứng dụng.

Xem thêm:  Lỗ hổng bảo mật trên Plugin Live Chat with Facebook Messenger

Runtime Application Self Protection – được cấu hình trên một máy chủ và sẽ khởi động khi ứng dụng chạy. Nó được thiết kế để phát hiện các cuộc tấn công vào một ứng dụng trong thời gian thực. Khi ứng dụng bắt đầu chạy, RASP có thể bảo vệ ứng dụng khỏi đầu vào hoặc các hành vi độc hại bằng cách phân tích cả hành vi của ứng dụng và bối cảnh của hành vi đó. Bằng cách sử dụng ứng dụng để liên tục theo dõi hành vi của chính nó, các cuộc tấn công có thể được xác định và giảm thiểu ngay lập tức mà không cần đến sự can thiệp của con người.

Sqreen

Sqreen Runtime Application Self-Protection xác định các cuộc tấn công khai thác lỗ hổng trong sản phẩm bằng cách tận dụng đầy đủ bối cảnh của các yêu cầu.

Sqreen bao gồm tất cả top 10 lỗ hổng bảo mật hàng đầu của OWASP như SQL injection, XSS và SSRF. Điều khiến Sqreen trở nên mạnh mẽ như vậy là khả năng tận dụng logic thực thi của các yêu cầu để chặn các cuộc tấn công với mức độ thất bại thấp hơn nhiều so với các giải pháp hiện có khác. Sqreen cũng có thể thích ứng với ngăn xếp riêng cụ thể của ứng dụng, do đó bạn không cần phải triển khai lại và cấu hình trong khi ứng dụng của bạn vẫn được setup đơn giản và nhanh chóng.

Denpendency Scanning giúp bạn tự động tìm các lỗ hổng bảo mật trong khi bạn đang phát triển và kiểm tra ứng dụng của mình, ví dụ như khi ứng dụng của bạn đang sử dụng thư viện (open source) dễ bị tổn thương.

Snyk

8 công cụ miễn phí để bảo mật khi lập trình phần mềm8 công cụ miễn phí để bảo mật khi lập trình phần mềm

Synk là tổ chức đầu tiên của nhà phát triển với các giải pháp mã nguồn mở được duy trì tốt nhất cho các nhà phát triển. Synk cung cấp các giải pháp doanh nghiệp hiệu quả có sẵn cho các tổ chức lớn hơn.

Snyk có một loạt các tính năng tuyệt vời giúp biến bảo mật thành một phần của quá trình phát triển như khả năng phát hiện các lỗ hổng từ bên trong IDE của bạn và quét các navtive git để kiểm tra các dự án trong kho lưu trữ của bạn. Snyk cũng cung cấp một cổng bảo mật để ngăn các lỗ hổng mới đi qua quy trình xây dụng và môi trường sản phẩm để kiểm tra môi trường chạy của bạn nhằm đảm bảo không mắc phải các lỗ hổng hiện có.

WhiteSource Bolt for GitHub

8 công cụ miễn phí để bảo mật khi lập trình phần mềm8 công cụ miễn phí để bảo mật khi lập trình phần mềm

WhiteSource giống như Snyk, cũng có một số công cụ miễn phí tuyệt vời cho các nhà phát triển cũng như các giải pháp doanh nghiệp cho các tổ chức lớn. WhiteSource Bolt for Github là một ứng dụng miễn phí, nó liên tục quét các repos của bạn, phát hiện các lỗ hổng của các thành phần trong mã nguồn và cung cấp các bản sửa lỗi. Nó hỗ trợ của kho riêng và kho công cộng.

Hơn 200 ngôn ngữ lập trình được hỗ trợ  và theo dõi liên tục từ nhiều cơ sở dữ liệu lỗ hổng mã nguồn mở như NVD.

Các bí mật như key API, thông tin cơ sở dữ liệu và chứng chỉ bảo mật là những viên ngọc quý của các tổ chức vì nó có thể cung cấp quyền truy cập vào các hệ thống nhạy cảm.Secrets detection có thể quét mã nguồn, logs và các tệp khác để tiếp tục tìm các bí mật khác. Đây là một dich vụ đặc biệt vì hầu hết các bí mật thường luôn là các chuỗi entropy cao (các chuỗi được thiết kế để xuất hiện ngẫu nhiên), nhưng hầu hết các chuỗi entropy cao không phải là bí mật, nên chúng rất khó bị phát hiện. Nó đòi hỏi các thuật toán phân loại tiên tiến để phát hiện các bí mật với mức độ chính xác và recall cao.

Xem thêm:  Hướng dẫn DDOS memcached và cách phòng chống

Secrets detection thường bị nhầm lẫn với SAST vì cả hai đều quét mã nguồn. Nhưng không giống như SAST, chỉ liên quan đến phiên bản hiện tại của ứng dụng, Secrets detection liên quan đến toàn bộ các phiên bản của dự án. Các hệ thống kiểm soát phiên bản như git, sẽ theo dõi và lưu trữ tất cả các thay đổi đối với một dự án. Nếu các phiên bản trước của mã nguồn chứa các bí mật được mã hoá cứng bên trong, đã bị xoá trong giai đoạn cuối, nên việc đánh giá code và các công cụ như SAST sẽ bỏ lỡ các bí mật này, do đó nó có thể nằm trong kho git và bị xâm phạm. Đây là lý do tại sao Secrets detection lại khác SAST.

GitGuardian

8 công cụ miễn phí để bảo mật khi lập trình phần mềm8 công cụ miễn phí để bảo mật khi lập trình phần mềm

Công nghệ của GitGuardian hoạt động bằng cách quét các kho lưu trữ của nhà phát triển để tìm bằng chứng về dữ liệu nhạy cảm.

GitGuardian bao gồm hơn 300 loại dữ liệu nhạy cảm khác nhau từ key kết nối database, chứng chỉ SSL, đến username và password. Những dữ liệu này được phát hiện thông qua sự kết hợp của các thuật toán, bao gồm các kỹ thuật pattern matching (so trùng mẫu) tinh vi. GitGuardian có thể được tích hợp với tài khoản Github của bạn và được cấu hình trong vòng vài phút nên các nhà phát triển có thể sử dụng API GitGuardian để phát hiện dữ liệu trong bất kỳ dịch vụ nào, kể cả trong thư mục, ứng dụng email hoặc kênh Slack.

Tổng kết

Với rất nhiều giải pháp có sẵn, bạn có thể cảm thấy khó khăn khi quyết định chọn công cụ nào trong bài viết. Nhưng phải nhớ, hãy luôn xem xét công dụng của mỗi công cụ có phù hợp với quy trình công việc hiện tại của bạn không vì ngay cả các công cụ tuyệt vời cũng có thể trở nên vô dụng nếu chúng quá khó sử dụng.

Mỗi ứng dụng đều khác nhau và các công cụ được nêu ở trên nên được coi là mức bảo vệ tối thiểu, nếu bạn và tổ chức của bạn có thể không cần các giải pháp chi tiết hơn. Bảo mật là một trong những kỹ năng được đánh giá cao nhất của các nhà phát triển, mặc dù việc bảo mật có vẻ được xem như là một nhiệm vụ khó khăn, nhưng đó là một khoản đầu tư đáng giá để hiểu và thực hiện các hệ thống này trong toàn bộ vòng đời phát triển của ứng dụng.

Bài viết gốc được đăng tải tại anonyviet.com

Có thể bạn quan tâm:

Xem thêm việc làm IT hấp dẫn tại Station D

Bài viết liên quan

Bộ cài đặt Laravel Installer đã hỗ trợ tích hợp Jetstream

Bộ cài đặt Laravel Installer đã hỗ trợ tích hợp Jetstream

Bài viết được sự cho phép của tác giả Chung Nguyễn Hôm nay, nhóm Laravel đã phát hành một phiên bản chính mới của “ laravel/installer ” bao gồm hỗ trợ khởi động nhanh các dự án Jetstream. Với phiên bản mới này khi bạn chạy laravel new project-name , bạn sẽ nhận được các tùy chọn Jetstream. Ví dụ: API Authentication trong Laravel-Vue SPA sử dụng Jwt-auth Cách sử dụng Laravel với Socket.IO laravel new foo --jet --dev Sau đó, nó sẽ hỏi bạn thích stack Jetstream nào hơn: Which Jetstream stack do you prefer? [0] Livewire [1] inertia > livewire Will your application use teams? (yes/no) [no]: ... Nếu bạn đã cài bộ Laravel Installer, để nâng cấp lên phiên bản mới bạn chạy lệnh: composer global update Một số trường hợp cập nhật bị thất bại, bạn hãy thử, gỡ đi và cài đặt lại nha composer global remove laravel/installer composer global require laravel/installer Bài viết gốc được đăng tải tại chungnguyen.xyz Có thể bạn quan tâm: Cài đặt Laravel Làm thế nào để chạy Sql Server Installation Center sau khi đã cài đặt xong Sql Server? Quản lý các Laravel route gọn hơn và dễ dàng hơn Xem thêm Tuyển dụng lập trình Laravel hấp dẫn trên Station D

By stationd
Principle thiết kế của các sản phẩm nổi tiếng

Principle thiết kế của các sản phẩm nổi tiếng

Tác giả: Lưu Bình An Phù hợp cho các bạn thiết kế nào ko muốn làm code dạo, design dạo nữa, bạn muốn cái gì đó cao hơn ở tầng khái niệm Nếu lập trình chúng ta có các nguyên tắc chung khi viết code như KISS , DRY , thì trong thiết kế cũng có những nguyên tắc chính khi làm việc. Những nguyên tắc này sẽ là kim chỉ nam, nếu có tranh cãi giữa các member trong team, thì cứ đè nguyên tắc này ra mà giải quyết (nghe hơi có mùi cứng nhắc, mình thì thích tùy cơ ứng biến hơn) Tìm các vị trí tuyển dụng designer lương cao cho bạn Nguyên tắc thiết kế của GOV.UK Đây là danh sách của trang GOV.UK Bắt đầu với thứ user cần Làm ít hơn Thiết kế với dữ liệu Làm mọi thứ thật dễ dàng Lặp. Rồi lặp lại lần nữa Dành cho tất cả mọi người Hiểu ngữ cảnh hiện tại Làm dịch vụ digital, không phải làm website Nhất quán, nhưng không hòa tan (phải có chất riêng với thằng khác) Cởi mở, mọi thứ tốt hơn Bao trừu tượng luôn các bạn, trang Gov.uk này cũng có câu tổng quát rất hay Thiết kế tốt là thiết kế có thể sử dụng. Phục vụ cho nhiều đối tượng sử dụng, dễ đọc nhất nhất có thể. Nếu phải từ bỏ đẹp tinh tế – thì cứ bỏ luôn . Chúng ta tạo sản phẩm cho nhu cầu sử dụng, không phải cho người hâm mộ . Chúng ta thiết kế để cả nước sử dụng, không phải những người đã từng sử dụng web. Những người cần dịch vụ của chúng ta nhất là những người đang cảm thấy khó sử dụng dịch...

By stationd
Hiểu về trình duyệt – How browsers work

Hiểu về trình duyệt – How browsers work

Bài viết được sự cho phép của vntesters.com Khi nhìn từ bên ngoài, trình duyệt web giống như một ứng dụng hiển thị những thông tin và tài nguyên từ server lên màn hình người sử dụng, nhưng để làm được công việc hiển thị đó đòi hỏi trình duyệt phải xử lý rất nhiều thông tin và nhiều tầng phía bên dưới. Việc chúng ta (Developers, Testers) tìm hiểu càng sâu tầng bên dưới để nắm được nguyên tắc hoạt động và xử lý của trình duyệt sẽ rất hữu ích trong công việc viết code, sử dụng các tài nguyên cũng như kiểm thử ứng dụng của mình. Cách để npm packages chạy trong browser Câu hỏi phỏng vấn mẹo về React: Component hay element được render trong browser? Khi hiểu được cách thức hoạt động của trình duyệt chúng ta có thể trả lời được rất nhiều câu hỏi như: Tại sao cùng một trang web lại hiển thị khác nhau trên hai trình duyệt? Tại sao chức năng này đang chạy tốt trên trình duyệt Firefox nhưng qua trình duyệt khác lại bị lỗi? Làm sao để trang web hiển thị nội dung nhanh và tối ưu hơn một chút?… Hy vọng sau bài này sẽ giúp các bạn có một cái nhìn rõ hơn cũng như giúp ích được trong công việc hiện tại. 1. Cấu trúc của một trình duyệt Trước tiên chúng ta đi qua cấu trúc, thành phần chung và cơ bản nhất của một trình duyệt web hiện đại, nó sẽ gồm các thành phần (tầng) như sau: Thành phần nằm phía trên là những thành phần gần với tương tác của người dùng, càng phía dưới thì càng sâu và nặng về xử lý dữ liệu hơn tương tác. Nhiệm...

By stationd
Thị trường EdTech Vietnam- Nhiều tiềm năng nhưng còn bị bỏ ngỏ tại Việt Nam

Thị trường EdTech Vietnam- Nhiều tiềm năng nhưng còn bị bỏ ngỏ tại Việt Nam

Lĩnh vực EdTech (ứng dụng công nghệ vào các sản phẩm giáo dục) trên toàn cầu hiện nay đã tương đối phong phú với nhiều tên tuổi lớn phân phối đều trên các hạng mục như Broad Online Learning Platforms (nền tảng cung cấp khóa học online đại chúng – tiêu biểu như Coursera, Udemy, KhanAcademy,…) Learning Management Systems (hệ thống quản lý lớp học – tiêu biểu như Schoology, Edmodo, ClassDojo,…) Next-Gen Study Tools (công cụ hỗ trợ học tập – tiểu biểu như Kahoot!, Lumosity, Curriculet,…) Tech Learning (đào tạo công nghệ – tiêu biểu như Udacity, Codecademy, PluralSight,…), Enterprise Learning (đào tạo trong doanh nghiệp – tiêu biểu như Edcast, ExecOnline, Grovo,..),… Hiện nay thị trường EdTech tại Việt Nam đã đón nhận khoảng đầu tư khoảng 55 triệu đô cho lĩnh vực này nhiều đơn vị nước ngoài đang quan tâm mạnh đến thị trường này ngày càng nhiều hơn. Là một trong những xu hướng phát triển tốt, và có doanh nghiệp đã hoạt động khá lâu trong ngành nêu tại infographic như Topica, nhưng EdTech vẫn chỉ đang trong giai đoạn sơ khai tại Việt Nam. Tại Việt Nam, hệ sinh thái EdTech trong nước vẫn còn rất non trẻ và thiếu vắng nhiều tên tuổi trong các hạng mục như Enterprise Learning (mới chỉ có MANA), School Administration (hệ thống quản lý trường học) hay Search (tìm kiếm, so sánh trường và khóa học),… Với chỉ dưới 5% số dân công sở có sử dụng một trong các dịch vụ giáo dục online, EdTech cho thấy vẫn còn một thị trường rộng lớn đang chờ được khai phá. *** Vừa qua Station D đã công bố Báo cáo Vietnam IT Landscape 2019 đem đến cái nhìn toàn cảnh về các ứng dụng công...

By stationd