trueNetLab logo
BN
AliExpress: Web Audio API দিয়ে ব্রাউজার ফিঙ্গারপ্রিন্টিং

AliExpress: Web Audio API দিয়ে ব্রাউজার ফিঙ্গারপ্রিন্টিং

একটি অনলাইন দোকান খুলতেই স্মার্টফোনের গান হঠাৎ থেমে যায়। ব্রাউজারে কোনো ভিডিও চলছে না, বিজ্ঞাপনের শব্দও নেই, এমনকি ট্যাব মিউট করেও কিছু বদলায় না। AliExpress ট্যাব বন্ধ করার পরেই Bluetooth হেডফোন আবার ঠিকভাবে ফোনে ফিরে যায়।

Bluetooth Multipoint-এর ত্রুটি বলে মনে হওয়া ঘটনাটি ডেভেলপার Matt Callaghan-কে AliExpress হোমপেজের দুটি অত্যন্ত অস্পষ্ট করা JavaScript ফাইলে নিয়ে যায়। দুটিই পটভূমিতে চলমান Web Audio গ্রাফ তৈরি করছিল। আউটপুট লেভেল ছিল শূন্য, তাই কিছু শোনা যাচ্ছিল না। তবু ব্রাউজার, অপারেটিং সিস্টেম ও হেডফোনের কাছে অডিও পথটি সক্রিয় ছিল।

আবিষ্কারটি প্রযুক্তিগতভাবে আকর্ষণীয়, কারণ অনিচ্ছাকৃত হার্ডওয়্যার পার্শ্বপ্রতিক্রিয়া একটি অদৃশ্য ব্রাউজার পরিমাপ প্রকাশ করেছে। নিরাপত্তার দিক থেকে এটি আরও গুরুত্বপূর্ণ, কারণ Web Audio ছিল মাত্র একটি অংশ। স্ক্রিপ্টগুলো Canvas, WebGL, স্ক্রিন, হার্ডওয়্যার, সমর্থিত মিডিয়া ফরম্যাট, WebRTC এবং ব্যবহারকারীর ইন্টারঅ্যাকশনও পরীক্ষা করত। ফলটি একটি বিস্তৃত ব্রাউজার ও ডিভাইস ফিঙ্গারপ্রিন্টের মতো।

এই ঘটনাকে গুরুতর করেছে কোনো গোপন অডিও কৌশল নয়, বরং পরিমাপের ব্যাপ্তি এবং সাধারণ দোকানের হোমপেজ থেকেই অদৃশ্যভাবে তার শুরু হওয়া।

যে Bluetooth ত্রুটি আসলে ত্রুটি ছিল না

Callaghan এমন Multipoint হেডফোন ব্যবহার করেন যা একই সঙ্গে PC ও স্মার্টফোনে যুক্ত থাকে। সাধারণত তিনি ফোন থেকে গান শোনেন। PC সত্যিই অডিও চালালে সেটি নিয়ন্ত্রণ নেয়। Firefox বা Chrome-এ AliExpress খোলা থাকলে এই অগ্রাধিকার বদল আটকে যাচ্ছিল। অন্য ব্রাউজার তিনি পরীক্ষা করেননি।

সাধারণ কারণগুলো বাদ পড়ে। কোনো অডিও বা ভিডিও এলিমেন্ট, HTMLMediaElement.play() কল, সক্রিয় Media Session বা নেটওয়ার্ক ট্রাফিকে চেনা মিডিয়া ফাইল ছিল না। শুধু দেখা যায়, পেজ লোডের কয়েক সেকেন্ড পর সমস্যা শুরু হয়।

তাই Callaghan Web Audio API instrument করেন। তিনি AudioContext constructor-কে wrapper দিয়ে বদলান, নতুন অডিও context লগ করেন এবং AudioNode.connect() দিয়ে সংযোগ পর্যবেক্ষণ করেন। দুটি সক্রিয় context দেখা যায়, যাদের stack trace এই স্ক্রিপ্টগুলোর দিকে নির্দেশ করে:

assets.aliexpress-media.com/g/AWSC/uab/1.140.0/collina.js
assets.aliexpress-media.com/g/AWSC/fireyejs/1.231.67/fireyejs.js

