[Security 101] Replay Attack

Anh Hoang
SotaTek
Published in
7 min readMay 31, 2019

Cũng đã rất lâu mới có thời gian ngồi viết ra những dòng Blog kiến thức như vậy. Cũng phải thôi, dự án VCC với SotaTek nó quan trọng quá mà (may là thành công không chắc giờ đưa nhau đi trốn *smile*). Nhưng nói đi cũng phải nói lại, dự án này khiến tôi có cảm hứng để viết ra các dòng này, về một bài toán mà tôi đã phải xử lý thực tế — một vấn đề bảo mật với nguyên lý tấn công thật đơn giản nhưng sức phá hoại là không thể đong đếm: Replay Attack. Có thể thuật ngữ này không mới, nhưng chúng ta sẽ nhìn cuộc tấn công này dưới một góc độ khác, một lĩnh vực khác — Replay Attack trong lĩnh vực Cryptocurrency.

Đi từ căn bản — Replay Attack là gì?

Chúng ta sẽ tuân thủ quy trình nhỉ? Như đã nói, có nhiều người đã biết về hình thức tấn công này, nhưng cũng có người không. Nên hòa cả làng, ta sẽ đi sơ lược về định nghĩa và nguyên lý của cuộc tấn công này một chút nhé.

Replay Attack (hay còn gọi là Playback Attack) — tấn công phát lại, là một hình thức tấn công mạng lưới trong đó các dữ liệu được truyền tải sẽ bị các ứng dụng độc hại chặn lại (hoặc gây ra độ trễ trong quá trình truyền tải), xử lý và liên tục lặp lại các thông tin hợp lệ đó trên toàn hệ thống. Nhờ có tính đúng đắn của dữ liệu ban đầu (thường đến từ người dùng được cấp quyền sử dụng ứng dụng), hệ thống sẽ xử lý các thông tin này một cách bình thường mà không hề biết rằng các dữ liệu đó đã bị tác động (lặp lại) một cách cố ý. Và do các gói tin ban đầu đã bị chặn (hoặc bị delay) và được truyền tải một cách nguyên bản nên Hacker không cần phải giải mã chúng để thực hiện cuộc tấn công này. Nói một cách đơn giản, một ông trời ơi đất hỡi đứng giữa ẩn mình trong bóng tối liên tục nhân bản mọi thứ, mạo danh để kiếm lời giữa 2 nạn nhân xấu số bị đưa vào tầm ngắm.

Replay Attack có thể được sử dụng để chiếm quyền truy cập thông tin lưu trữ trên một mạng lưới được bảo vệ bằng cách chuyển tiếp các thông tin có hình thức hợp lệ. Phương thức này cũng có thể được dùng để qua mặt các tổ chức tài chính để sao chép các giao dịch, cho phép kẻ tấn công có thể lấy tiền từ chính tài khoản của nạn nhân. Không những thế, những Hacker cao tay thậm chí còn có thể cài cắm các bản tin chứa các mã độc vào trong quá trình truyền đi toàn bộ mạng lưới, khiến toàn bộ hệ thống sẽ bị nhiễm mã độc trong quá trình giải mã gói tin, hay được gọi là hình thức tấn công “cut-and-paste”. Nó có thể không gây hại ngay lập tức, nhưng kẻ tấn công có thể lợi dụng điều này để khai thác hệ thống về lâu về dài.

Nhưng ở thời điểm hiện tại, hình thức tấn công này đã bị sờ gáy và bộc lộ các giới hạn nhất định của nó. Kẻ tấn công sẽ không thể thay đổi được dữ liệu đang được chuyển tiếp nếu không muốn gói tin đó bị từ chối bởi mạng lưới, từ đó sẽ giới hạn mức độ hiệu quả của vụ tấn công trong việc lặp lại các tác vụ trong quá khứ. Ngoài ra, hình thức tấn công này cũng tương đối dễ phòng vệ. Bằng cách thêm một cột mốc thời gian vào quá trình chuyển tiếp dữ liệu đã có thể chống lại hình thức tấn công này. Hoặc các máy chủ có thể lưu lại trạng thái của một thông tin cũ và kiểm tra số lần lặp lại của chúng để quyết định khi nào sẽ hủy gói tin trùng lặp mới nhận được. Nguyên lý phòng vệ rất đơn giản được rút ra từ chính định nghĩa của nó. Nhưng nếu thế thì tại sao vẫn phải xem xét nó trong Blog này, và ảnh hưởng của nó là gì trong các ứng dụng Crypto hiện tại. Nào, cũng khám phá!

Ảnh hưởng của Replay Attack tới lĩnh vực Cryptocurrency

Về sàn giao dịch

Bản chất của sàn giao dịch cũng giống như bao ứng dụng về lĩnh vực tài chính khác: bạn nạp tiền vào, bạn chơi, bạn trao đổi buôn bán với người khác, bạn có tiền bạn rút ra kiếm lời. Và cũng chính vì thế, Replay Attack là một cách tấn công hiệu quả, nhằm nhân bản các giao dịch, đánh thẳng vào tài khoản ví mà nạn nhân đang nắm giữ. Ở đây, tôi đang tập trung nói về các sàn giao dịch tập trung (centralization), và hình thức phòng tránh sẽ được áp dụng như trên, ứng với mỗi API liên quan tới giao dịch về tiền. Số lượng sàn trên thế giới hiện giờ là nhiều như số lượng coin vậy, và rất có thể vẫn có những sàn chưa thực sự chú trọng và việc bảo mật dù hình thức tấn công này đã rất nổi tiếng và phổ biến, mỗi chúng ta cần lưu tâm về công nghệ của sàn trước khi tiền ta vừa gửi vào đã bị bay đi sau vài khoảnh khắc đặt lệnh. Tôi xin phép sẽ không đi sâu vào nội dung này vì nó hoàn toàn giống với những gì được nêu ở phần nguyên lý.

