HomeBlogLỗ hổng bảo mật là gì? – Tìm hiểu về lỗ hổng Website và Phần mềm
Security Assessment

Lỗ hổng bảo mật là gì? – Tìm hiểu về lỗ hổng Website và Phần mềm

CyStack blog14 phút để đọc
CyStack blog27/05/2024
Locker Avatar

CyStack Editor

Locker logo social
Reading Time: 14 minutes

Trong lĩnh vực an ninh mạng, lỗ hổng bảo mật là một điểm yếu có thể bị khai thác bởi một tác nhân xấu để thực hiện các cuộc tấn công mạng nhằm mục đích thực hiện các hành động phi pháp lên hệ thống mục tiêu.

Các lỗ hổng có thể cho phép kẻ tấn công chạy mã, truy cập bộ nhớ của hệ thống, cài đặt phần mềm độc hại và đánh cắp, phá hủy hoặc sửa đổi những dữ liệu nhạy cảm. Đây là một trong những nguyên nhân hàng đầu gây ra các cuộc tấn công mạng nhắm vào tổ chức, doanh nghiệp và gây ra thiệt hại lên tới hàng ngàn tỉ USD trên toàn cầu.

Vậy, lỗ hổng bảo mật thực sự là gì? Nó nguy hiểm đến mức nào? Và làm sao để chống lại các lỗ hổng để bảo vệ tổ chức an toàn trên internet? Cùng tham khảo bài viết sau đây.

Lỗ hổng bảo mật là gì?

Lỗ hổng bảo mật (tiếng Anh: vulnerability) là một khái niệm phổ biến trong giới an toàn thông tin. Có rất nhiều định nghĩa khác nhau về lỗ hổng, nhưng tất cả đều có điểm chung là ám chỉ một điểm yếu (kỹ thuật hoặc phi kỹ thuật) của một phần mềm, phần cứng, giao thức, hay một hệ thống thông tin.

Dưới đây là một số định nghĩa về lỗ hổng bảo mật:

  • Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST): Điểm yếu trong hệ thống thông tin, quy trình bảo mật hệ thống, kiểm soát nội bộ hoặc công tác triển khai có thể bị khai thác bởi tác nhân gây hại.
  • ISO 27005: Điểm yếu của một tài sản hoặc nhóm tài sản có thể bị khai thác bởi một hoặc nhiều mối đe dọa trên mạng, trong đó tài sản là bất cứ thứ gì có giá trị đối với tổ chức, hoạt động kinh doanh của tổ chức và tính liên tục của những hoạt động đó, bao gồm các tài nguyên thông tin hỗ trợ sứ mệnh của tổ chức.
  • IETF RFC 4949: Một lỗ hổng hoặc điểm yếu trong thiết kế, triển khai hoặc vận hành và quản lý của hệ thống có thể bị khai thác để vi phạm chính sách bảo mật của hệ thống.
  • ENISA: Sự tồn tại của một điểm yếu, thiết kế hoặc lỗi triển khai có thể dẫn đến một sự cố không mong muốn làm tổn hại đến bảo mật của hệ thống máy tính, mạng, ứng dụng hoặc giao thức liên quan.
  • The Open Group: Xác suất khả năng của mối đe dọa vượt quá khả năng chống lại mối đe dọa đó.
  • Phân tích nhân tố về rủi ro thông tin: Xác suất một tài sản sẽ không thể chống lại hành động của một tác nhân đe dọa.
  • ISACA: Một điểm yếu trong thiết kế, triển khai, vận hành hoặc kiểm soát nội bộ.

Để khai thác lỗ hổng, kẻ tấn công phải có khả năng kết nối với hệ thống máy tính. Các lỗ hổng có thể bị khai thác bằng nhiều phương pháp khác nhau, ví dụ như SQL injection, lỗi tràn bộ đệm (buffer overflows), cross-site scripting (XSS) và bộ công cụ khai thác nguồn mở nhằm tìm kiếm các lỗ hổng đã biết và các điểm yếu bảo mật trong các ứng dụng web.