দুটিই AWSC path-এর নিচে এবং কাজের ধরন অনুযায়ী browser security ও abuse detection-এর Alibaba infrastructure-এর অংশ বলে মনে হয়। এই attribution যুক্তিসঙ্গত, কিন্তু শুধু filename তা চূড়ান্তভাবে প্রমাণ করে না। তবে Alibaba Cloud তাদের Anti-Bot Web SDK-তে server-side evaluation-এর সঙ্গে ব্যবহৃত Web Collector স্পষ্টভাবে নথিভুক্ত করেছে।

আচরণটি আরও নির্দিষ্ট করা যায়: দুই script family block করার পর Callaghan-এর control measurement-এ অডিও context বা audio output connection কোনোটিই তৈরি হয়নি। তার পরীক্ষায় homepage ও সাধারণ product search সচল ছিল।

Web Audio গ্রাফ ঠিক কী করে

Web Audio কোনো লুকানো শোনার ফাংশন নয়; এটি game, synthesizer, video conference ও অন্যান্য interactive application-এর শক্তিশালী browser interface। শুধু audio file চালানোর বদলে website আলাদা processing node-কে graph হিসেবে যুক্ত করতে পারে।

পরীক্ষিত AliExpress script সরলভাবে এই chain তৈরি করত:

sawtooth wave সহ OscillatorNode
  -> AnalyserNode
  -> ScriptProcessorNode
  -> gain 0 সহ GainNode
  -> AudioContext.destination

Oscillator একটি পরিচিত signal তৈরি করে। AnalyserNode processing data দেয় এবং JavaScript frequency value পড়ে। এরপর GainNode level শূন্য করে। Signal শোনা যায় না, কিন্তু graph AudioContext.destination, অর্থাৎ real-time output-এর সঙ্গে যুক্ত থাকে।

এই connection-ই পার্শ্বপ্রতিক্রিয়া ব্যাখ্যা করে। শূন্য volume মানে শূন্য processing নয়। Browser graph গণনা চালিয়ে যায় এবং Callaghan-এর Windows system-এ এটুকুই PC audio path সক্রিয় রাখতে যথেষ্ট ছিল। তাই Multipoint automatic switching PC-কে active source ভাবতে থাকে।

শুধু গণনামূলক measurement-এর জন্য OfflineAudioContext বেশি যুক্তিযুক্ত। এটি speaker বা system audio device-এ না পাঠিয়ে graph সরাসরি memory buffer-এ render করে। AliExpress graph-এ Oscillator ও analysis শূন্য output-এর আগেই আছে। Live output connection আগে পড়া frequency data-তে দৃশ্যমান সুবিধা দেয়নি, বরং পার্শ্বপ্রতিক্রিয়া তৈরি করেছে।

Mozilla 2023 সালেই একই প্রভাব নথিভুক্ত করেছিল

2026 সালে Callaghan-এর হেডফোন জনসমক্ষে আলোচিত সূত্র দেয়। কিন্তু মূল browser effect Mozilla-তে নভেম্বর 2023 থেকেই Bug 1863193 হিসেবে ছিল। Firefox 119-এর প্রথম report-এ AliExpress page Windows 11-এ স্থায়ী audio power request তৈরি করত। Tab-এ playback না দেখালেও powercfg /requests active audio stream দেখাত, ফলে computer automatically sleep-এ যেত না। Tab বন্ধ করলে request চলে যেত।

Mozilla developer Karl Tomlinson Web Audio logging চালু করেন। Log দুইবার ঠিক সেই chain দেখায় যা পরে Callaghan বর্ণনা করেন: OscillatorNode, AnalyserNode, ScriptProcessorNode, muted GainNode এবং AudioDestinationNode। Tomlinson Chrome-এও একই স্থায়ী device use দেখেন এবং লেখেন যে AliExpress AudioContext.suspend() দিয়ে এটি শেষ করতে পারত।

এটি গুরুত্বপূর্ণ স্বাধীন নিশ্চিতকরণ। Hardware side effect শুধু obfuscated script নিয়ে Callaghan-এর ব্যাখ্যার ওপর নির্ভর নয়। Mozilla বহু বছর আগে active graph এবং Windows power management-এ তার প্রভাব browser-এ সরাসরি নথিভুক্ত করেছিল। Bug এখনও open। এটি shared responsibility-ও দেখায়: AliExpress measurement শেষে context suspend করতে পারত, আর browser নীরব ও অপ্রয়োজনীয় graph-কে audio device থেকে আগে বিচ্ছিন্ন করতে পারত।

