Pentesting in Depth - Đánh giá an toàn thông tin nhiều lớp

Lời tựa

Những năm gần đây, thuật ngữ pentest đã không còn xa lạ trong môi trường doanh nghiệp tại Việt Nam. Ngày càng nhiều doanh nghiệp coi pentest là chốt chặn cuối cùng để đảm bảo rằng ứng dụng đã được an toàn. Đây là một tín hiệu rất đáng mừng cho sự phát triển của an toàn thông tin nước nhà. Tuy nhiên, cần nhớ rằng security không có khái niệm an toàn tuyệt đối, có chăng chỉ là an toàn trong tầm hiểu biết. Chính vì vậy, chỉ mình pentest chắc chắn không thể an tâm 100% rằng hệ thống đã được an toàn. Ngoài pentest, hệ thống cần được kết hợp thêm nhiều các dịch khác nhằm tăng cường góc nhìn, tăng tính phản biện cho quá trình tìm lỗ hổng. Trong bài viết này, tôi tạm gọi đó là Pentesting in Depth, mượn theo một khái niệm rất phổ biến trong security là Defense in Depth.

Pentest là gì?

Pentest là một phương thức cho phép kiểm tra mức độ an toàn của các hệ thống, hạ tầng. Cũng giống như các phương thức kiểm tra khác, mục tiêu của pentest là chỉ ra các lỗ hổng nhằm khắc phục và tăng cường mức độ an toàn cho hệ thống. Điểm khác ở đây là ở cách tiếp cận, các pentester khi tiếp cận đánh giá hệ thống sẽ thực hiện như những hacker thực thụ, các lỗ hổng chỉ ra cũng hoàn toàn có thể khai thác như đối với các hacker bên ngoài.

Có 3 phương thức triển khai pentest như sau:

  • Blackbox: các pentester thực hiện hoàn toàn như hacker, không được cung cấp tài khoản, mô tả hệ thống, pentester phải tự tìm hiểu hệ thống, nghiệp vụ, tự đăng ký tài khoản, tìm tài khoản,… Phương thức này cho phép triển khai công việc nhanh hơn tuy nhiên cũng sẽ dễ dẫn tới nhiều chức năng chưa được kiểm tra do nhóm đánh giá không có tài khoản hoặc không sử dụng được chức năng.
  • Whitebox: ở phương thức này, pentester được tiếp cận các thông tin bên trong của hệ thống, tương tác trao đổi nghiệp vụ với dev, thậm chí review cả source code. Phương thức này giúp pentester phát hiện được nhiều lỗ hổng tiềm ẩn hơn, thậm chí phát hiện được cả các lỗ hổng là back-door do dev để lại. Tuy nhiên, quá trình setup cho phương thức này sẽ phức tạp hơn và pentester hầu như phải onsite nên chi phí sẽ bị đội lên tương đối nhiều.
  • Graybox: phương thức này sẽ dung hòa cho 2 phương thức trên, với việc pentester được cung cấp các thông tin mức vừa phải, chỉ ngang với thông tin như những người dùng thông thường, có thể là các tài liệu hướng dẫn, tài khoản sử dụng hệ thống. Phương thức này vừa đảm bảo pentester có thể thực hiện kiểm tra đầy đủ các chức năng, vừa đảm bảo quá trình setup diễn ra nhanh chóng nên thường được ưu tiên lựa chọn để triển khai.

Xem thêm mô tả dịch vụ Pentest của Viettel Cyber Security tại đây.

Pentesting in Depth

Pentest nên được thực hiện ngay trước khi release ứng dụng

