Khi nói tới ngành An toàn thông tin (ATTT), chúng ta thường nghe tới một số khái niệm như AppSec hay Application Security hay bảo mật ứng dụng. Vậy thì cụ thể nó là cái gì? cùng tìm hiểu nhé. Mục tiêu độc giả của bài viết này là những bạn quan tâm tới ATTT, nhưng chưa hiểu biết gì nhiều về ATTT cũng như an toàn ứng dụng.

1. Application Security là gì?

Bảo mật ứng dụng (Application Security, viết tắt là AppSec) là toàn bộ hoạt động dùng để tìm ra điểm yếu bảo mật trong phần mềm ứng dụng và sửa các điểm yếu đó, từ lúc bắt đầu phát triển cho đến khi ứng dụng đã đưa vào sử dụng. Mục tiêu là ngăn người không có quyền truy cập vào hệ thống, ngăn dữ liệu bị sửa trái phép, và ngăn ứng dụng bị lợi dụng sai mục đích. Nói ngắn gọn, AppSec là bảo vệ chính phần mềm mà tổ chức đang xây dựng và vận hành.

Nhiều người thường nghĩ bảo mật ứng dụng chỉ là đi vá lỗi sau khi phần mềm đã xong. Cách hiểu này chưa đầy đủ. AppSec không phải là một công cụ đơn lẻ và cũng không phải là một việc chỉ làm một lần. Nó là một quá trình liên tục. Trong quá trình đó, đội ngũ phát triển phải luôn kiểm tra xem ứng dụng có lỗ hổng bảo mật hay không, có nguy cơ bị đánh cắp dữ liệu hay không, có thể bị chỉnh sửa mã hoặc bị khai thác sai cách hay không. Vì vậy, AppSec là một phần của kỹ nghệ phần mềm (Software Engineering) và cũng là một phần rất quan trọng của an ninh mạng (Cybersecurity). 

Khi phần mềm ngày càng lớn, nhiều tính năng hơn, kết nối qua Internet nhiều hơn, dùng dịch vụ đám mây nhiều hơn, thì việc bảo vệ ứng dụng cũng khó hơn. Trước đây, một ứng dụng có thể chỉ chạy trên một máy tính hoặc một mạng nội bộ. Ngày nay, một ứng dụng có thể kết nối với cơ sở dữ liệu, dịch vụ thanh toán, dịch vụ xác thực, thiết bị di động, trình duyệt web và nhiều hệ thống bên ngoài khác. Mỗi điểm kết nối như vậy đều có thể trở thành nơi bị tấn công. Vì thế, AppSec hiện đại đòi hỏi đội ngũ phát triển và đội ngũ bảo mật phải làm việc cùng nhau xuyên suốt vòng đời phát triển phần mềm (Software Development Lifecycle, SDLC).

2. Mục tiêu cốt lõi của AppSec?

Về bản chất, AppSec tập trung vào hai đối tượng cần được bảo vệ.

Thứ nhất là dữ liệu nhạy cảm. Đây có thể là thông tin khách hàng, mật khẩu, hồ sơ tài chính, dữ liệu nhân sự, bí mật kinh doanh hoặc dữ liệu vận hành nội bộ. Nếu dữ liệu này bị lộ, bị sửa, hoặc bị xóa trái phép, tổ chức có thể bị thiệt hại rất lớn.

Thứ hai là chính mã nguồn và logic xử lý của ứng dụng. Nếu kẻ tấn công sửa được mã hoặc lợi dụng sai logic nghiệp vụ, ứng dụng có thể thực hiện các hành động không mong muốn. Ví dụ, một hệ thống bán hàng có thể bị lợi dụng để giảm giá sai, một hệ thống ngân hàng có thể bị bỏ qua bước kiểm tra quyền, hoặc một cổng thông tin nội bộ có thể bị đọc dữ liệu trái phép. AppSec vì vậy không chỉ xử lý các lỗi lập trình nhỏ, mà còn ngăn các lỗ hổng nghiêm trọng bị khai thác trong thực tế.

3. AppSec quan trọng vì sao?

AppSec đặc biệt quan trọng với mọi tổ chức có xử lý dữ liệu của khách hàng hoặc dữ liệu nhạy cảm. Khi xảy ra rò rỉ dữ liệu, thiệt hại không chỉ nằm ở mặt kỹ thuật. Tổ chức còn có thể mất tiền, mất khách hàng, mất uy tín, bị gián đoạn hoạt động, và thậm chí chịu hậu quả pháp lý. Vì vậy, một chương trình AppSec tốt giúp giảm rủi ro, giảm bề mặt tấn công (Attack Surface), và giúp đội phát triển phát hiện sớm vấn đề trước khi ứng dụng gây ảnh hưởng ra bên ngoài.

