Opened 6 days ago

Last modified 6 days ago

#28732 needs_review defect

Standardize on ArrayBuffer as the type of WebRTC messages

Reported by: dcf Owned by:
Priority: Medium Milestone:
Component: Obfuscation/Snowflake Version:
Severity: Normal Keywords:
Cc: dcf, arlolra Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

Two problems:

  1. The proxy receives binary messages over an RTCDataChannel without specifying what the type of those messages should be. Some debugging code is written to handle the type ArrayBuffer, but when I tried it the type was actually Blob, which crashed the debug code.
  2. Snowflake uses exclusively binary WebRTC data, but the test code uses strings as message contents rather than one of the binary data types.

This wasn't a huge problem, because strings ArrayBuffers and Blobs are all valid to pass to WebSocket.send. The only other thing we do other than send them is take their length for the purpose of rate limiting, and that is broken.

https://gitweb.torproject.org/user/dcf/snowflake.git/log/?h=arraybuffer&id=73f328fef8a9351afc47bb65a68b549fbab90cad
https://gitweb.torproject.org/user/dcf/snowflake.git/diff/?h=arraybuffer&id=73f328fef8a9351afc47bb65a68b549fbab90cad&id2=5817c257c1568c403a41e108d195b209e4e5f589

This branch sets binaryType = "arraybuffer" so that we don't get unexpected Blob objects. It then makes changes to the test and rate-limiting code to standardize on the ArrayBuffer interface everywhere.

Child Tickets

Change History (1)

comment:1 Changed 6 days ago by dcf

Status: newneeds_review
Note: See TracTickets for help on using tickets.