মাইক্রোফোন নয়, ঘরের ultrasonics-ও নয়

এখানে ভাষার নির্ভুলতা জরুরি। এই পরীক্ষায় AliExpress microphone record করেনি বা ঘরের শব্দ শোনেনি। Microphone access getUserMedia() দিয়ে হতো এবং user permission লাগত।

দোকান speaker দিয়ে ultrasonic signal পাঠিয়ে পরে তা physically ধরেছে—এমন ধারণাও বিভ্রান্তিকর। Measurement browser-এর internal audio processing-এ হয়েছে। Sawtooth wave গণনা ও বিশ্লেষণ করে output-এর আগে শূন্য করা হয়েছে। Virtual graph real output-এর সঙ্গে যুক্ত থাকায় headphone effect তৈরি হয়েছে।

একই গণনা কেন ভিন্ন ফল দিতে পারে

Digital signal processing-এ অনেক floating-point operation থাকে। CPU architecture, mathematical library, compiler decision, browser implementation এবং rounding ছোট পার্থক্য তৈরি করতে পারে। Web Audio standard OscillatorNode, DynamicsCompressorNode, sample rate, latency এবং timing measurement-কে সম্ভাব্য fingerprinting surface বলে। তাই browser-এর এই পার্থক্য সীমিত করা উচিত।

কিন্তু Web Audio result কোনো জাদুকরী hardware serial number নয়। একাধিক device একই value দিতে পারে এবং browser ফলকে একরূপ বা পরিবর্তিত করতে পারে। অন্য feature-এর সঙ্গে মিললেই পরিচিতি বাড়ে।

পদ্ধতিটি অন্তত 2016 সাল থেকে ব্যবহৃত

Audio fingerprinting 2026 সালের নতুন আবিষ্কার নয়। Steven Englehardt ও Arvind Narayanan 2016 সালে ACM CCS-এ প্রকাশিত OpenWPM study-এর জন্য এক million website পরীক্ষা করেন। মোট 67 site-এর তিন script-এ AudioContext fingerprinting পান। Manual analysis অনুযায়ী দুই script সত্যিই technique সক্রিয়ভাবে ব্যবহার করত।

সেখানেও Oscillator পরিচিত signal তৈরি করে, যা process, read ও hash করা হতো। একটি documented variant-এ graph AnalyserNode, ScriptProcessorNode এবং muted GainNode হয়ে output-এ যেত। গঠন AliExpress pattern-এর খুব কাছাকাছি। Princeton researchers তখনই বলেন microphone দরকার নেই এবং fingerprinting technique সাধারণত একসঙ্গে ব্যবহৃত হয়।

তাই AliExpress case-এর নতুন দিক মূল ধারণা নয়। নতুন হলো বৃহৎ online marketplace-এ নির্দিষ্ট সন্ধান, অন্যান্য feature-এর বিস্তৃত combination এবং বিশেষ করে measurement প্রকাশকারী side channel।

Audio value ছিল puzzle-এর একটি অংশ

পরীক্ষিত bundle-এ Callaghan আরও অনেক feature-এর query ও measurement পান:

  • Canvas rendering এবং toDataURL()
  • WebGL renderer, extension এবং shader precision
  • screen ও viewport dimension এবং Device Pixel Ratio
  • hardwareConcurrency এবং deviceMemory
  • installed browser plugin ও supported media format
  • WebRTC behavior ও performance timing
  • mouse, touch, focus ও scroll event
  • device movement ও orientation
  • browser automation বা bot নির্দেশ করতে পারে এমন property

Code-এ result serialize ও encrypt করা এবং fetch() বা sendBeacon() দিয়ে পাঠানোর routine-ও ছিল। Client side-এ তাই প্রমাণিত যে fingerprinting উপযোগী বিস্তৃত data সংগ্রহ করে Alibaba service-এ পাঠানো সম্ভব।