Trong môi trường hiện nay, dữ liệu không còn chỉ nằm ở một máy chủ nội bộ. Nó có thể đi qua nhiều mạng, nhiều dịch vụ đám mây, nhiều thiết bị người dùng và nhiều hệ thống bên thứ ba. Vì thế, chỉ bảo vệ mạng thôi là chưa đủ. Tổ chức còn phải bảo vệ từng ứng dụng một cách chủ động. Lý do là kẻ tấn công ngày càng nhắm trực tiếp vào ứng dụng, vì ứng dụng là nơi xử lý dữ liệu thật, tài khoản thật và các chức năng nghiệp vụ thật. Nếu ứng dụng yếu, thì dù mạng có tương đối an toàn, dữ liệu vẫn có thể bị đánh cắp.

Nếu bỏ qua AppSec, hậu quả có thể rất nghiêm trọng. Một sự cố bảo mật có thể làm dịch vụ phải dừng tạm thời, thậm chí đóng cửa vĩnh viễn trong các trường hợp nặng. Người dùng đã giao dữ liệu cá nhân cho tổ chức với kỳ vọng dữ liệu đó được giữ an toàn và riêng tư. Nếu ứng dụng không được bảo vệ tốt, người dùng có thể bị mất danh tính số, bị tổn thất tài chính, hoặc bị xâm phạm quyền riêng tư. Khi đó, niềm tin của khách hàng suy giảm mạnh, thương hiệu của tổ chức cũng bị tổn hại. Vì thế, đầu tư vào AppSec thực chất là đầu tư để bảo vệ cả tổ chức lẫn khách hàng.

Và khi nói tới một ứng dụng, nếu nó vốn dĩ đã được thiết kế dở tệ (ở khâu bảo mật) ngay từ đầu thì chi phí chỉnh sửa khi phát hiện vấn đề ở công đoạn phát triển / kiểm thử / triển khai và vận hành chắc chắn sẽ tốn kém hơn rất nhiều lần. Hình 1 cho thấy cơ cấu chi phí tăng từng thời điểm triển khai bảo mật: trong đó nếu Bảo mật được xem là một YÊU CẦU PHI CHỨC NĂNG QUAN TRỌNG thì chi phí xử lý sẽ rất rẻ, tuy nhiên không nghĩ tới nó ngay mà để đến khi hệ thống được đẩy lên phục vụ khách hàng thì chi phí xử lý là không thể đong đếm do phải tái thiết kế lại rất nhiều thành phần của ứng dụng.

Cost Of Mitigations for Security Bugs.png

Hình 1 - Tương quan giữa chi phí và thời điểm triển khai bảo mật

4. Các thành phần chính của AppSec?

AppSec không chỉ là quét lỗ hổng. Nó bao gồm nhiều cơ chế phối hợp với nhau.

  • Xác thực (Authentication) là bước kiểm tra người dùng là ai. Hệ thống cần xác nhận rằng người đang đăng nhập đúng là người mà họ khai báo. Việc này thường dùng mật khẩu, nhưng ngày nay có thể bổ sung sinh trắc học, mã OTP hoặc thiết bị vật lý. Khi hệ thống dùng nhiều lớp xác thực cùng lúc, ta gọi là xác thực đa yếu tố (Multifactor Authentication, MFA). Mục tiêu là không cho người lạ dễ dàng giả mạo tài khoản.

  • Phân quyền (Authorization) là bước quyết định người đã đăng nhập được làm gì. Một sinh viên có thể xem điểm của chính mình nhưng không được sửa điểm. Một giảng viên có thể nhập điểm lớp mình nhưng không được xem dữ liệu nhân sự. Một quản trị viên hệ thống có thể cấu hình máy chủ nhưng không nhất thiết được xem mọi dữ liệu nghiệp vụ. Nói cách khác, xác thực trả lời câu hỏi bạn là ai, còn phân quyền trả lời câu hỏi bạn được phép làm gì.

  • Mã hóa (Encryption) là kỹ thuật biến dữ liệu về dạng khó đọc nếu không có khóa giải mã. Cơ chế này đặc biệt quan trọng khi dữ liệu được truyền qua mạng hoặc được lưu trên hệ thống đám mây. Nếu dữ liệu bị chặn giữa đường hoặc bị lấy cắp từ nơi lưu trữ, mã hóa sẽ giúp giảm khả năng kẻ xấu đọc được nội dung thật.

  • Ghi log (Logging) là lưu lại các hoạt động quan trọng trong ứng dụng. Ví dụ, ai đăng nhập lúc nào, truy cập chức năng nào, thay đổi dữ liệu gì, có lỗi nào xảy ra. Log rất quan trọng vì khi có sự cố, đội kỹ thuật cần nhìn lại những gì đã diễn ra. Nếu không có log, việc điều tra gần như mù mờ. Tuy nhiên, ghi log cũng phải đúng cách, vì nếu log chứa quá nhiều dữ liệu nhạy cảm thì bản thân log lại trở thành rủi ro.

  • Kiểm thử (Testing) là xác nhận xem các biện pháp bảo vệ có thực sự hiệu quả hay không. Không thể chỉ nói rằng ứng dụng đã có đăng nhập, đã có mã hóa, đã có log là đủ an toàn. Phải kiểm thử để xem các cơ chế đó có bị bỏ qua hay không, có cấu hình sai hay không, và có lỗ hổng nào còn sót lại hay không.