Trước tiên, cần khẳng định Pentest là cần thiết nhưng không phải là chìa khóa vạn năng cho sự an toàn của hệ thống. Cần phải loại bỏ suy nghĩ rằng hệ thống đã được pentest trước khi release là có thể yên tâm an toàn 100%. Thực tế sau khi release, hệ thống sẽ phải đối diện với rất nhiều nguy cơ có thể dẫn tới bị xâm nhập. Nguy cơ này có thể kể đến như: Môi trường triển khai thay đổi so với lúc pentest, thậm chí phiên bản ứng dụng đã bị thay đổi nhưng doanh nghiệp không kiểm soát được, hay những vấn đề trong thiết lập cấu hình cho hệ thống, cho máy chủ hay các vấn đề phổ biến khác như 0day, tấn công leo thang từ những hệ thống kế bên,…

Defense in Depth

Cũng giống như Defense in Depth trong hệ thống phòng thủ, Pentest cũng cần phải hướng tới nhiều các biện pháp ở các lớp khác nhau để bổ trợ lẫn nhau. Cụ thể cần tập trung bổ trợ 2 đặc tính như sau:

  • Tăng tính phản biện: Đây là tư duy chung của security, không thể tin tưởng tuyệt đối bất cứ thứ gì, vì vậy cần các biện pháp để phản biện lại các giải pháp hiện tại.
  • Tăng góc nhìn: Không thể có khái niệm an toàn tuyệt đối, có chăng chỉ là an toàn tuyệt đối trong một tầm hiểu biết nào đấy. Vì vậy, việc tăng góc nhìn trong đánh giá an toàn thông tin sẽ giúp cho doanh nghiệp có nhiều cái an toàn tuyệt đối hơn, từ đó khắc phục sớm các lỗ hổng, tránh được mối nguy từ các hacker bên ngoài.

Tăng tính phản biện - Redteam

Phản biện trong security sẽ giúp tăng khả năng phát hiện các vấn đề tồn tại do mindset cố định của một nhóm giải pháp hoặc vấn đề phát sinh do khoảng cách giữa các dịch vụ, giải pháp trong cùng một hệ thống. Cụ thể trong trường hợp này tôi muốn đề cập đến dịch vụ Redteam.

Dịch vụ Redteam cơ bản phục vụ mindset của doanh nghiệp trong việc tìm kiếm câu trả lời về mức độ hiệu quả của các giải pháp, dịch vụ ATTT đang sử dụng. Ví dụ như, ngân hàng A hàng năm bỏ ra chi phí hàng chục tỉ đồng cho việc mua sắm các giải pháp ATTT, triển khai các dịch vụ như giám sát, đào tạo, pentest,… nhằm mục tiêu lớn nhất là bảo vệ thông tin khách hàng hoặc cụ thể hơn là làm sao để khách hàng không bị hack tiền trong tài khoản. Nhưng liệu rằng với các sản phẩm và dịch vụ như hiện tại, tiền hay thông tin của khách hàng đã được an toàn hay chưa? Dịch vụ Redteam sẽ trả lời cho các câu hỏi dạng như vậy. Dịch vụ Redteam tập trung vào mục tiêu trọng yếu mà khách hàng quan tâm mức độ an toàn. Nhóm triển khai sẽ giả lập như một đợt tấn công thực tế của hacker bên ngoài nhằm khai thác để tìm cách xâm nhập, tiếp cận vào mục tiêu. Về cơ bản, quá trình triển khai dịch vụ sẽ mô phỏng sát nhất với các cuộc tấn công APT, tập trung thực hiện trên cả 3 hướng tấn công phổ biến:

  • Hệ thống public Internet: các hệ thống public Internet sẽ được xem xét và tìm cách xâm nhập, khai thác để đi sâu vào trong.
  • Người dùng: bằng các nghiệp vụ phishing, scam, khai thác email, … đội tấn công sẽ tìm cách xâm nhập vào máy tính người dùng, từ đó khai thác sâu vào các hệ thống nội bộ.
  • Đường vật lý, social engineering: trong trường hợp cần thiết, đội tấn công sẽ tiếp cận trực tiếp các cửa hàng, chi nhánh để rà quét wifi, các đường mạng, các đường USB để tìm đường leo thang.