Server-এ কী হয় তা প্রমাণিত নয়। Browser থেকে storage duration বা account, order, অন্য Alibaba service বা advertising profile-এর সঙ্গে পরে linking দেখা যায় না। Callaghan নিজেই এই সীমা স্পষ্ট করেছেন।

AliExpress privacy policy-তে browser ও operating system data, hardware ও software feature, unique device identifier, usage pattern ও interaction উল্লেখ আছে। Operation ও personalization ছাড়াও fraud, money laundering এবং security incident detection উদ্দেশ্য হিসেবে বলা হয়েছে। Policy দেখা technical implementation transparent করে না, কিন্তু বিস্তৃত device ও usage data যে বর্ণিত model-এর অংশ তা দেখায়।

Fingerprinting মানেই advertising tracking নয়

Browser fingerprint নানা প্রসঙ্গে ব্যবহার হয়। Advertising network cookie মুছে ফেলার পরও browser চিনতে পারে। Online shop ও payment service একই ধরনের signal risk assessment, account takeover, coupon abuse, scraping, bot বা automated purchase-এর জন্যও ব্যবহার করে।

দুই উদ্দেশ্য পরস্পরকে বাদ দেয় না। একই device identifier security ও marketing দুই স্বার্থে কাজ করতে পারে। কিন্তু পাওয়া JavaScript কোনো নির্দিষ্ট cross-site advertising campaign প্রমাণ করে না। “AliExpress সব website-এ প্রত্যেক user-কে track করে” বলা প্রমাণের বাইরে যায়।

তবু security assessment-এ case সমস্যাজনক:

  • Measurement সাধারণ homepage থেকেই শুরু, শুধু login বা payment-এ নয়।
  • Script অত্যন্ত obfuscated এবং user-এর কাছে প্রায় বোঝার অযোগ্য।
  • Collection একটি anti-bot signal-এর অনেক বেশি।
  • Active audio graph interface-এ অর্থপূর্ণভাবে দৃশ্যমান ছিল না এবং tab mute করেও থামেনি।
  • Background function local audio path-এ এত হস্তক্ষেপ করেছিল যে external hardware-এর আচরণ বদলেছে।

বোঝা যায় এমন fraud defense-এর public implementation guide দরকার নাও হতে পারে। কিন্তু data minimization, স্পষ্ট purpose limitation এবং user expectation-এর সঙ্গে সামঞ্জস্যপূর্ণ interface behavior দরকার। নীরব shop tab-এর real-time audio path দখল করা উচিত নয়।

এই audio fingerprint আসলে কতটা unique ছিল?

Firefox developer Tom Ritter সংশ্লিষ্ট Web Audio calculation extract করে Firefox telemetry data-এর সঙ্গে তুলনা করেন। ফল alarmist উপস্থাপনাকে অনেকটাই সীমিত করে।

Firefox 118 থেকে Web Audio সব platform-এ FDLIBM mathematical library ব্যবহার করে system-dependent difference কমায়। Ritter-এর analysis-এ 99.24 শতাংশ user মাত্র তিন result value-তে ছিল। আরও 0.76 শতাংশে measurement point fail করে zero দেয়। তিন বড় group প্রধানত CPU class: FMA ছাড়া x86 বা x64, FMA সহ x64 এবং NEON সহ ARM।

নির্দিষ্ট AliExpress method-এর অর্থ, Firefox-এ প্রায় সব examined user-এর audio value individual ছিল না। এটি নির্দিষ্ট device-এর চেয়ে মোটামুটি processor class জানাত। তবে অন্যান্য value-এর ছোট long tail ছিল, এবং rare value সংশ্লিষ্ট system-কে আরও আলাদা করতে পারে।

একটি দুর্বল একক মান harmless হয় না, যখন তা graphics, hardware, behavior ও existing account information দিয়ে তৈরি শক্তিশালী profile-এর অংশ।

Fingerprinting combination দিয়ে কাজ করে। Screen size, timezone বা CPU class আলাদাভাবে সাধারণ। Canvas, WebGL, font, hardware data, browser feature, interaction pattern ও existing login একসঙ্গে অনেক বেশি পৃথক করতে পারে। তাই overall score-এ উপযোগী হতে Web Audio value unique হওয়া দরকার নেই।