5. AppSec mang lại lợi ích gì?

Lợi ích đầu tiên là giảm gián đoạn hoạt động. Khi ứng dụng an toàn hơn, khả năng bị treo dịch vụ, bị dừng hệ thống hoặc bị xử lý sự cố khẩn cấp sẽ giảm đi. Điều này rất quan trọng với các tổ chức đang phụ thuộc mạnh vào phần mềm để vận hành hằng ngày.

Lợi ích thứ hai là phát hiện vấn đề sớm. Nếu đội phát triển tìm ra lỗ hổng ngay trong giai đoạn viết mã hoặc kiểm thử, chi phí sửa thường thấp hơn rất nhiều so với lúc hệ thống đã đưa vào vận hành. Sửa sớm cũng tránh việc lỗi lan sang nhiều thành phần khác. Đây là một trong những giá trị lớn nhất của AppSec.

Lợi ích thứ ba là tăng niềm tin của khách hàng. Một ứng dụng có tiếng là an toàn và đáng tin cậy sẽ khiến người dùng yên tâm hơn khi sử dụng. Ngược lại, chỉ cần một sự cố lớn, thương hiệu có thể mất uy tín trong thời gian dài.

Lợi ích thứ tư là hỗ trợ tuân thủ pháp lý và tiêu chuẩn. Nhiều lĩnh vực phải tuân theo yêu cầu về bảo vệ dữ liệu, ví dụ trong y tế, tài chính, thanh toán hoặc dữ liệu cá nhân. AppSec giúp tổ chức giảm nguy cơ bị phạt, bị kiện hoặc gặp rắc rối khi kiểm tra tuân thủ.

Lợi ích thứ năm là tiết kiệm chi phí dài hạn. Chi phí cho một sự cố bảo mật thường không chỉ là sửa lỗi kỹ thuật. Nó còn bao gồm điều tra, khôi phục, luật sư, bồi thường, truyền thông khủng hoảng và mất doanh thu. Vì thế, đầu tư cho AppSec từ sớm thường rẻ hơn rất nhiều so với trả giá sau một vụ vi phạm dữ liệu.

Ngoài ra, AppSec còn giúp giảm rủi ro bị tấn công như mã độc (Malware), mã độc tống tiền (Ransomware), chèn bẩn (SQL/Command/XSS Injections). Nó cũng giúp bảo vệ dữ liệu nhạy cảm, giảm xác suất xảy ra sự cố và giữ gìn hình ảnh thương hiệu.

6. Quy trình AppSec diễn ra như thế nào?