Kết thúc dịch vụ, nhóm triển khai chiếm được hệ thống mục tiêu được gọi là một đợt triển khai thành công của dịch vụ. Doanh nghiệp sẽ nhận được thông tin về các lỗ hổng và con đường mà nhóm Redteam thực hiện khai thác vào hệ thống cũng như cách khắc phục. Với dịch vụ Redteam, doanh nghiệp không chỉ tìm được câu trả lời về sự hiệu quả của sự đầu tư ATTT hiện tại mà còn là cơ hội để rèn luyện thực hiện cho bộ máy ATTT nội bộ.

Tăng góc nhìn - Bugbounty

Redteam được coi là thành công khi nhóm triển khai chiếm được hệ thống mục tiêu. Câu hỏi đặt ra là nếu Redteam vẫn liên tiếp không thành công thì liệu hệ thống đã đảm bảo an toàn chưa? Tất nhiên là chưa, kết quả này có thể đến từ 2 nguyên nhân, một là môi trường, cách thức triển khai Redteam chưa thực sự đúng nghĩa cho một đợt mô phỏng tấn công APT và nguyên nhân thứ 2 là các góc nhìn của nhóm Redteam mà doanh nghiệp thuê đã cũ kỹ, cần phải có những góc nhìn mới. Bugbounty là phương án để doanh nghiệp có thể tăng góc nhìn về việc tìm lỗ hổng trong các hệ thống ứng dụng của mình.

Kết quả cuộc thi Pwn2Own 2022 của Viettel Cyber Security

Bug bounty là chương trình mà các công ty hoặc tổ chức tài trợ để thu hút các hacker mũ trắng, mũ xám tìm kiếm và báo cáo các lỗ hổng bảo mật trong hệ thống của họ. Thông thường, các lỗ hổng này sau khi tìm thấy theo một chính sách nhất định sẽ được báo cáo cho công ty chủ sở hữu hệ thống và nhận được khoản tiền thưởng tương ứng với mức độ nghiêm trọng của lỗ hổng. Bug bounty như là một cách để các doanh nghiệp giảm thiểu rủi ro bảo mật thông qua việc cùng lúc được đánh giá bởi hàng trăm, hàng nghìn các hacker trên toàn thế giới.

Bug bounty đã xuất hiện từ khá lâu trước khi thuật ngữ này được sử dụng chính thức. Năm 1983, tập đoàn Hunter & Ready đã tổ chức một cuộc thi tìm lỗi trong phần mềm và trả thưởng cho những người tìm ra được lỗi. Tuy nhiên, chương trình bug bounty hiện đại như chúng ta biết ngày nay được bắt đầu phát triển vào những năm 1990, khi Netscape Communications bắt đầu triển khai chương trình để thu hút các nhà nghiên cứu bảo mật tìm kiếm các lỗ hổng bảo mật trong trình duyệt Netscape Navigator. Sau đó, nhiều công ty công nghệ khác như Google, Facebook, Microsoft, Apple... cũng triển khai các chương trình bug bounty để bảo vệ hệ thống của mình.