Khi nhắc đến lỗ hổng, người ta thường hiểu là lỗ hổng kĩ thuật, tức là lỗi của phần mềm, phần cứng, thay vì lỗi của con người. Mặc dù lỗi của nhân sự cũng là một loại lỗ hổng.

Lỗ hổng bảo mật thường xuất hiện ở:

  • website (hay các ứng dụng web), ứng dụng mobile
  • các thiết bị IoT
  • hệ điều hành và các phần mềm
  • mã nguồn (source code), API
  • cơ chế xác thực, các giao thức truyền tải, mã hóa
  • hệ thống mạng, thiết bị mạng, v.v.

>> Đọc thêm: OWASP TOP 10 lỗ hổng bảo mật của website

Nguyên nhân gây ra lỗ hổng

Có nhiều nguyên nhân gây ra lỗ hổng bao gồm:

  • Độ phức tạp: Các hệ thống phức tạp làm tăng xác suất của lỗ hổng, sai sót trong cấu hình hoặc truy cập ngoài ý muốn.
  • Tính phổ biến: Các loại mã, phần mềm, hệ điều hành và phần cứng có tính phổ biến sẽ làm tăng khả năng kẻ tấn công có thể tìm thấy hoặc có thông tin về các lỗ hổng đã biết.
  • Mức độ kết nối: Thiết bị càng được kết nối nhiều thì khả năng xuất hiện lỗ hổng càng cao.
  • Quản lý mật khẩu kém: Những mật khẩu yếu có thể bị phá bằng tấn công brute-force và việc sử dụng lại mật khẩu có thể dẫn đến từ một vi phạm dữ liệu trở thành nhiều vụ vi phạm xảy ra.
  • Lỗi hệ điều hành: Giống như bất kỳ phần mềm nào khác, hệ điều hành cũng có thể có lỗ hổng. Các hệ điều hành không an toàn – chạy mặc định và để tất cả mọi người dùng có quyền truy cập đầy đủ sẽ có thể cho phép vi-rút và phần mềm độc hại thực thi các lệnh.
  • Việc sử dụng Internet: Internet có rất nhiều loại phần mềm gián điệp và phần mềm quảng cáo có thể được cài đặt tự động trên máy tính.
  • Lỗi phần mềm: Lập trình viên có thể vô tình hoặc cố ý để lại một lỗi có thể khai thác trong phần mềm.
  • Đầu vào của người dùng không được kiểm tra: Nếu trang web hoặc phần mềm cho rằng tất cả đầu vào đều an toàn, chúng có thể thực thi các lệnh SQL ngoài ý muốn.
  • Con người: Lỗ hổng lớn nhất trong bất kỳ tổ chức nào là con người đằng sau hệ thống đó. Tấn công phi kỹ thuật (social engineering) là mối đe dọa lớn nhất đối với đa số các tổ chức.

Các lỗ hổng đã biết có nên được tiết lộ công khai hay không?

Việc có tiết lộ công khai các lỗ hổng đã biết hay không vẫn còn là một vấn đề gây tranh cãi với hai luồng ý kiến:

  • Tiết lộ công khai ngay lập tức (full disclosure): Một số chuyên gia an ninh mạng ủng hộ việc tiết lộ công khai thông tin về một lỗ hổng mới ngay thời điểm họ tìm ra. Như vậy, nhà cung cấp có thể sẽ không kịp trở tay để cập nhật bản vá lỗ hổng và các hacker có nhiều khả năng khai thác hơn. Tuy nhiên, những người đồng ý với phương án này tin rằng làm như vậy sẽ thúc đẩy hành động bảo mật phần mềm và vá lỗ hổng nhanh hơn.
  • Tiết lộ có trách nhiệm (responsible disclosure): một số người lại không đồng ý với full disclosure vì họ cho rằng những lỗ hổng này sẽ bị khai thác bởi tác nhân xấu. Họ cho rằng việc giới hạn thông tin chỉ với một số nhóm liên quan nhất định sẽ làm giảm rủi ro lỗ hổng bị khai thác.

Trong trường hợp này, cả hai quan điểm đều có những lý lẽ chính xác. Dù đứng về bên nào đi nữa thì có một sự thật là giờ đây, dù là những ethical hacker hay tội phạm mạng đều thường xuyên tìm kiếm các lỗ hổng và rà soát các điểm khai thác đã biết.

