Trojan Source
ٹروجن سورس ایک سافٹ ویئر کی کمزوری کا نام ہے جو سورس کوڈ کے اصل نفاذ سے مختلف طریقے سے سورس کوڈ کو ظاہر کرنے کے لیے یونیکوڈ کے دو طرفہ حروف کا غلط استعمال کرتا ہے۔ استحصال اس بات کا استعمال کرتا ہے کہ کس طرح پڑھنے کی مختلف سمتوں کے تحریری اسکرپٹ کو کمپیوٹر پر دکھایا اور انکوڈ کیا جاتا ہے۔ اسے 2021 کے آخر میں کیمبرج یونیورسٹی میں نکولس باؤچر اور راس اینڈرسن نے دریافت کیا تھا۔ پس منظر یونیکوڈ متن، علامتوں اور گلیفس کی نمائندگی کے لیے ایک انکوڈنگ معیار ہے۔ یونیکوڈ کمپیوٹرز پر سب سے زیادہ غالب انکوڈنگ ہے، جو 98 ٪ سے زیادہ ویب سائٹس میں استعمال ہوتا ہے۔ یہ بہت سی زبانوں کی حمایت کرتا ہے، اور اس کی وجہ سے، اسے متن لکھنے کے مختلف طریقوں کی حمایت کرنی چاہیے۔ اس کے لیے بائیں سے دائیں دونوں زبانوں جیسے انگریزی اور روسی، اور دائیں سے بائیں زبانوں جیسے عبرانی اور عربی کے لیے حمایت کی ضرورت ہے۔ چونکہ یونیکوڈ کا مقصد ایک سے زیادہ تحریری نظام کا استعمال کرتے ہوئے حل کرنا ہے، اس لیے اسے مختلف ڈسپلے آرڈرز کے ساتھ اسکرپٹ کو ملانے اور متضاد آرڈرز کو حل کرنے کے قابل ہونا چاہیے۔ اسے ٹھیک کرنے کے لیے یونیکوڈ میں دو طرفہ حروف (بیڈی) نامی حروف ہوتے ہیں جو بیان کرتے ہیں کہ متن کو کس طرح دکھایا اور پیش کیا جاتا ہے۔ متن کو بصری طور پر تبدیل کیے بغیر اس کی تشریح کرنے کے طریقے کو تبدیل کرنے کے لیے ان حروف کا غلط استعمال کیا جا سکتا ہے، کیونکہ حروف اکثر پوشیدہ ہوتے ہیں۔ طریقہ کار استحصال میں، ماخذ کوڈ میں متن کو بصری طور پر دوبارہ ترتیب دینے کے لیے دو طرفہ حروف کا غلط استعمال کیا جاتا ہے تاکہ بعد میں عمل ایک مختلف ترتیب میں ہو۔ دو طرفہ حروف کو سورس کوڈ کے ان علاقوں میں داخل کیا جا سکتا ہے جہاں سٹرنگ لیٹرلز کی اجازت ہے۔ یہ اکثر دستاویزات، متغیرات، یا تبصروں پر لاگو ہوتا ہے۔ مندرجہ بالا مثال میں، آر ایل آئی نشان (دائیں سے بائیں الگ تھلگ) مندرجہ ذیل متن کو الٹا ترتیب میں تشریح کرنے پر مجبور کرتا ہے: ٹرپل کوٹ پہلے ہے (سٹرنگ کو ختم کرنا)، اس کے بعد سیمی کولن (نئی لائن شروع کرنا)، اور آخر میں قبل از وقت واپسی کے ساتھ (اس کے نیچے کسی بھی کوڈ کو واپس کرنا اور نظر انداز کرنا)۔ نئی لائن آر ایل آئی کے نشان کو ختم کرتی ہے، اور اسے نیچے دیے گئے کوڈ میں جانے سے روکتی ہے۔ بیڑی کردار کی وجہ سے، کچھ سورس کوڈ ایڈیٹرز اور آئی ڈی ای بغیر کسی بصری اشارے کے کوڈ کو ڈسپلے کے لیے دوبارہ ترتیب دیتے ہیں کہ کوڈ کو دوبارہ ترتیب دیا گیا ہے، لہذا انسانی کوڈ کا جائزہ لینے والا عام طور پر ان کا پتہ نہیں لگاتا۔ تاہم، جب کوڈ کو مرتب کرنے والے میں داخل کیا جاتا ہے، تو مرتب کرنے والا بیڈی چار کو نظر انداز کر سکتا ہے اور حروف کو بصری طور پر دکھائے جانے سے مختلف ترتیب میں پروسیس کر سکتا ہے۔ جب مرتب مکمل ہو جاتا ہے، تو یہ ممکنہ طور پر ایسے کوڈ کو انجام دے سکتا ہے جو بصری طور پر غیر قابل عمل معلوم ہوتا ہے۔ پیچیدہ حملے پیدا کرنے کے لیے فارمیٹنگ کے نشانات کو متعدد بار جوڑا جا سکتا ہے۔ اثر اور تخفیف پروگرامنگ زبانیں جو یونیکوڈ سٹرنگز کی حمایت کرتی ہیں اور یونیکوڈ کے بیڈی الگورتھم کی پیروی کرتی ہیں وہ استحصال کا شکار ہوتی ہیں۔ اس میں جاوا، گو، سی، سی + +، سی #، ازگر اور جاوا اسکرپٹ جیسی زبانیں شامل ہیں۔ اگرچہ حملہ سختی سے غلطی نہیں ہے، لیکن بہت سے مرتب کرنے والوں، ترجمانوں اور ویب سائٹوں نے استحصال کے لیے انتباہات یا تخفیف کا اضافہ کیا۔ جی این یو جی سی سی اور ایل ایل وی ایم دونوں کو استحصال سے نمٹنے کے لیے درخواستیں موصول ہوئیں۔ ماریک پولاسیک نے استحصال شائع ہونے کے فورا بعد جی سی سی کو ایک پیچ پیش کیا جس نے ممکنہ طور پر غیر محفوظ دشاتمک حروف کے لیے ایک انتباہ نافذ کیا۔ اس فعالیت کو جی سی سی 12 کے لیے-وبیڈی-چارز پرچم کے تحت ضم کر دیا گیا۔ ایل ایل وی ایم نے بھی اسی طرح کے پیچوں کو ضم کیا۔ رسٹ نے 1.56.1 میں استحصال کو طے کیا، کوڈ کو مسترد کرتے ہوئے جس میں ڈیفالٹ طور پر حروف شامل ہوتے ہیں۔ رسٹ کے ڈویلپرز کو فکس سے پہلے کوئی کمزور پیکیج نہیں ملا۔ ریڈ ہیٹ نے اپنی ویب سائٹ پر ایک ایڈوائزری جاری کی، جس میں استحصال کو "اعتدال پسند" قرار دیا گیا۔ گٹ ہب نے اپنے بلاگ پر ایک انتباہ جاری کیا، ساتھ ہی ساتھ ویب سائٹ کو اپ ڈیٹ کیا تاکہ جب کسی ذخیرہ کے کوڈ میں بیڑی حروف کا پتہ چل جائے تو ڈائیلاگ باکس دکھایا جا سکے۔ حوالہ جات دریافت کنندگان کی طرف سے بیرونی لنکس https://trojansource.codes سائٹ، نکولس باؤچر اور راس اینڈرسن کانسیپٹ کوڈ ٹروجن کا ثبوت مکمل تحقیقی مقالہ NIST نیشنل ولنریبلٹی ڈیٹا بیس اینڈ CVE کامن ولنریبلٹیز اینڈ ایکسپوزرز CVE-2021-42574-NIST & CVE (BIDI استحصال) CVE-2021-42694-NIST & CVE (ہوموگلیف حملہ) یونیکوڈ کنسورشیم سے دو طرفہ حروف کے بارے میں اور یونیکوڈ کنسورشیم سے یونیکوڈ UTR 36 کو فارمیٹ کرنے کے بارے میں UAX 9، جو یونیکوڈ CERT/CC ولنریبلٹی رپورٹ 2021 میں انجیکشن کے استحصال سافٹ ویئر کیڑے کی کمپیوٹنگ میں کمزوری کو بیان کرتا ہے۔