Ngày nay, bug bounty đã trở thành một phần quan trọng của lĩnh vực bảo mật thông tin và được sử dụng rộng rãi bởi các công ty, tổ chức và chính phủ trên khắp thế giới. Các chương trình lớn có thể kể đến như Pwn2Own của ZDI, hay các chương trình do nền tảng BugCrowd, HackerOne tổ chức. Viettel Cyber Security cũng có nền tảng tương tự là SafeVuln (https://safevuln.com/)

Giai đoạn trước Pentest - DevSecOps

DevOps

Như đã đề cập ở nội dung trước, hệ thống nên được Pentest trước khi Release ra bên ngoài cho người dùng sử dụng. Tuy nhiên, với những quy trình phát triển hiện đại, khi tần suất release của ứng dụng lên đến đơn vị tuần thì Pentest chắc chắn sẽ thành điểm nghẽn cho toàn bộ Pipeline phát triển của hệ thống. Trong một tuần, các bộ phận ATTT có thể nhận được hàng chục các yêu cầu đánh giá ATTT nhưng mỗi yêu cầu chỉ có đâu đó 1 vài chức năng thay đổi. Nhiều doanh nghiệp đã tổ chức theo dạng cung cấp nhân sự an toàn thông tin gắn liền cho đội dự án. Tuy nhiên, theo tôi mô hình là không hiệu quả do mindset của nhân sự này lặp đi lặp lại, nhiều khi phải commit các kết quả vội vàng để kịp tiến độ, chắc chắn sẽ không tránh khỏi những sai sót.

DevSecOps best practices

Đưa an toàn thông tin vào ngay trong quá trình phát triển phần mềm là cách để ứng dụng an toàn ngay từ đầu, giảm thiểu khối lượng công việc pentest cho giai đoạn release. Cũng giống DevOps là tìm cách đưa quá trình Vận hành hệ thống (Operation) vào trong nội tại dự án, DevSecOps cũng sẽ tìm cách đưa quá trình Đảm bảo ATTT (Security) vào ngay trong nội tại của dự án. Để quá trình áp dụng này hiệu quả và đi vào đời sống, DevSecOps nên được thực hiện thông qua 8 best practices sau:

  • Xây dựng văn hóa DevSecOps trong tổ chức
  • Coi việc thiết kế bảo mật như thiết kế tính năng cho sản phẩm
  • Thực hiện các biện pháp đánh giá sớm các nguy cơ ATTT
  • Tối đa tự động hóa trong việc kiểm tra, đánh giá các vấn đề bảo mật
  • Xác định các thời điểm thích hợp để kích hoạt các công cụ rà soát bảo mật tương ứng
  • Chủ động tham gia các khóa đào tạo về nhận thức ATTT và lập trình an toàn
  • Luôn cập nhật kịp thời các bản vá bảo mật cho các thành phần phụ thuộc (framework, thư viện, plugin,…)
  • Tích hợp các công cụ tổng hợp và phân tích báo cáo về lỗ hổng bảo mật cho toàn bộ hệ thống

Tương ứng với các best practices như vậy, Viettel Cyber Security đã đưa ra dịch vụ DevSecOps hỗ trợ cho doanh nghiệp với 6 thành phần chính sau:

  • Tư vấn triển khai DevSecOps
  • Đánh giá Threat Modeling
  • Pentest định kỳ
  • Tích hơp hệ thống ATTT tự động
  • Security Advisor cho dự án
  • Đào tạo lập trình an toàn

Tham khảo chi tiết dịch vụ tại: https://viettelcybersecurity.com/vi/dich-vu-bao-mat-ung-dung-toan-dien/

Với việc áp dụng các nội dung này, ứng dụng sẽ được đảm bảo an toàn ngay trong khi phát triển, từ đó tốc độ release của sản phẩm sẽ nhanh hơn, kịp thời đáp ứng theo nhu cầu phát triển của thị trường.

Tổng kết

Pentesting in Depth

Cũng giống Defense in Depth, trong khái niệm Pentesting in Depth tôi cũng muốn đưa ra một mô hình tổng quan Đánh giá an toàn thông tin được bao bọc bởi nhiều lớp khác nhau. Từ lớp bên ngoài là việc Đưa hệ thống tiếp cận với tất cả Hacker trên thế giới (Bug bounty), đến vào trong là Redteam, Manual Pentest và cuối cùng là việc đảm bảo ATTT trong nội tại Đội dự án với các nhóm biện pháp như Đào tạo lập trình an toàn, Đánh giá Threat Modeling, Scanner tự động, Gate kiểm soát Vulnerability Management.

Nội dung bài viết này đã được tôi trình bày tại hội thảo "Xây dựng hệ thống phòng thủ chủ động và bảo vệ toàn diện cho doanh nghiệp hiện đại" do Công ty An ninh mạng Viettel tổ chức ngày 9/5/2023 (link nội dung hội thảo). Mọi người quan tâm bài trình bày có thể tải slide tại đây