Một số doanh nghiệp sở hữu các đội bảo mật nội bộ có nhiệm vụ kiểm tra bảo mật CNTT và các biện pháp bảo mật khác của tổ chức. Đó là một phần quy trình đánh giá rủi ro thông tin tổng thể và quản lý rủi ro an ninh mạng của họ.

Các công ty ngày nay thường trao tiền thưởng cho việc phát hiện lỗi (được gọi là bug bounty) để khuyến khích các hacker mũ trắng tìm ra và báo cáo các lỗ hổng cho doanh nghiệp thay vì khai thác chúng. Các chương trình này đều rất hiệu quả và có thể giúp giảm thiểu rủi ro cho tổ chức, giúp họ tránh khỏi những tổn thất vô cùng lớn do dữ liệu bị xâm phạm.

Thông thường, số tiền thưởng cho việc phát hiện lỗi sẽ tương xứng với quy mô của tổ chức, khó khăn trong việc khai thác lỗ hổng và tác động của lỗ hổng. Ví dụ: việc tìm thấy rò rỉ dữ liệu thông tin nhận dạng cá nhân (PII) của một công ty thuộc danh sách Fortune 500 (danh sách 500 công ty lớn nhất Hoa Kỳ) chắc chắn sẽ có giá trị tiền thưởng cao hơn so với mức tiền thưởng cho việc phát hiện vi phạm dữ liệu tại một cửa hàng địa phương.

>> Tại sao Bug bounty là giải pháp bảo mật phù hợp với SME và startup?

Sự khác biệt giữa lỗ hổng và rủi ro là gì?

Rủi ro an ninh mạng thường được phân loại là một dạng lỗ hổng. Tuy nhiên, lỗ hổng (vulnerability) và rủi ro (risk) không giống nhau.

Cần hiểu rằng rủi ro là xác suất và tác động của việc một lỗ hổng bị khai thác. Nếu tác động và xác suất này là thấp thì có nghĩa là mức rủi ro thấp. Ngược lại, nếu tác động và xác suất này là cao nghĩa là mức rủi ro cao.

tam giác CIA trong an toàn thông tin mạng

Nói chung, tác động của một cuộc tấn công mạng có thể được gắn với tam giác CIA (Confidentiality – tính bảo mật, Integrity – tính toàn vẹn và Availability – tính sẵn có) của tài nguyên. Theo đó, có những trường hợp lỗ hổng phổ biến lại không mang rủi ro. Ví dụ: một hệ thống thông tin có lỗ hổng nhưng lại không có giá trị đối với tổ chức của bạn.

Khi nào một lỗ hổng có thể bị khai thác?

Khai thác lỗ hổng bảo mật

Một lỗ hổng với ít nhất một vec-tơ tấn công được xếp vào loại lỗ hổng có thể khai thác. Cửa sổ của lỗ hổng (window) là thời gian từ khi lỗ hổng được xác định đến khi được vá.

Nếu doanh nghiệp có các hoạt động bảo mật nghiêm ngặt thì đối với tổ chức đó, lỗ hổng sẽ không thể bị khai thác.

Ví dụ: nếu bạn đã cấu hình S3 bucket chính xác thì xác suất rò rỉ dữ liệu sẽ thấp. Vì vậy, hãy kiểm tra cấu hình bảo mật S3 của bạn trước khi sự cố đáng tiếc xảy ra.

Tấn công khai thác lỗ hổng zero-day là gì?

Tấn công khai thác lỗ hổng zero-day (hay 0-day) nhằm mục đích khai thác lỗ hổng zero-day. Lỗ hổng zero-day (hoặc 0-day) là lỗ hổng mà những người muốn vá nó chưa xác định hoặc giải quyết được.

Cho đến khi lỗ hổng được vá, kẻ tấn công có thể khai thác nó để gây ảnh hưởng tiêu cực đến chương trình máy tính, kho dữ liệu, máy tính hoặc mạng.

