Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh chuyển đổi số, các ứng dụng web ngày càng phát triển mạnh mẽ nhằm cung cấp dịch vụ kinh doanh và quản lý cho các doanh nghiệp, tổ chức. Hiệu suất của các hệ thống này phụ thuộc vào thời gian xử lý và khả năng cung cấp thông tin. Để đơn giản hóa và tối ưu hóa quá trình phát triển ứng dụng, các giải pháp công nghệ mới liên tục được giới thiệu, trong đó có GraphQL. Được phát triển bởi Facebook từ năm 2012 và công bố rộng rãi vào năm 2015, GraphQL mang lại phương thức xây dựng giao diện lập trình ứng dụng (Web API) khác biệt so với kiến trúc REST truyền thống.
Tuy nhiên, bên cạnh các ưu điểm về cấu trúc dữ liệu linh hoạt, GraphQL cũng tiềm ẩn các rủi ro an ninh mạng khi được đưa vào triển khai thực tế. Do vai trò trung gian chuyển tiếp dữ liệu đến các dịch vụ phía sau, các ứng dụng sử dụng GraphQL API vẫn có nguy cơ trở thành mục tiêu của các cuộc tấn công mạng, đặc biệt là lỗ hổng chèn mã lệnh SQL (SQL Injection). Thực trạng này đòi hỏi việc nghiên cứu chuyên sâu về các khía cạnh an toàn thông tin trong GraphQL API cũng như xây dựng các công cụ hỗ trợ đào tạo, thực hành kiểm thử bảo mật.
Đồ án tốt nghiệp "Lỗ hổng SQL Injection trong các ứng dụng sử dụng GraphQL" do sinh viên Phạm Hải Vũ (lớp D17CQAT02-B, ngành Công nghệ thông tin/An toàn thông tin, Học viện Công nghệ Bưu chính Viễn thông) thực hiện dưới sự hướng dẫn của TS. Nguyễn Ngọc Điệp, cùng sự hỗ trợ kỹ thuật từ Trung tâm An ninh mạng (Cyber Security Division) thuộc Công ty Cổ phần Hệ thống Thông tin FPT (FPT Information System).
Nhiệm vụ và mục tiêu nghiên cứu của đồ án được xác định rõ:
- Nghiên cứu tổng quan về công nghệ GraphQL, phân tích cơ chế hoạt động, các thành phần cốt lõi cùng ưu điểm và nhược điểm so với kiến trúc REST.
- Phân tích các mối đe dọa an toàn thông tin trong GraphQL API, tập trung làm rõ nguyên nhân, kỹ thuật khai thác, công cụ hỗ trợ và phương pháp phòng chống đối với lỗ hổng SQL Injection.
- Thiết kế và phát triển môi trường phòng thực hành (lab) hoàn chỉnh nhằm mô phỏng và thực hành các kỹ thuật tấn công SQL Injection trên GraphQL API.
- Thử nghiệm thực tế các kỹ thuật khai thác trên môi trường lab tự xây dựng để kiểm chứng các kịch bản tấn công và đánh giá kết quả.
Đối tượng nghiên cứu của đề tài là công nghệ GraphQL và các vector tấn công SQL Injection trong môi trường ứng dụng web sử dụng GraphQL API. Phạm vi nghiên cứu tập trung vào các dạng tấn công SQL Injection phổ biến (In-band, Blind, Out-of-band), cơ sở dữ liệu quan hệ MySQL và quy trình kiểm thử bảo mật trong môi trường lab thử nghiệm cục bộ, hoàn thành vào tháng 12 năm 2021.
Cơ sở lý thuyết và phương pháp
Về cơ sở lý thuyết, đề tài sử dụng đặc tả kỹ thuật của công nghệ GraphQL do Facebook khởi xướng và hiện được quản lý bởi GraphQL Foundation trực thuộc Linux Foundation (từ tháng 11 năm 2018). Các khái niệm nền tảng bao gồm: Ngôn ngữ định nghĩa lược đồ (Schema Definition Language - SDL), hệ thống kiểu dữ liệu (Type System: Object type, Query type, Mutation type, Scalar type, Enumeration type, Interface, Union type, Input type), bộ nghĩa (List, Non-null), ngôn ngữ truy vấn (Query language: query, mutation, fragment, variable, directive), cơ chế kiểm tra tính hợp lệ (Validation), thực thi hàm xử lý (Execution/Resolver) và cơ chế xem chi tiết cấu hình kiểu (Type Introspection).
Đối với khía cạnh an toàn thông tin, đề tài dựa trên hệ thống phân loại điểm yếu phần mềm phổ biến Common Weakness Enumeration (CWE) của tổ chức MITRE, trong đó lỗ hổng SQL Injection xếp thứ 6 trong danh sách 25 lỗ hổng nguy hiểm nhất (CWE Top 25 năm 2021). Đồng thời, đồ án trích dẫn số liệu thống kê từ báo cáo an ninh mạng của Akamai Technologies ghi nhận giai đoạn từ ngày 01/01/2020 đến ngày 30/06/2021, trong đó SQL Injection là vector tấn công web hàng đầu, chiếm 55,88% với hơn 6,2 tỷ cuộc tấn công.
Phương pháp nghiên cứu kết hợp giữa nghiên cứu lý thuyết và phương pháp thực nghiệm:
- Phương pháp phân tích - tổng hợp: Thu thập, hệ thống hóa tài liệu kỹ thuật về GraphQL từ đặc tả chính thức; phân tích các báo cáo lỗ hổng thực tế được công bố công khai trên nền tảng HackerOne và Gitlab để làm rõ các nguy cơ bảo mật.
- Phương pháp khảo sát và so sánh: Phân tích ưu - nhược điểm giữa mô hình giao tiếp GraphQL và REST API; khảo sát các môi trường thực hành bảo mật mã nguồn mở hiện có như Damn Vulnerable GraphQL Application (DVGA) và Generic University.
- Phương pháp thực nghiệm kỹ thuật: Xây dựng hệ thống web ứng dụng GraphQL kết nối cơ sở dữ liệu MySQL; thiết lập các mức độ bảo mật khác nhau; trực tiếp thực hiện khai thác bằng các kỹ thuật thủ công kết hợp sử dụng công cụ hỗ trợ như SQLmap, GraphQLmap.
Nguồn dữ liệu của đề tài bao gồm báo cáo khảo sát hệ sinh thái lập trình The State of JavaScript 2020 (ghi nhận tỷ lệ lập trình viên sử dụng GraphQL tăng từ 5% năm 2016 lên 44,3% năm 2020), các báo cáo lỗ hổng bảo mật thực tế (HackerOne report #435066 về lỗi SQLi trên HackerOne; report #972355 về rò rỉ email trên Gitlab; issue #30096 về lỗi từ chối dịch vụ trên Gitlab), và dữ liệu phản hồi thu được từ hệ thống lab thực nghiệm.
Thiết kế và triển khai môi trường thử nghiệm
Nhằm phục vụ công tác giảng dạy, học tập và kiểm thử bảo mật, tác giả đã phát triển một môi trường lab chuyên dụng mô phỏng ứng dụng web sử dụng GraphQL API có chứa lỗ hổng SQL Injection. Hệ thống được xây dựng sau khi đánh giá các hạn chế của những lab thực hành sẵn có như DVGA và Generic University.
Môi trường lab có các chức năng chính:
- Hướng dẫn cài đặt và thiết lập: Cung cấp đầy đủ thông tin về cấu hình hệ thống, hướng dẫn triển khai cho người sử dụng.
- Thiết lập cơ sở dữ liệu tự động: Cung cấp giao diện trực quan cho phép khởi tạo hoặc khôi phục lại trạng thái ban đầu của cơ sở dữ liệu sau các đợt thực hành khai thác.
- Tùy chỉnh mức độ bảo mật: Cung cấp các cấp độ kiểm tra dữ liệu đầu vào khác nhau (thấp, trung bình, cao) cho từng kỹ thuật tấn công, cho phép người học kiểm tra hiệu quả của các biện pháp lọc dữ liệu.
- Xem mã nguồn và gợi ý: Tích hợp giao diện hiển thị trực tiếp mã nguồn của các hàm xử lý (resolver) tương ứng với từng mức bảo mật, đồng thời cung cấp các gợi ý phương thức khai thác nhằm hỗ trợ người thực hành.
- Phân hệ thực hành 5 kỹ thuật SQL Injection: Tạo các kịch bản đầu vào lỗi cho phép thực nghiệm đầy đủ các dạng khai thác gồm Error-based, Union-based, Boolean-based, Time-based và Out-of-band.
Hệ thống sử dụng máy chủ GraphQL kết nối trực tiếp với hệ quản trị cơ sở dữ liệu MySQL, giao tiếp qua giao thức HTTP và tiếp nhận các truy vấn định dạng JSON.
Nội dung chính theo từng chương
Chương 1: Công nghệ GraphQL
Chương 1 cung cấp cái nhìn toàn diện về công nghệ GraphQL từ nguồn gốc lịch sử đến chi tiết kỹ thuật. Về mặt lịch sử, GraphQL bắt đầu được nghiên cứu tại Facebook vào năm 2012 nhằm giải quyết bài toán tiêu thụ băng thông mạng quá lớn trên thiết bị di động của tính năng Bảng tin (News Feed) khi sử dụng HTML5 và REST API. Tháng 8/2012, công nghệ được đưa vào ứng dụng Facebook trên iOS 5.0, công bố mã nguồn mở năm 2015 và chuyển giao cho GraphQL Foundation thuộc Linux Foundation vào ngày 07/11/2018.
Đồ án phân tích 3 mô hình kiến trúc triển khai GraphQL:
- Máy chủ GraphQL kết nối trực tiếp với cơ sở dữ liệu (quan hệ như MySQL hoặc phi quan hệ như MongoDB).
- Máy chủ GraphQL tích hợp với các hệ thống sẵn có (đóng vai trò cổng giao tiếp hợp nhất microservices và RESTful API).
- Kiến trúc kết hợp (hybrid): vừa kết nối trực tiếp cơ sở dữ liệu vừa tích hợp hạ tầng sẵn có.
Tác giả đi sâu vào các thành phần kỹ thuật của GraphQL bao gồm: hệ thống kiểu (Object, Query, Mutation, 5 kiểu vô hướng cơ sở Int, Float, String, Boolean, ID, cùng Enum, Interface, Union, Input), ngôn ngữ truy vấn (cấu trúc query, mutation, fragment, inline fragment, bí danh alias, biến variable, chỉ thị directive @include và @skip, trường siêu dữ liệu __typename), cơ chế kiểm tra tính hợp lệ (Validation), quy trình thực thi qua các hàm xử lý (Resolver) và cơ chế xem chi tiết cấu hình kiểu (Type Introspection).
Chương 1 tổng kết ưu điểm của GraphQL trong việc giảm thiểu số lượng điểm cuối (chỉ dùng duy nhất 1 endpoint), loại bỏ hoàn toàn hiện tượng trả về thừa dữ liệu (overfetching) và thiếu dữ liệu (underfetching / vấn đề n+1 truy vấn). Ngược lại, GraphQL tồn tại các nhược điểm: suy giảm hiệu suất khi thực thi các truy vấn lồng nhau quá sâu, thiếu cơ chế bộ nhớ đệm tích hợp sẵn và không hỗ trợ xử lý tải lên tập tin trong đặc tả cốt lõi.
Chương 2: Lỗ hổng SQL Injection trong GraphQL API
Chương 2 tập trung phân tích các rủi ro an toàn thông tin trên GraphQL API và chi tiết hóa lỗ hổng SQL Injection. Tác giả chỉ ra 5 vấn đề an ninh phổ biến:
- Rò rỉ dữ liệu nhạy cảm thông qua cơ chế Introspection: Kẻ tấn công có thể truy vấn trường
__schema để trích xuất toàn bộ cấu trúc lược đồ API, phát hiện các tác vụ và trường dữ liệu nội bộ.
- Kiểm soát quyền truy cập dữ liệu lỏng lẻo: Các quan hệ lồng nhau giữa các đối tượng cho phép vượt qua cơ chế phân quyền, được minh chứng qua lỗ hổng trên Gitlab (báo cáo HackerOne #972355 ngày 09/01/2020) làm lộ email riêng tư và danh sách nhóm của người dùng.
- Tấn công từ chối dịch vụ (DoS): Kẻ tấn công gửi các truy vấn lồng nhau đệ quy hoặc quan hệ vòng tròn (circular relationship), dẫn chứng qua lỗ hổng trên Gitlab (HackerOne #638282 / issue #30096 năm 2019) gây cạn kiệt tài nguyên CPU và bộ nhớ.
- Lỗ hổng bảo mật trong các thành phần tích hợp: Máy chủ GraphQL đóng vai trò chuyển tiếp vô tình chuyển các đầu vào độc hại đến hệ thống REST API hoặc dịch vụ hạ tầng phía sau.
- Lỗ hổng bảo mật xuất phát từ dữ liệu đầu vào: GraphQL chỉ xác thực cú pháp và kiểu dữ liệu cơ bản, không có cơ chế lọc nội dung độc hại. Điển hình là báo cáo HackerOne #435066 ngày 30/11/2018 tại điểm cuối
/graphql, tham số embedded_submission_form_uuid bị tấn công Time-based SQL Injection qua payload 1';SELECT 1;SELECT pg_sleep(5);--.
Chương này phân loại chi tiết các kỹ thuật SQL Injection thành 3 nhóm chính:
- In-band SQL Injection: Khai thác và thu thập kết quả trên cùng kênh liên lạc, gồm kỹ thuật Error-based (dựa vào thông báo lỗi cơ sở dữ liệu) và Union-based (dùng toán tử UNION nối các câu lệnh SELECT).
- Blind SQL Injection: Không hiển thị dữ liệu trực tiếp trong phản hồi HTTP, gồm Boolean-based (suy luận logic dựa trên sự thay đổi nội dung phản hồi theo điều kiện đúng/sai) và Time-based (suy luận dựa trên độ trễ phản hồi của máy chủ khi chèn các hàm ngủ/chờ).
- Out-of-band SQL Injection: Khai thác qua kênh liên lạc phụ khi phản hồi trực tiếp không ổn định, kích hoạt cơ sở dữ liệu gửi yêu cầu DNS hoặc HTTP ra máy chủ bên ngoài (như hàm
xp_dirtree trong MSSQL hoặc gói UTL_HTTP trong Oracle).
Nguyên nhân gây ra SQL Injection trong GraphQL API bắt nguồn từ việc các hàm xử lý (resolver) sử dụng câu lệnh SQL động, ghép nối trực tiếp tham số người dùng mà không kiểm tra chặt chẽ. Quy trình khai thác gồm 2 bước: Thu thập thông tin (dò tìm endpoint như /graphql, /graphql/console, /graphql.php, /graphiql; dùng Introspection lấy lược đồ) và Thực hiện tấn công (thử ký tự đặc biệt, chèn payload, tự động hóa bằng SQLmap hoặc GraphQLmap).
Chương 3: Xây dựng môi trường lab để thử nghiệm tấn công SQL Injection trong GraphQL API
Chương 3 trình bày việc phát triển hệ thống lab thực hành và kiểm chứng thực nghiệm 5 kỹ thuật khai thác SQL Injection trên môi trường này. Tác giả xây dựng các kịch bản tấn công thực tế và ghi nhận kết quả:
- Khai thác Error-based SQL Injection: Chèn payload vào tham số truy vấn GraphQL khiến cơ sở dữ liệu phát sinh lỗi cú pháp, từ đó hiển thị chính xác tên cơ sở dữ liệu đang vận hành.
- Khai thác Union-based SQL Injection: Sử dụng toán tử UNION trong câu lệnh truy vấn để trích xuất thành công toàn bộ danh sách tài khoản người dùng được lưu trữ trong cơ sở dữ liệu.
- Khai thác Boolean-based SQL Injection: Gửi các payload chứa biểu thức điều kiện so sánh, quan sát sự khác biệt trong phản hồi GraphQL khi câu lệnh trả về kết quả
true để suy đoán cấu trúc dữ liệu.
- Khai thác Time-based SQL Injection: Đưa payload kích hoạt hàm làm trễ quá trình xử lý của cơ sở dữ liệu, ghi nhận thời gian máy chủ trả về phản hồi bị kéo dài lên đến 3,4 giây, xác nhận điểm chèn ép thành công.
- Khai thác Out-of-band SQL Injection: Sử dụng kỹ thuật kích hoạt yêu cầu phân giải tên miền (DNS request) từ cơ sở dữ liệu, ghi nhận thông tin phiên bản của hệ quản trị MySQL đang chạy trên máy chủ lab được gửi về hệ thống lắng nghe.
Chương 4: Kết luận
Chương cuối tóm tắt toàn bộ kết quả đạt được của đồ án, khẳng định việc hoàn thành các mục tiêu nghiên cứu lý thuyết về GraphQL, cơ chế phát sinh lỗ hổng SQL Injection và triển khai thành công môi trường lab thực hành phục vụ học tập, nghiên cứu.
Kết quả và đóng góp
Đồ án đã tổng hợp và kiểm chứng thực tế các kỹ thuật khai thác SQL Injection trên giao diện GraphQL API. Bảng dưới đây tổng hợp kết quả thử nghiệm được thực hiện trên môi trường lab của đề tài:
| Kỹ thuật khai thác |
Phân loại tấn công |
Dấu hiệu / Cơ chế nhận biết |
Kết quả ghi nhận trên môi trường lab |
| Error-based |
In-band |
Thông báo lỗi cấu trúc SQL từ máy chủ |
Trích xuất thành công tên cơ sở dữ liệu |
| Union-based |
In-band |
Nối bảng dữ liệu qua toán tử UNION |
Trích xuất toàn bộ thông tin tài khoản người dùng |
| Boolean-based |
Blind |
Sự thay đổi dữ liệu trả về theo biểu thức true/false |
Xác định kết quả logic đúng của điều kiện truy vấn |
| Time-based |
Blind |
Độ trễ thời gian xử lý phản hồi HTTP |
Thời gian phản hồi của máy chủ kéo dài đạt 3,4 giây |
| Out-of-band |
Out-of-band |
Kênh truyền phụ qua truy vấn mạng (DNS) |
Thu thập phiên bản MySQL đang chạy qua yêu cầu DNS |
Về mặt đóng góp, đề tài mang lại những giá trị cụ thể:
- Hệ thống hóa cơ sở lý thuyết về GraphQL và các điểm yếu an toàn thông tin đặc thù, phân tích rõ ràng cơ chế khiến GraphQL API bị ảnh hưởng bởi SQL Injection do lỗi lập trình tại các hàm resolver.
- Đưa ra bức tranh tổng thể về rủi ro thông qua việc dẫn chứng các sự cố bảo mật thực tế được ghi nhận tại các nền tảng công nghệ lớn như HackerOne và Gitlab.
- Xây dựng thành công một môi trường lab thực hành hoàn chỉnh, tích hợp tính năng tự động thiết lập dữ liệu, phân tách nhiều cấp độ bảo mật, cho phép xem trước mã nguồn và gợi ý, giải quyết hạn chế thiếu kịch bản toàn diện của các lab mở hiện nay.
- Đề xuất các biện pháp phòng chống chuẩn mực: áp dụng kiểm tra và làm sạch dữ liệu đầu vào nghiêm ngặt, sử dụng cơ chế tham số hóa truy vấn (parameterized queries / prepared statements) trong các hàm resolver, và tắt tính năng Type Introspection trên môi trường vận hành thực tế (production) để hạn chế rò rỉ cấu trúc lược đồ API.
Hạn chế và hướng nghiên cứu tiếp
Mặc dù đã hoàn thành các mục tiêu đề ra, đề tài vẫn tồn tại một số hạn chế dựa trên phạm vi nghiên cứu:
- Phạm vi thử nghiệm của môi trường lab tập trung chủ yếu vào hệ quản trị cơ sở dữ liệu quan hệ MySQL, chưa mở rộng kịch bản kiểm thử trên các hệ quản trị cơ sở dữ liệu phổ biến khác như PostgreSQL, Oracle hay Microsoft SQL Server.
- Hệ thống lab được thiết kế phục vụ mục đích học tập và nghiên cứu trên môi trường cục bộ, chưa kiểm thử trên các mô hình kiến trúc phân tán microservices hoặc môi trường tải lớn.
- Đề tài tập trung chuyên sâu vào lỗ hổng SQL Injection, chưa nghiên cứu sâu các dạng lỗ hổng tiêm mã khác có thể xuất hiện trên GraphQL API như NoSQL Injection hoặc Command Injection.
Hướng nghiên cứu tiếp theo được xác định bao gồm việc mở rộng môi trường lab để hỗ trợ đa dạng các hệ quản trị cơ sở dữ liệu, xây dựng thêm kịch bản khai thác cho các lỗ hổng liên quan đến xác thực và phân quyền (Broken Object Level Authorization - BOLA), đồng thời phát triển các công cụ tự động hóa rà quét bảo mật chuyên biệt cho GraphQL API.
Giá trị tham khảo
Đồ án là tài liệu tham khảo hữu ích cho nhiều đối tượng trong lĩnh vực công nghệ thông tin và an toàn thông tin:
- Sinh viên chuyên ngành Công nghệ thông tin, An toàn thông tin, Kỹ thuật phần mềm: Tài liệu cung cấp kiến thức nền tảng về cấu trúc GraphQL và phương thức kiểm thử xâm nhập thực tế đối với ứng dụng web hiện đại.
- Giảng viên và cán bộ đào tạo: Môi trường lab được thiết kế trong đồ án có thể ứng dụng trực tiếp làm bài thực hành trong các học phần An toàn ứng dụng web hoặc Kiểm thử xâm nhập.
- Lập trình viên ứng dụng web (Backend Developers): Giúp nhận thức rõ các sai lầm trong việc xử lý dữ liệu đầu vào tại các hàm resolver, từ đó áp dụng các kỹ thuật lập trình an toàn khi tích hợp GraphQL API.
Các nội dung có giá trị tham khảo cao nhất trong đồ án gồm: phần phân tích chi tiết hệ thống kiểu và ngôn ngữ truy vấn GraphQL (Chương 1), cơ chế trích xuất lược đồ qua Introspection và phân loại các vector tấn công SQLi (Chương 2), cùng kịch bản cấu hình, khai thác thực nghiệm 5 kỹ thuật SQL Injection (Chương 3).
Câu hỏi thường gặp
1. Tại sao GraphQL API chỉ cần sử dụng một điểm cuối (endpoint) duy nhất thay vì nhiều điểm cuối như REST API?
Trong kiến trúc REST, mỗi tài nguyên hoặc chức năng thường gắn liền với một điểm cuối (endpoint) cụ thể (ví dụ: /users, /posts). Ngược lại, GraphQL sử dụng một điểm cuối duy nhất (phổ biến là /graphql). Máy khách gửi truy vấn mô tả chính xác các trường dữ liệu cần lấy trong phần thân yêu cầu (HTTP request body). Máy chủ GraphQL tiếp nhận chuỗi truy vấn này, phân tích dựa trên lược đồ (schema) và ủy quyền cho các hàm xử lý (resolver) tương ứng để gom dữ liệu trả về trong một đối tượng JSON duy nhất.
2. Lỗ hổng SQL Injection trong GraphQL API phát sinh từ đâu?
Bản thân công nghệ GraphQL không trực tiếp tương tác với cơ sở dữ liệu mà chỉ định nghĩa cấu trúc API và xác thực cú pháp truy vấn. Lỗ hổng SQL Injection phát sinh tại tầng triển khai ứng dụng, cụ thể là bên trong các hàm xử lý (resolver). Khi lập trình viên xây dựng các resolver sử dụng câu lệnh SQL động nối chuỗi trực tiếp với tham số đầu vào do người dùng cung cấp mà không kiểm tra hoặc tham số hóa truy vấn, kẻ tấn công có thể chèn mã SQL độc hại để thực thi trên cơ sở dữ liệu.
3. Báo cáo thực tế nào được đồ án trích dẫn để chứng minh nguy cơ SQL Injection trên GraphQL API?
Đồ án trích dẫn báo cáo lỗ hổng tại nền tảng HackerOne (mã báo cáo #435066 ngày 30/11/2018, đánh giá mức độ nghiêm trọng). Trong sự cố này, tham số embedded_submission_form_uuid tại điểm cuối /graphql bị lỗi SQL Injection, cho phép kẻ tấn công chèn payload dạng 1';SELECT 1;SELECT pg_sleep(5);-- để khai thác thành công theo kỹ thuật Time-based SQL Injection.
4. Kết quả độ trễ ghi nhận được khi thử nghiệm kỹ thuật Time-based SQL Injection trong đồ án là bao nhiêu?
Trong kịch bản thực nghiệm khai thác Time-based SQL Injection tại Chương 3, khi gửi truy vấn GraphQL chứa payload ép buộc cơ sở dữ liệu tạm dừng xử lý, thời gian máy chủ trả về phản hồi HTTP được tác giả ghi nhận là 3,4 giây, qua đó xác nhận lệnh chèn thời gian đã được thực thi thành công trên hệ quản trị cơ sở dữ liệu.
5. Kỹ thuật Out-of-band SQL Injection được thực nghiệm trên môi trường lab thông qua giao thức nào và nhằm lấy thông tin gì?
Kỹ thuật Out-of-band SQL Injection được thực hiện thông qua việc kích hoạt các yêu cầu truy vấn phân giải tên miền (DNS request) từ cơ sở dữ liệu hướng tới máy chủ do người kiểm thử kiểm soát. Thông qua yêu cầu DNS này, tác giả đã trích xuất thành công thông tin về phiên bản của hệ quản trị cơ sở dữ liệu MySQL mà môi trường lab đang vận hành.
Kết luận
Đồ án tốt nghiệp của sinh viên Phạm Hải Vũ đã hệ thống hóa toàn diện các khía cạnh lý thuyết của công nghệ GraphQL, đồng thời phân tích sâu sắc các nguy cơ an toàn thông tin liên quan đến lỗ hổng SQL Injection trong GraphQL API. Thông qua việc phân tích các sự cố thực tế và xây dựng thành công môi trường lab thực hành đa cấp độ bảo mật, tác giả đã kiểm chứng thực nghiệm đầy đủ 5 kỹ thuật khai thác SQL Injection (Error-based, Union-based, Boolean-based, Time-based và Out-of-band). Công trình cung cấp tài liệu nghiên cứu và công cụ thực nghiệm có giá trị thực tiễn cho công tác đào tạo an toàn thông tin và định hướng lập trình bảo mật cho các nhà phát triển web API.