Cuối tuần qua, hacker Dương Minh Tâm ở TPHCM đã bị bắt vì can thiệp trái phép hệ thống ngân hàng 7 lần để chiếm đoạt 10 tỉ đồng. Tâm đã chỉnh sửa mã lệnh tài sản cầm cố là sổ tiết kiệm trị giá 1 triệu đồng thành trên 51.244 tỉ đồng. Làm thế nào Tâm làm được điều đó?
Các bản tin báo chí không nêu cụ thể phương thức Tâm thực hiện nhưng việc hacker chỉnh sửa mã lệnh tài sản của ngân hàng có thể diễn ra thông qua một số kịch bản khác nhau, tùy thuộc vào các lỗ hổng bảo mật và điểm yếu của hệ thống ngân hàng. Dưới đây là một số phương pháp mà hacker có thể sử dụng:
- Sử dụng lỗ hổng trong phần mềm: Nếu hệ thống ngân hàng có lỗ hổng bảo mật trong phần mềm hoặc ứng dụng mà mã lệnh tài sản được xử lý, hacker có thể khai thác lỗ hổng này để thực hiện chỉnh sửa dữ liệu.
- Tấn công trung gian (Man-in-the-Middle): Hacker có thể tạo ra một môi trường tấn công trung gian, nơi mà lưu lượng giao tiếp giữa người dùng và hệ thống ngân hàng được chuyển tiếp qua máy chủ điều khiển bởi hacker. Khi thông tin về mã lệnh tài sản được truyền đi, hacker có thể thay đổi nó trước khi gửi tiếp đến hệ thống ngân hàng.
- Sử dụng mã độc (malware): Hacker có thể cài đặt mã độc vào máy tính hoặc hệ thống của người dùng trong ngân hàng, từ đó kiểm soát hoặc thay đổi thông tin gửi đi hoặc đến từ hệ thống ngân hàng.
- Lợi dụng quyền truy cập không hợp lệ: Nếu hacker có thể lấy được quyền truy cập không hợp lệ vào hệ thống ngân hàng hoặc vào tài khoản người dùng có quyền truy cập vào mã lệnh tài sản, hacker có thể thực hiện chỉnh sửa.
Lưu ý rằng những phương pháp này chỉ là một số ví dụ và không đầy đủ. Các hacker có thể tận dụng nhiều phương pháp khác nhau để xâm nhập vào hệ thống ngân hàng và thực hiện các hành vi không hợp pháp như chỉnh sửa mã lệnh tài sản.
Xét theo thực tế thì khả năng Dương Minh Tâm đã sử dụng phương pháp thứ nhất, sử dụng lỗ hổng trong phần mềm, có thể bao gồm các kỹ thuật như:
Sử dụng lỗ hổng bảo mật phần mềm: Hacker tìm ra và khai thác các lỗ hổng bảo mật trong phần mềm mà hệ thống ngân hàng đang sử dụng. Điều này có thể là một lỗ hổng trong mã nguồn, thiết kế phần mềm, hay việc không cập nhật phiên bản phần mềm mới nhất. Hacker sẽ tìm cách tận dụng lỗ hổng này để xâm nhập vào hệ thống và thực hiện chỉnh sửa mã lệnh tài sản.
Ví dụ: Nếu phần mềm quản lý tài sản của ngân hàng có một lỗi lập trình cho phép truy cập không ủy quyền vào mã lệnh tài sản, hacker có thể khai thác lỗ hổng này để truy cập và thay đổi dữ liệu.
Chính xác cách hacker sử dụng lỗ hổng phụ thuộc vào các chi tiết kỹ thuật cụ thể của phần mềm và hệ thống ngân hàng, và không có thông tin chi tiết nào được cung cấp trong bản tin ban đầu.
Làm sao hacker biết phần mềm ngân hàng có lỗ hổng?
Có một số cách mà hacker có thể biết về lỗ hổng trong phần mềm ngân hàng:
- Nghiên cứu và phân tích: Hacker có thể nghiên cứu kỹ thuật và kiến thức về phần mềm ngân hàng để tìm ra các lỗ hổng có thể tồn tại trong mã nguồn hoặc thiết kế phần mềm. Điều này có thể đòi hỏi kiến thức sâu về lĩnh vực công nghệ thông tin và an ninh mạng.
- Theo dõi các diễn đàn và cộng đồng hacker: Có một số diễn đàn và cộng đồng trực tuyến mà hacker có thể trao đổi thông tin về các lỗ hổng bảo mật, chia sẻ kỹ thuật và tìm kiếm thông tin về phần mềm ngân hàng.
- Kiểm tra các bản vá lỗi: Khi một phần mềm được cập nhật, nhà cung cấp thường phát hành các bản vá lỗi để khắc phục các lỗ hổng đã được phát hiện. Hacker có thể kiểm tra các bản vá lỗi này để xác định các lỗ hổng còn tồn tại trong phiên bản phần mềm hiện tại của ngân hàng.
- Sử dụng công cụ quét lỗ hổng: Có các công cụ tự động được phát triển để quét và phát hiện lỗ hổng bảo mật trong phần mềm. Hacker có thể sử dụng các công cụ này để tìm ra các lỗ hổng trong phần mềm ngân hàng.
Hacker có thể tạo lỗ hổng mới bằng cách tìm và khai thác các lỗ hổng trong phần mềm. Kỹ thuật này thường được gọi là “zero-day exploit” và đòi hỏi kiến thức sâu và kỹ năng lập trình cao. Tuy nhiên, không có thông tin cụ thể trong bản tin ban đầu nên không thể xác định liệu hacker đã sử dụng lỗ hổng tồn tại hay tự tạo lỗ hổng.
Hacker có thể tự tạo ra lỗ hổng của ngân hàng để xâm nhập. Đây thường được gọi là “lỗ hổng tùy chỉnh” (custom vulnerability). Hacker có thể thực hiện điều này bằng cách:
- Tìm và khai thác lỗ hổng chưa biết: Hacker có thể tìm ra các lỗ hổng bảo mật chưa được công bố hoặc chưa được nhà cung cấp phát hiện. Điều này yêu cầu hacker có kiến thức sâu về lĩnh vực bảo mật và khả năng phân tích, nghiên cứu phần mềm.
- Sử dụng lỗ hổng phụ thuộc vào cấu hình: Hacker có thể tìm ra các lỗ hổng bảo mật phụ thuộc vào cấu hình hệ thống, chẳng hạn như một cấu hình sai hoặc không an toàn. Hacker có thể tận dụng cấu hình không đúng hoặc không an toàn này để xâm nhập vào hệ thống.
- Tạo ra lỗ hổng thông qua mã độc (malware): Hacker có thể cài đặt mã độc vào hệ thống ngân hàng, từ đó tạo ra một lỗ hổng để có thể truy cập và kiểm soát hệ thống từ xa.
Tuy nhiên, việc tạo ra lỗ hổng tùy chỉnh và khai thác chúng đòi hỏi kiến thức sâu về lĩnh vực bảo mật, kỹ năng lập trình và phân tích. Đồng thời, nó là hành vi bất hợp pháp và bị coi là một tội phạm máy tính.
Trường hợp hacker này nhiều khả năng đã khai thác lỗ hổng API ứng dụng. Khi hacker khai thác lỗ hổng của API ứng dụng, họ tận dụng các điểm yếu hoặc lỗi trong việc thiết kế, triển khai hoặc quản lý API để xâm nhập vào hệ thống hoặc thực hiện các hành vi không hợp pháp. Dưới đây là một số phương pháp thường được sử dụng:
- SQL Injection: Hacker tìm cách chèn các câu lệnh SQL độc hại vào các tham số đầu vào của API. Nếu API không kiểm tra và xử lý đầu vào đúng cách, hacker có thể khai thác lỗ hổng này để thực hiện các truy vấn SQL không hợp lệ, có thể dẫn đến lấy thông tin nhạy cảm hoặc thay đổi dữ liệu trong cơ sở dữ liệu.
- Cross-Site Scripting (XSS): Hacker chèn mã độc JavaScript vào phản hồi của API và khi người dùng truy cập vào trang web hoặc ứng dụng sử dụng API này, mã độc sẽ được thực thi trong trình duyệt của họ. Điều này có thể cho phép hacker đánh cắp thông tin người dùng, điều hướng người dùng đến trang web độc hại hoặc thực hiện các hành động không mong muốn khác.
- XML External Entity (XXE) Attack: Hacker sử dụng các kỹ thuật khai thác lỗ hổng trong xử lý XML của API để thực hiện các cuộc tấn công. Bằng cách chèn các thực thể XML bên ngoài vào yêu cầu hoặc phản hồi của API, hacker có thể đọc, ghi hoặc thực thi các tệp tin hệ thống, từ đó có thể truy cập và thay đổi dữ liệu quan trọng.
- Authentication and Authorization Attacks: Hacker tìm cách đánh lừa hoặc vượt qua quy trình xác thực và ủy quyền trong API. Điều này có thể bao gồm việc tìm lỗ hổng trong việc quản lý phiên, tấn công bằng brute-force để đoán mật khẩu, lợi dụng các lỗ hổng trong việc xác thực OAuth, JWT và các phương thức khác.
Để ngăn chặn các cuộc tấn công này, các nhà phát triển và quản trị hệ thống cần thực hiện các biện pháp bảo mật như kiểm tra đầu vào, sử dụng mã nguồn mở an toàn, cập nhật và vá lỗi thường xuyên, áp dụng phương pháp xác thực và ủy quyền mạnh mẽ, và kiểm tra bảo mật API thường xuyên.
Phần mềm có lỗ hổng vì nhiều nguyên nhân khác nhau, bao gồm:
- Lỗi lập trình: Trong quá trình phát triển phần mềm, lập trình viên có thể mắc phải các lỗi lập trình như việc không kiểm tra đầu vào đúng cách, sử dụng các biến không an toàn, hoặc viết mã không chính xác. Những lỗi này có thể tạo ra các điểm yếu mà hacker có thể khai thác.
- Thiết kế không an toàn: Nếu phần mềm được thiết kế không đảm bảo an toàn, ví dụ như không có kiểm tra xác thực đủ mạnh, quản lý phiên không đúng cách, hoặc quyền truy cập không được phân quyền chính xác, thì nó có thể tạo ra lỗ hổng cho hacker khai thác.
- Lỗi phần mềm bên thứ ba: Nếu phần mềm sử dụng các thư viện, framework hoặc công cụ từ bên thứ ba, thì các lỗi trong phần mềm này cũng có thể tạo ra lỗ hổng trong phần mềm chính.
- Các lỗ hổng mới xuất hiện sau khi phần mềm ra mắt: Một số lỗ hổng không thể được phát hiện hoặc giải quyết hoàn toàn trong quá trình phát triển phần mềm. Các lỗ hổng này có thể xuất hiện sau khi phần mềm đã được triển khai và sử dụng, do các tác động từ môi trường hoặc các kỹ thuật tấn công mới.
- Sự phát triển nhanh chóng của công nghệ: Công nghệ và phương pháp tấn công liên tục phát triển, và các hacker cũng tìm cách tận dụng các xu hướng công nghệ mới để tìm ra các lỗ hổng và tấn công. Điều này làm cho việc bảo mật phần mềm trở thành một thách thức liên tục.
Để giảm thiểu lỗ hổng trong phần mềm, các nhà phát triển phần mềm cần áp dụng các quy trình kiểm thử chất lượng và bảo mật, sửa lỗi thường xuyên và áp dụng các biện pháp bảo mật phù hợp.
Mặc dù các nhà lập trình thường kiểm tra và kiểm thử phần mềm trước khi phát hành, việc phát hiện lỗ hổng sau một thời gian có thể do các nguyên nhân sau:
- Sự phức tạp của phần mềm: Phần mềm hiện đại thường có hàng ngàn, thậm chí hàng triệu dòng mã, và mỗi dòng mã có thể chứa nhiều lỗi tiềm ẩn. Kiểm tra và kiểm thử tất cả các khả năng và tình huống có thể xảy ra là một nhiệm vụ rất khó khăn và tốn nhiều thời gian. Một số lỗi có thể không được phát hiện trong quá trình kiểm thử ban đầu.
- Môi trường thay đổi: Phần mềm thường hoạt động trong môi trường thực tế phức tạp, bao gồm các phiên bản hệ điều hành, phần cứng và phần mềm khác. Những yếu tố này có thể tạo ra các tình huống đặc biệt hoặc không thể dự đoán được, và từ đó phát sinh ra các lỗ hổng mà không được phát hiện trong quá trình kiểm thử ban đầu.
- Sự tiến bộ trong phát hiện lỗ hổng: Cộng đồng bảo mật liên tục phát triển và tìm ra các phương pháp mới để phát hiện lỗ hổng. Các nhà lập trình ban đầu có thể không nhận ra hoặc không biết đến các lỗ hổng đó. Khi các phương pháp phát hiện lỗ hổng mới được công bố hoặc cải tiến, người ta có thể phát hiện ra rằng phần mềm đã được phát hành có chứa các lỗ hổng mà trước đây không được biết đến.
- Các tấn công mới: Các hacker liên tục phát triển các phương pháp và công cụ tấn công mới. Những tấn công này có thể tận dụng các lỗ hổng mà người ta chưa từng biết đến trước đây. Khi một phương pháp tấn công mới được phát hiện, người ta có thể phát hiện ra rằng phần mềm đã được phát hành có lỗ hổng mà trước đây không ai biết đến.
Do những lý do trên, việc phát hiện lỗ hổng trong phần mềm sau một thời gian sử dụng là điều bình thường. Để giảm thiểu rủi ro, các nhà phát triển phần mềm cần thường xuyên cập nhật và vá lỗi phần mềm, áp dụng các biện pháp bảo mật, và theo dõi sự phát triển trong lĩnh vực bảo mật để nắm bắt được các lỗ hổng mới và cập nhật phần mềm kịp thời.