Browser protection পার্শ্বপ্রতিক্রিয়াসহ অস্ত্র প্রতিযোগিতা

Browser ভিন্ন strategy নেয়। Firefox কিছু calculation একরূপ করে এবং known fingerprinting service block করে। Firefox 145 থেকে বিস্তৃত protection প্রথমে private mode ও strict Enhanced Tracking Protection-এ সক্রিয়। Mozilla নিজেই বলে aggressive uniformity legitimate function ভাঙতে পারে।

Brave Canvas ও Web Audio-এর মতো fingerprinting উপযোগী result সামান্য বদলায়। Farbling একটি session ও site-এর মধ্যে stable থাকে, কিন্তু site ও session বদলালে ভিন্ন result দেওয়ার উদ্দেশ্যে তৈরি। Application plausible value পায়, কিন্তু স্থায়ী global identifier হিসেবে ব্যবহার কঠিন হয়।

WebKit Safari-তে locally installed font ও কিছু device information-এর মতো fingerprinting surface সীমিত করে। বিশেষ ঝুঁকিপূর্ণ interface নিরাপদ উপায় না পাওয়া পর্যন্ত কখনো implement করে না। এটাই মূল দ্বন্দ্ব: জটিল web application সম্ভব করা interface browser-এর measurement surface-ও বাড়ায়।

কোনো সাধারণ browser সব fingerprinting শেষ করার নিশ্চয়তা দিতে পারে না। একটি feature একরূপ হলে provider অন্য feature বা behavioral signal বেছে নেয়। Extension, font ও manual protection-এর খুব unusual combination সবচেয়ে খারাপ ক্ষেত্রে browser-কে আরও rare করতে পারে।

ব্যবহারকারী কী করতে পারেন

সেরা ভিত্তি active fingerprinting protection-সহ updated browser। Firefox-এ আরও সুরক্ষার জন্য strict Enhanced Tracking Protection বা private window দরকার। Brave default-এ Shields ও fingerprinting defense চালু রাখে। Safari-তে বর্তমান OS ও browser version ব্যবহার করা উচিত। Tor Browser ও Mullvad Browser sensitive session-এ আরও এগিয়ে: যত বেশি user-কে একইরকম fingerprint-এর group-এ দেখাতে চায়। সেখানে নিজের customization বা extra extension যোগ করা উচিত নয়।

শুধু private window সম্পূর্ণ সমাধান নয়। এটি stored state সীমিত করে, কিন্তু hardware ও browser feature automatically অদৃশ্য করে না। Cookie মুছলেও fingerprint cookie ID-এর মতো reset হয় না।

VPN অন্য সমস্যা সমাধান করে। এটি visible public IP address বদলে এবং ব্যবহারের ধরন অনুযায়ী VPN provider পর্যন্ত transport সুরক্ষিত করে। কিন্তু Canvas, WebGL, audio calculation, font বা hardware feature automatically বদলায় না। VPN উপকারী হতে পারে, কিন্তু একা browser fingerprinting থেকে রক্ষা করে না।

uBlock Origin দিয়ে দুই script নির্দিষ্টভাবে block করা

Callaghan uBlock Origin-এর জন্য ইচ্ছাকৃতভাবে narrow দুই filter প্রকাশ করেন:

! AliExpress AWSC fingerprinting scripts
||assets.aliexpress-media.com/g/AWSC/uab/*/collina.js$script,domain=aliexpress.com
||assets.aliexpress-media.com/g/AWSC/fireyejs/*/fireyejs.js$script,domain=aliexpress.com

My filters-এ যোগ করার পর আগে খোলা AliExpress tab বন্ধ করতে হবে। পরে script block করলে আগে তৈরি audio context শেষ হয় না।

এই rules একটি momentary snapshot। Path, version ও filename বদলাতে পারে। Script সম্ভবত anti-bot ও risk infrastructure-এর অংশ, তাই extra CAPTCHA বা login ও checkout সমস্যা হতে পারে। Legitimate transaction শেষ না হলে শুধু সেই process-এর জন্য rule সাময়িক disable করে পরে tab বন্ধ করুন।

DNS level-এ পুরো host assets.aliexpress-media.com block করা অনেক বেশি broad। সেখানে অন্য shop resource থাকতে পারে। Narrow URL rule blanket domain block-এর চেয়ে নিয়ন্ত্রণযোগ্য।