Một quy trình AppSec tốt thường đi qua nhiều bước nối tiếp nhau.

  • Bước đầu tiên là đánh giá rủi ro và lập kế hoạch (Risk Assessment and Planning). Ở bước này, đội ngũ phải xem ứng dụng làm gì, xử lý loại dữ liệu nào, ai là người dùng, hệ thống kết nối với đâu và kẻ tấn công có thể lợi dụng đường nào để xâm nhập. Hoạt động hình dung các khả năng tấn công như vậy thường được gọi là mô hình hóa mối đe dọa (Threat Modeling). Sau khi hiểu rủi ro, nhóm dự án mới lập kế hoạch bảo vệ phù hợp.

  • Bước thứ hai là thiết kế và phát triển an toàn (Secure Design and Development). Đây là lúc bảo mật được đưa trực tiếp vào kiến trúc và cách viết mã. Nhóm phát triển cần tuân thủ nguyên tắc lập trình an toàn, kiểm tra dữ liệu đầu vào, xây dựng cơ chế xác thực đúng, xử lý lỗi hợp lý và tạo quy trình triển khai an toàn. Nếu chờ đến cuối mới lo bảo mật, chi phí sửa sẽ cao và dễ bỏ sót hơn nhiều.

  • Bước thứ ba là rà soát mã và kiểm thử (Code Review and Testing). Nhóm kỹ thuật đọc lại mã nguồn, kiểm tra logic, tìm lỗi lập trình, và dùng các kỹ thuật kiểm thử để phát hiện điểm yếu. Ở đây có cả kiểm tra mã tĩnh lẫn kiểm tra hành vi khi ứng dụng đang chạy. Mục tiêu là tìm lỗ hổng trước khi kẻ tấn công tìm thấy chúng.

  • Bước thứ tư là kiểm thử và đánh giá bảo mật (Security Testing and Evaluation). Bước này đi sâu hơn để xem các biện pháp phòng thủ có thực sự hiệu quả không. Nó có thể bao gồm quét lỗ hổng, đánh giá rủi ro và kiểm thử xâm nhập (Penetration Testing). Một số tổ chức còn dùng cách tiếp cận đối kháng mạnh hơn như red teaming để mô phỏng kẻ tấn công thật.

  • Bước cuối là triển khai, giám sát và bảo trì (Deployment and Monitoring). Sau khi phần mềm đưa vào vận hành, công việc bảo mật chưa kết thúc. Tổ chức vẫn phải theo dõi log, giám sát bất thường, cập nhật bản vá, sửa cấu hình và phản ứng nhanh khi có dấu hiệu tấn công. Đây là lý do AppSec là một vòng lặp liên tục chứ không phải một việc làm xong rồi thôi.

7. Tổng kết

Nếu giải thích thật dễ hiểu, có thể xem AppSec như việc bảo vệ một ngôi nhà số.

  • Ứng dụng là ngôi nhà.

  • Người dùng hợp lệ là người có chìa khóa.

  • Kẻ tấn công là người đang tìm cách vào nhà trái phép hoặc phá hoại tài sản trong nhà.

  • Xác thực là kiểm tra xem người vào nhà có đúng là chủ nhà hay khách được mời không.

  • Phân quyền là quyết định họ được vào phòng nào.

  • Mã hóa là cất tài liệu quan trọng trong két sắt.

  • Ghi log là camera ghi lại ai đã vào, vào lúc nào và làm gì.

  • Kiểm thử bảo mật là việc tự kiểm tra xem cửa có khóa chắc chưa, cửa sổ có hở không, và còn lối vào bí mật nào mà chủ nhà chưa biết hay không.

Lưu ý: cửa mà khóa theo kiểu check vân tay, bắt nhập mật khẩu, mở cửa qua app điện thoại, mỗi lần mở cửa mất 77 49 công đoạn thì SECURITY cao đấy, NHƯNG độ tiện dụng giảm mạnh, điều này cũng ảnh hưởng ko nhỏ tới người dùng, và vô hình chung làm giảm năng suất lao động mà như vậy thì ĐỘ TIN CÂY là chưa đạt. Anh kỹ sư ATTT phải là người cân bằng những yếu tố ấy với nhau.

AppSec là một quá trình bảo vệ ứng dụng từ khi còn đang thiết kế, đang viết mã, đang kiểm thử, cho đến khi đã đưa vào vận hành. Nó giúp ngăn truy cập trái phép, giảm rủi ro rò rỉ dữ liệu, bảo vệ mã nguồn và chức năng nghiệp vụ, đồng thời giảm thiểu hậu quả kinh doanh nếu có sự cố. AppSec không phải việc của riêng đội bảo mật, mà là trách nhiệm chung của tổ chức, đặc biệt là đội phát triển phần mềm. Muốn ứng dụng an toàn, phải đưa bảo mật vào từ sớm, kiểm tra liên tục, và duy trì giám sát sau triển khai. Đó là lý do AppSec hiện nay được xem là một phần bắt buộc của phát triển phần mềm hiện đại.

Chương trình đào tạo của trường đại học FPT có những môn học nào để đáp ứng nhu cầu trên không?

Có, Xem bảng bên dưới để biết các môn mình sẽ được học nhé

IDSubject CodeSubject Name
7061SDL201Secure Software Development Lifecycle_Vòng đời Phát triển Phần mềm an toàn
7062ASE201Application Security Evaluation_Đánh giá bảo mật ứng dụng
7063ADD301Application Security Desgin and Development_Thiết kế và phát triển bảo mật ứng dụng
7064DSO301DevSecOps_Tích hợp DevSecOps