Về mạng lưới Cryptocurrency

Chúng ta sẽ tập trung phần lớn thời gian về khía cạnh này. Hãy lấy hệ thống Bitcoin ra làm ví dụ. Các loại tiền điện tử như Bitcoin đang được vận hành toàn cầu, phân phối các sổ cái kỹ thuật số (Digital Ledger) ở khắp các nút tham gia. Các nút đầy đủ (Full node) sẽ mang một bản sao của toàn bộ sổ cái chứa tất cả các lịch sử giao dịch Bitcoin. Sổ cái trong mạng lưới cũng mang trong mình tính minh bạch — tức là tất cả các địa chỉ gửi nhận, số tiền được chuyển đều được hiển thị công khai trên sổ cái và tất cả các bản sao sổ cái trên mạng lưới này đều giống hệt nhau. Và Replay Attack sẽ được áp dụng khi một đợt nâng cấp hoặc thay đổi giao thức (hard fork) trong mạng lưới xảy ra. Về cơ bản, giao thức của mạng lưới Bitcoin lúc này sẽ được chuyển sang một phiên bản mới, được nâng cấp bởi một nhóm các nhà phát triển mới cho rằng mình có một cải tiến tân tiến hơn giao thức và sổ cái ban đầu. Khi đó, sẽ có một sự phân chia diễn ra, tạo thành 2 sổ cái được vận hành bởi 2 giao thức riêng biệt. Ví dụ điển hình nhất cho việc hard fork chính là sự hình thành Bitcoin Cash từ mạng lưới Bitcoin vào ngày 1/8/2017.

Như vậy, các sổ cái sẽ có chung một lịch sử giao dịch cho tới thời điểm mà chúng phân tách, vậy câu hỏi được đặt ra là: “Điều gì sẽ xảy ra với số Bitcoin tôi đang nắm giữ khi có 1 hard fork?”. Wew, câu trả lời sẽ khiến bạn mong hard fork diễn ra nhiều hơn đó: “Bạn sẽ giữ nguyên số Bitcoin bạn có và được thêm số Bitcoin Cash bằng đúng số Bitcoin bạn đang nắm giữ”. Free money là có thật! Và sẽ còn “nhân rộng tài khoản” hơn nữa nếu kẻ tấn công tận dụng Replay Attack thành công. Hình thức tấn công này sẽ tận dụng lợi thế của quá trình hard fork và nhân bản số lượng đồng tiền trên chuỗi phân tách. Hãy giả sử, tôi muốn sử dụng 1 BTC để mua một vật phẩm ngoài đời (tại thời điểm viết bài, BTC có giá gần 9000, tôi cũng muốn giả sử này thành thật lắm *smile), và khi tôi kiểm tra tài khoản của tôi trên mạng lưới BCH, bùm, tôi mất đúng 1 BCH — tức bằng số lượng BTC tôi chi. Đó là bởi với Replay Attack, kẻ tấn công có thể chặn các gói tin giao dịch trên chuỗi này, nhân bản với chữ ký số hợp lệ và chuyển nó đến một nút trong mạng lưới khác. Vì giao dịch này hợp lệ trên cả 2 chuỗi do hệ quả của quá trình hard fork, cả 2 nút sẽ chấp nhận nó, đó chính là câu trả lời cho câu hỏi “tiền đã bay đi đâu và bay theo cách nào”.

Trên thực tế hiện nay, phần lớn các cuộc phân chia sẽ được bổ sung cho mình một phương thức phòng ngừa hình thức tấn công này. Ví dụ như với Bitcoin Cash, hệ thống sẽ có một đánh dấu được thêm vào sổ cái mới được tách ra từ đợt chia tách để đảm bảo các giao dịch trên sổ cái mới sẽ không còn hợp lệ trên sổ cái ban đầu và ngược lại, hay ta cũng có thể áp dụng 2 mức phí khác nhau trên 2 loại tiền… rất nhiều phương thức đã được đưa ra, chúng ta có thể lên mạng để tìm hiểu nhiều hơn về các hình thức bảo mật này.

Kết luận

Lĩnh vực Blockchain vẫn tiềm tàng rất nhiều bài toán cần chúng ta giải đáp. Với các hình thức tấn công đơn giản đã được ngăn chặn từ lâu trên các ứng dụng thông thường, thì nay với Blockchain, chúng sẽ có những biến tướng mới khiến những người làm ứng dụng như chúng ta cần phải đón đầu và đưa ra các biện pháp phòng vệ cần thiết. Một chia sẻ mang tính cá nhân là tôi cũng là một người làm sàn thuần thúy và bài toán Replay Attack trên dự án VCC gần đây đã được xử lý một cách tối ưu rồi (chia sẻ mang tính tự sướng và hướng tới anh em trader trên sàn *smile*).

--

--