JavaScript সম্পূর্ণ বন্ধ করা সাধারণত practical নয়

JavaScript ছাড়া এই measurement চলবে না, কিন্তু modern shop-ও প্রায় চলবে না। Global disable unusual browser state তৈরি করে এবং account, profile ও sensitive activity-এর সঠিক separation-এর বিকল্প নয়।

বিশেষ sensitive research-এর জন্য আলাদা, যত কম সম্ভব modified browser উপকারী হতে পারে। এতে দৈনন্দিন profile-এর সঙ্গে linking সীমিত হয়, anonymity নিশ্চিত হয় না। IP address, login, payment data ও server-side signal অপরিবর্তিত থাকে।

ইউরোপে “cookieless” মানে “consent-free” নয়। European Data Protection Board-এর final Guidelines 2/2023 ePrivacy Directive-এর Article 5(3)-এর technical scope classic cookie-এর চেয়ে ইচ্ছাকৃতভাবে বিস্তৃত ধরে। Terminal equipment-এ stored বা software ও hardware দিয়ে সেখানে generated information access-ও প্রাসঙ্গিক হতে পারে।

নির্দিষ্ট AliExpress implementation বৈধ কি না তা actual purpose, necessity, regional ePrivacy implementation, transparency ও further processing-এর ওপর নির্ভর করে। Anti-fraud legitimate purpose হতে পারে। কিন্তু homepage-এ collected প্রতিটি property দরকার কি না বা consent লাগবে কি না তা automatically নির্ধারণ করে না।

এই article legal assessment-এর বিকল্প নয়। Technically case দেখায় cookie banner আধুনিক identification-এর reality পুরো দেখায় না। User দৃশ্যমান সব marketing cookie reject করেও first-party JavaScript দিয়ে measured হতে পারে।

পরীক্ষার ভিত্তি ও সীমা

Technical analysis, browser information ও public policy আমি সর্বশেষ 31 আগস্ট 2026 পরীক্ষা করেছি। Concrete AliExpress finding Callaghan-এর Windows-এ Firefox ও Chrome দিয়ে documented test এবং Web Audio API instrumentation-এর ওপর ভিত্তি করে। Mozilla-এর independent bug report, Ritter-এর extracted audio method evaluation, OpenWPM research এবং W3C, Mozilla, Brave, WebKit, Alibaba Cloud, AliExpress ও EDPB-এর primary documentation-ও ভিত্তি।

Callaghan-এর উল্লেখ করা দুই versioned script URL আমার check-এ HTTP 200 ও application/javascript content type দিচ্ছিল। তবে controlled AliExpress account-এ script নিজে চালাইনি বা নিজের headphones দিয়ে Bluetooth side effect reproduce করিনি। অন্য operating system, browser, region, A/B test বা পরিবর্তিত script version আলাদা আচরণ করতে পারে। Server-side storage, scoring, identity linking ও transmitted value use দৃশ্যমান ছিল না, তাই এই article-এর নিজস্ব finding নয়।

আমার উপসংহার

এই case secret ultrasonic surveillance-এর প্রমাণ নয় এবং single audio value প্রতিটি computer uniquely চেনে তাও নয়। কিন্তু এটি শক্তিশালী প্রমাণ যে আধুনিক website user-এর অজান্তে browser-কে কত বিস্তৃত measurement instrument হিসেবে ব্যবহার করতে পারে।

Anti-fraud ব্যাখ্যা technically credible। বড় marketplace-কে bot, account takeover, payment fraud ও coupon abuse ঠেকাতে হয়। কিন্তু customer journey-এর প্রতিটি point-এ প্রতিটি measurement automatically justified নয়। সাধারণ homepage থেকেই audio, graphics, hardware, WebRTC ও behavioral feature সংগ্রহ করলে necessity, transparency ও side effect-এর প্রশ্নের উত্তর দিতে হবে।

শেষ পর্যন্ত কোনো privacy dashboard measurement প্রকাশ করেনি। এক জোড়া Bluetooth headphone browser নীরব—এমন ভান করতে অস্বীকার করেছিল।

আবার দেখা হবে,
Joe

উৎস