“Day Zero” là ngày mà các bên quan tâm có thông tin về lỗ hổng bảo mật, từ đó sẽ có được bản vá hoặc cách khắc phục để tránh bị khai thác.

Điều quan trọng mà chúng ta cần phải hiểu được là thời gian kể từ Day Zero càng ngắn thì khả năng không phát triển được bản vá hoặc phương án giảm thiểu nào lại càng cao và nguy cơ bị tấn công cũng sẽ càng cao.

Quản lý lỗ hổng là gì?

Quản lý lỗ hổng là một hoạt động theo chu kỳ trong việc xác định, phân loại, khắc phục và giảm thiểu các lỗ hổng bảo mật. Các yếu tố cơ bản của quản lý lỗ hổng bao gồm phát hiện lỗ hổng, đánh giá lỗ hổng và khắc phục.

Các phương pháp phát hiện lỗ hổng bao gồm:

Khi một lỗ hổng được tìm thấy, nó sẽ trải qua quá trình đánh giá lỗ hổng như sau:

  • Xác định các lỗ hổng: Phân tích các lần quét hệ thống mạng, kết quả pentest, nhật ký tường lửa và kết quả quét lỗ hổng để tìm ra sự bất thường cho thấy một cuộc tấn công mạng có thể lợi dụng lỗ hổng đó.
  • Xác minh lỗ hổng: Xác định xem lỗ hổng đã được nhận diện có thể bị khai thác hay không và phân loại mức độ nghiêm trọng của việc khai thác đó để hiểu mức độ rủi ro
  • Giảm thiểu các lỗ hổng: Xác định các biện pháp đối phó và cách đo lường hiệu quả của chúng trong trường hợp không có bản vá.
  • Khắc phục lỗ hổng: Cập nhật phần mềm hoặc phần cứng bị ảnh hưởng nếu có thể.

Do thực tế là các cuộc tấn công mạng liên tục phát triển, quản lý lỗ hổng phải là một hoạt động liên tục và lặp đi lặp lại để đảm bảo rằng doanh nghiệp vẫn luôn được bảo vệ.

Quét lỗ hổng là gì?

Trình quét lỗ hổng là phần mềm được thiết kế để đánh giá máy tính, mạng hoặc ứng dụng xem có xuất hiện các lỗ hổng đã biết nào không. Các phần mềm này có thể xác định và phát hiện các lỗ hổng phát sinh từ cấu hình sai và lập trình lỗi trong hệ thống mạng và thực hiện quét xác thực và không xác thực:

  • Quét xác thực: Cho phép trình quét lỗ hổng truy cập trực tiếp vào các tài sản được nối mạng bằng các giao thức quản trị từ xa như secure shell (SSH) (tạm dịch: môi trường an toàn) hoặc remote desktop protocol (RDP) (tạm dịch: giao thức điều khiển máy tính từ xa) và xác thực bằng thông tin hệ thống được cung cấp. Điều này cho phép truy cập vào dữ liệu cấp thấp như các dịch vụ cụ thể và chi tiết cấu hình, cung cấp thông tin chi tiết và chính xác về hệ điều hành, phần mềm được cài đặt, các vấn đề cấu hình và các bản vá bảo mật còn thiếu.
  • Quét không xác thực: Kết quả là nhận diện sai và thông tin không đáng tin cậy về hệ điều hành và phần mềm được cài đặt. Phương pháp này thường được những kẻ tấn công mạng và các nhà phân tích bảo mật sử dụng để thử và xác định tình hình bảo mật của các tài sản phải đối mặt với môi trường bên ngoài và để tìm xem dữ liệu có khả năng bị rò rỉ hay không.

Kiểm thử xâm nhập là gì?

Kiểm thử xâm nhập, còn được gọi là pentest hoặc hack “có đạo đức” (ethical hacking), là hoạt động kiểm tra một tài sản công nghệ thông tin để tìm lỗ hổng bảo mật mà kẻ tấn công có thể khai thác. Kiểm thử xâm nhập có thể được tự động hóa với phần mềm hoặc được thực hiện thủ công.

Dù bằng cách nào, quá trình này vẫn là thu thập thông tin về mục tiêu, xác định các lỗ hổng có thể có, cố gắng khai thác chúng và báo cáo về các phát hiện đó.

Kiểm thử xâm nhập cũng có thể được sử dụng để kiểm tra chính sách bảo mật của tổ chức, sự tôn trọng các yêu cầu tuân thủ, nhận thức về bảo mật của nhân viên và khả năng tổ chức có thể xác định và ứng phó với các sự cố bảo mật.

>> Dịch vụ kiểm thử xâm nhập chất lượng cao

Google hack là gì?

Google hack là việc sử dụng một công cụ tìm kiếm, chẳng hạn như Google hoặc Bing của Microsoft để xác định vị trí các lỗ hổng bảo mật. Người ra thực hiện Google hack thông qua việc sử dụng các công cụ tìm kiếm nâng cao trong truy vấn nhằm xác định thông tin khó tìm hoặc thông tin đang vô tình bị lộ thông qua sai sót cấu hình của các dịch vụ đám mây.

Các nhà nghiên cứu bảo mật và kẻ tấn công sử dụng các truy vấn định trước này để tìm ra những thông tin nhạy cảm mà người ta không có ý định công khai.

Những lỗ hổng này có xu hướng rơi vào hai loại:

  1. Lỗ hổng phần mềm
  2. Cấu hình sai

Tuy nhiên, phần lớn những kẻ tấn công sẽ có xu hướng tìm kiếm các sai sót cấu hình phổ biến của người dùng mà chúng đã biết cách khai thác và chỉ đơn giản là quét các hệ thống có lỗ hổng bảo mật đã biết.

Để ngăn chặn Google hack, cần phải đảm bảo rằng tất cả các dịch vụ đám mây đều được cấu hình đúng. Điều gì mà đã hiển thị trên Google là sẽ công khai cho dù bạn có muốn hay không.

Mặc dù đúng là Google xóa bộ nhớ cache định kỳ nhưng cho đến lúc đó các tệp nhạy cảm của doanh nghiệp vẫn bị hiển thị công khai.

Cơ sở dữ liệu về lỗ hổng là gì?

Cơ sở dữ liệu về lỗ hổng là một nền tảng thu thập, duy trì và chia sẻ thông tin về các lỗ hổng đã được phát hiện. MITRE là tổ chức điều hành một trong những CVE (Các lỗ hổng và thông tin bị lộ phổ biến) lớn nhất và tính điểm số trên Hệ thống tính điểm lỗ hổng phổ biến (CVSS) để phản ánh rủi ro tiềm ẩn mà lỗ hổng có thể gây ra cho tổ chức.

Đây là danh sách chủ đạo của các CVE, đóng vai trò là nền tảng cho nhiều trình quét lỗ hổng.

Lợi ích của các cơ sở dữ liệu công khai về lỗ hổng là giúp các tổ chức phát triển, ưu tiên và thực hiện các bản vá và các biện pháp giảm thiểu khác để khắc phục các lỗ hổng quan trọng.

Tuy nhiên, các cơ sở dữ liệu này cũng có thể tạo ra thêm các lỗ hổng bổ sung từ các bản vá được phát hành vội vàng để sửa lỗ hổng đầu tiên nhưng lại tạo ra lỗ hổng khác.

Hãy xem lại các lý lẽ tranh luận về việc nên tiết lộ đầy đủ về lỗ hổng hay ở mức độ hạn chế ở mục trên.

Danh sách các lỗ hổng phổ biến trong cơ sở dữ liệu về lỗ hổng bao gồm:

  • Thất bại trong triển khai ban đầu: Nhiệm vụ của cơ sở dữ liệu có vẻ rất hợp lý nhưng lại không có sự kiểm tra nghiêm ngặt, lỗ hổng có thể cho phép kẻ tấn công xâm nhập. Kiểm soát bảo mật kém, mật khẩu yếu hoặc cài đặt bảo mật mặc định có thể khiến cho các tài liệu nhạy cảm bị truy cập công khai.
  • SQL injection: Các cuộc tấn công cơ sở dữ liệu thường được ghi lại trong cơ sở dữ liệu về lỗ hổng.
  • Cấu hình sai: Các công ty thường không định cấu hình các dịch vụ đám mây của họ một cách chính xác, tạo ra lỗ hổng và khiến cho những dịch vụ này có thể bị truy cập công khai.
  • Kiểm toán không đầy đủ: Nếu không có kiểm toán, rất khó để biết liệu dữ liệu đã được sửa đổi hay truy cập hay chưa. Cơ sở dữ liệu về lỗ hổng đã cho thấy tầm quan trọng của kiểm toán – đó là một biện pháp ngăn chặn các cuộc tấn công mạng.

Các ví dụ về lỗ hổng

Các lỗ hổng có thể được phân thành sáu loại lớn như sau:

  1. Phần cứng: Dễ bị ẩm, bụi, bẩn, thiên tai, mã hóa kém hoặc lỗ hổng firmware.
  2. Phần mềm: Kiểm tra không đầy đủ, thiếu dấu vết kiểm toán (audit trail), lỗi thiết kế, vi phạm an toàn bộ nhớ như tràn bộ đệm, bộ đêm đọc quá mức (over-reads), dangling pointers (tạm dịch: con trỏ lơ lửng), lỗi xác thực đầu vào (code injection, cross-site scripting (XSS), directory traversal, email injection, tấn công format string, HTTP header injection, HTTP response splitting, SQL injection), lỗi nhầm lẫn đặc quyền (clickjacking, giả mạo yêu cầu liên trang – cross-site request forgery, FTP bounce attack), tranh đoạt điều khiển – race conditions (symlink race, lỗi thời gian kiểm tra đến thời gian sử dụng), tấn công qua kênh phụ – side channel attack, timing attack và lỗi giao diện người dùng (đổ lỗi cho nạn nhân – blaming the victim, tranh đoạt điều khiển, warning fatigue).
  3. Mạng: Đường truyền thông không được bảo vệ, tấn công trung gian, kiến ​​trúc mạng không an toàn, thiếu xác thực hoặc xác thực mặc định.
  4. Nhân sự: Chính sách tuyển dụng kém, thiếu nhận thức và chương trình đào tạo về bảo mật, tuân thủ kém về đào tạo bảo mật, quản lý mật khẩu kém hoặc tải xuống phần mềm độc hại qua tệp đính kèm email.
  5. Vị trí địa lý: Khu vực chịu thảm họa tự nhiên, nguồn điện không ổn định hoặc không có quyền truy cập thẻ khóa.
  6. Tổ chức: Thiếu kiểm toán, kế hoạch liên tục, bảo mật hoặc kế hoạch ứng phó sự cố.

Giải pháp phòng chống lỗ hổng của CyStack

CyStack cung cấp các giải pháp giúp doanh nghiệp chống lại các lỗ hổng bảo mật trong ứng dụng. Qua đó giảm thiểu khả năng trở thành đối tượng của một cuộc tấn công mạng, phòng chống thất thoát dữ liệu quan trọng.

1. Nền tảng WhiteHub (whitehub.net)

  • Kết nối doanh nghiệp với cộng đồng chuyên gia bảo mật để tìm lỗ hổng trong sản phẩm công nghệ.
  • Triển khai – Quản lý chương trình Bug bounty, trao thưởng và giao tiếp chuyên gia.
  • Vulnerability Management – Quản lý lỗ hổng (tiếp nhận, phân loại, xác minh, khắc phục)

2. Dịch vụ Penetration Testing: Kiểm thử xâm nhập hiệu quả gấp 7 lần phương pháp truyền thống & chi phí phù hợp với mọi quy mô doanh nghiệp từ tập đoàn cho đến doanh nghiệp vừa và nhỏ, start-up.

3. Dịch vụ CyStack Endpoint: Bảo mật điểm cuối, bảo mật thiết bị nhân viên trong doanh nghiệp và xây dựng chính sách sử dụng thiết bị an toàn.

>>> Liên hệ với CyStack để được chuyên gia tư vấn giải pháp bảo mật phù hợp cho công ty của bạn.

CyStack blog

Mẹo, tin tức, hướng dẫn và các best practice độc quyền của CyStack

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.