دليل · مخاطر الرسائل · · بقلم Stefan Tsezarov · حُدّث في
النص الذي لا تراه
قد تبدو رسالتان متطابقتين تمامًا وتحتويان على أحرف مختلفة كليًا.
تنسخ رسالة.
تبدو عادية.
ثلاث جمل عادية. لا شيء غريب.
تلصقها في مستند، أو موقع ويب، أو محفظة، أو مساعد ذكاء اصطناعي.
وفجأة يحدث شيء لم يبدُ أن الرسالة، كما رأيتها، قالته قط.
كيف؟
لأن ما تراه على شاشتك ليس بالضرورة كل ما في داخل النص.
بعض الأحرف لا تشغل أي حيز مرئي على الإطلاق.
لكنها ما زالت موجودة.
ما زالت قابلة للنسخ واللصق والتخزين والمعالجة.
أنت فقط لا تراها.
حاسوبك لا يرى الحروف كما تراها أنت
عندما تنظر إلى جملة، ترى أشكالًا.
أما حاسوبك فيرى بيانات.
الحرف A مثلًا يُمثَّل بحرف Unicode له نقطة ترميز محددة. والمسافة حرف آخر. ولكل حرف ورقم وعلامة ترقيم وكثير من الرموز الأخرى تمثيله الخاص.
لكن ليس كل حرف ينتج شكلًا مرئيًا.
بعض الأحرف تخبر البرمجيات كيف يجب أن يتصرف النص.
يمكنها أن تخبر البرنامج بأن:
- يصل هذه الأحرف ببعضها
- لا يكسر السطر هنا
- يعرض هذا القسم من اليمين إلى اليسار
- يغيّر ترتيب هذه الأحرف
- أو، في بعض الحالات، يشغل موضعًا فحسب دون أن يرسم أي شيء
لذا يمكن أن يكون لديك نصان يبدوان متطابقين وهما سلسلتان مختلفتان من الأحرف.
وقد يكون لذلك الفرق أهمية.
أهمية كبيرة.
ثلاثة أنواع من النص غير المرئي تستحق المعرفة
هناك عدة آليات مختلفة، لكن ثلاثًا منها مفيدة بشكل خاص للفهم.
1. أحرف لا تظهر
تُسمّى هذه غالبًا الأحرف ذات العرض الصفري.
من أمثلتها zero-width space وzero-width joiner وword joiner.
تشغل موضعًا في النص لكنها لا تنتج بكسلات مرئية.
مثلًا، قد تبدو هاتان الكلمتان متطابقتين:
payment
payment
يوجد حرف غير مرئي داخل الثانية.
على الأرجح لا تستطيع رؤيته.
لكن حاسوبك يستطيع.
وهذا يعني أن السلسلتين ليستا متطابقتين فعلًا.
قد يؤثر هذا في عمليات البحث والمرشحات وأسماء المستخدمين والمعرّفات وغيرها من الأنظمة التي تقارن الأحرف الفعلية لا ما يراه الإنسان.
وهناك سبب مشروع لوجود بعض هذه الأحرف.
سنعود إلى ذلك.
2. أحرف تغيّر الترتيب الذي تراه
بعض الأحرف غير المرئية تؤثر في اتجاه النص.
هذا ضروري لأن لغات مثل العربية والعبرية تُكتب من اليمين إلى اليسار، بينما تُكتب الإنجليزية من اليسار إلى اليمين.
قد تتطلب جملة تحتوي على الاثنين تعليمات تخبر البرنامج كيف يجب عرض الأجزاء المختلفة.
قد تكون تلك التعليمات مفيدة.
لكن يمكن أيضًا إساءة استخدامها.
يمكن لحرف تحكم بالاتجاه أن يجعل الأحرف المخزّنة في الحاسوب تظهر بترتيب مختلف على الشاشة.
وهذا يخلق مشكلة أمنية واضحة.
قد يبدو اسم ملف مثلًا وكأنه ينتهي بامتداد بينما تقول سلسلة أحرفه الفعلية شيئًا مختلفًا.
وقد يكون للمبدأ نفسه أهمية في الشيفرة المصدرية.
المراجع يرى شيئًا.
والحاسوب يعالج شيئًا آخر.
3. أحرف يمكنها حمل رسالة غير مرئية
هذا هو النوع غير المألوف.
يحتوي Unicode على نطاق يُعرف بكتلة Tags.
صُمّمت هذه الأحرف لأغراض الوسم، وهي عادة غير مرئية عند العرض.
الجزء المثير للاهتمام أن أحرف الوسم المفردة يمكن أن تمثل أحرف ASCII عادية.
اجمع منها عددًا كافيًا ويمكنها ترميز نص.
لذا يمكن لجملة أن تحتوي على سلسلة إضافية من الأحرف لا تظهر على الشاشة.
بالنسبة لعينيك، قد تبدو الرسالة تحية عادية تمامًا.
أما بالنسبة لبرنامج يقرأ الأحرف الفعلية، فقد يكون هناك أكثر من ذلك بكثير.
ويصبح هذا الفرق مثيرًا للاهتمام بشكل خاص عندما تكون الوجهة مساعد ذكاء اصطناعي.
الذكاء الاصطناعي لا يرى رسالتك كصورة للشاشة.
بل يعالج الأحرف.
لذا فما لا تستطيع رؤيته قد يظل جزءًا من المدخلات.
هكذا يبدو الأمر
خذ هذه الجملة:
Send the payment to the address below.
تبدو عادية، أليس كذلك؟
الآن تخيّل أن أحرفًا غير مرئية أُدرجت فيها.
على شاشتك، قد تظل تبدو هكذا — وهذه هي النسخة الحقيقية، المجهزة لتختبرها:
Send the payment to the address below.
لكن في الخلفية، قد يكون الحاسوب يحتفظ فعلًا بأحرف إضافية.
على سبيل المثال:
ما تراه:
Send the payment to the address below.
ما يتلقاه الحاسوب:
Send the غير مرئي payment غير مرئي … TAGS
الجملة الظاهرة لم تتغير.
لكن السلسلة الفعلية تغيّرت.
هذه هي الفكرة المهمة.
المظهر نفسه. بيانات مختلفة.
إذا مرّرت المثال المجهز خصيصًا عبر فاحص، فسيستطيع الفاحص تحديد تلك الأحرف رغم أن عينيك لا تستطيعان.
أعد كتابة الجملة الظاهرة يدويًا، ولن تأتي تلك الأحرف المخفية معها.
هذه هي الحيلة كلها.
الحرف الذي ليس هو الحرف
الأحرف غير المرئية ليست المشكلة الوحيدة.
أحيانًا يكون الحرف مرئيًا تمامًا.
لكنه ليس الحرف الذي تظنه.
تأمّل هاتين:
savesavesave
sаvesavesave
يبدو التمييز بينهما شبه مستحيل.
لكن انظر إلى الثانية بعناية.
الحرف الثاني ليس الحرف اللاتيني a.
إنه الحرف السيريلي а.
يبدوان متشابهين.
لكنهما حرفان مختلفان.
تُعرف هذه التقنية بهجوم الأحرف المتشابهة (homoglyph).
يمكن استخدام الفكرة نفسها مع أسماء المستخدمين وأسماء النطاقات وأسماء التوكنات وغيرها من المعرّفات.
يمكن لحساب مزيف استخدام حرف شبيه.
ويمكن لموقع مزيف استخدام نطاق شبيه.
بالنسبة للإنسان، قد يبدو الاسم مألوفًا.
أما بالنسبة للحاسوب، فهو سلسلة مختلفة تمامًا.
أين يمكن أن يسبب هذا مشكلات فعلًا؟
هذه ليست مجرد حيلة غريبة في Unicode.
إنها مهمة في أي مكان يُنسخ فيه النص أو يُقارن أو يُتصرَّف بناءً عليه.
مساعدو الذكاء الاصطناعي
تلصق رسالة في مساعد ذكاء اصطناعي.
ترى سؤالًا.
قد يحتوي النص الفعلي على أحرف لا تراها.
ولأن المساعد يعالج النص الفعلي، لا المظهر المرئي فقط، تصبح تلك الأحرف جزءًا من المدخلات.
لهذا قد تكون فحوص الأحرف غير المرئية مفيدة قبل لصق نص غير موثوق في نظام يستطيع اتخاذ إجراءات أو معالجة معلومات حساسة.
أسماء المستخدمين وأسماء الحسابات
قد يبدو حسابان وكأن لهما الاسم نفسه بينما يحتويان على أحرف مختلفة.
وهذا قد يجعل الانتحال أصعب كثيرًا في الملاحظة.
الروابط والنطاقات
قد يحتوي الرابط على أحرف تشبه حروفًا مألوفة.
الاسم الذي تتعرف عليه ليس بالضرورة النطاق الدقيق الذي تظنه.
الشيفرة
أحرف التحكم بالاتجاه وأحرف Unicode غير المعتادة الأخرى قد تجعل مراجعة الشيفرة المصدرية بشكل صحيح أصعب.
المطوّر يرى النص المعروض.
والمترجم يرى الأحرف الفعلية.
البحث والتصفية
المرشح يقارن السلاسل عادة.
أدرج حرفًا غير مرئي فتتغير السلسلة.
وقد يؤثر ذلك في عمليات البحث وقوائم الحظر وأنظمة الإشراف وأدوات معالجة النصوص الأخرى.
كيف يمكنك التحقق؟
لا تحتاج إلى أن تصبح خبيرًا في Unicode.
هناك بعض الفحوص البسيطة.
الفحص 1 — افحص النص
الصق النص المريب في فاحص لأمان الأحرف.
الفاحص المفيد ينبغي أن يخبرك:
- ما إذا كانت هناك أحرف غير مرئية
- كم عددها
- ما هي هذه الأحرف
- إلى أي عائلة Unicode تنتمي
- ما إذا رُصدت أحرف متشابهة
هذا ما صُمّم الفاحص في هذا الموقع لعرضه.
المهم أنه ينبغي أن يخبرك بما وجده فعلًا، بدل أن يعطيك ببساطة ضوءًا أخضر أو أحمر غامضًا.
الفحص 2 — قارن عدد الأحرف
هذا فحص سريع للتأكد.
إذا بدا أن جملة تحتوي على 38 حرفًا لكن عدّاد الأحرف يبلّغ عن 47، فلديك فرق يستحق التحري.
عدد الأحرف لن يخبرك ما هي الأحرف الإضافية.
لكنه قد يخبرك بأن هناك شيئًا لا تراه.
الفحص 3 — أعد كتابة النص عند الاقتضاء
إذا أرسل لك أحدهم تعليمة قصيرة ولا تحتاج إلى الاحتفاظ بالتنسيق الأصلي، فكتابة الجزء المهم يدويًا قد تزيل الأحرف غير المرئية من النص المنسوخ.
لكن تذكّر:
إعادة الكتابة لا تجعل الوجهة جديرة بالثقة.
إذا أرسل لك أحدهم عنوان موقع مريبًا مثلًا، فكتابته يدويًا لا تثبت أن الموقع نفسه مشروع.
إنها ببساطة طريقة لتجنّب الأحرف المخفية في النص الذي تنسخه.
الفحص 4 — اقرأ النطاق الفعلي
لا تعتمد فقط على التعرف على شكل النطاق.
إذا كان الرابط مهمًا، فتحقق من النطاق الفعلي.
للحسابات المهمة، استخدم إشارة مرجعية حفظتها مسبقًا أو اكتب العنوان المعروف بنفسك بدل اتباع رابط غير متوقع.
ينطبق المبدأ نفسه على أسماء المستخدمين وعناوين المحافظ:
التعرف على الشكل ليس كالتحقق من الأحرف.
لا تذعر حين تجد حرفًا غير مرئي
هذا مهم.
غير المرئي لا يعني تلقائيًا خبيثًا.
بعض أحرف Unicode غير المرئية موجودة لأن الناس يحتاجون إليها فعلًا.
أحرف zero-width joiner مثلًا قد تؤثر في كيفية اتصال الأحرف في أنظمة كتابة مختلفة.
وتُستخدم أيضًا في تسلسلات الرموز التعبيرية.
أحرف التحكم بالاتجاه ضرورية لعرض النص الذي يمزج أنظمة كتابة من اليسار إلى اليمين ومن اليمين إلى اليسار بشكل صحيح.
لذا فإن العثور على حرف غير مرئي لا يعني تلقائيًا:
«هذا هجوم.»
بل يعني:
هناك شيء هنا لا أستطيع رؤيته.
ما يعنيه ذلك يعتمد على السياق.
من أرسل النص؟
ماذا يطلب منك النص أن تفعل؟
أين توشك أن تلصقه؟
هل سيذهب إلى مساعد ذكاء اصطناعي، أو محفظة، أو موقع ويب، أو طرفية، أو أي نظام آخر سيتصرف بناءً عليه؟
هذه الأسئلة مهمة.
كتلة Tags تستحق انتباهًا إضافيًا
أحرف Tags غير مألوفة لأن غرضها تمثيل معلومات مع بقائها غير مرئية في عرض النص العادي.
إذا أرسل لك غريب رسالة تحتوي على تسلسل غير متوقع منها، فهذا يستحق التحري.
يستطيع الفاحص كشف وجود الأحرف، وعند الاقتضاء، فك النص الذي تمثله.
لكن حتى حينها، لا يخبرك الكشف بنية المرسل.
بل يخبرك بما في النص.
وهذه إجابة أنفع بكثير ويمكن الدفاع عنها.
ما الذي يخبرك به الفحص النظيف — وما لا يخبرك به
هذا موضع آخر تحتاج فيه أدوات الأمان إلى الصدق.
الفاحص يكتشف الأحرف.
ولا يقرأ أفكار الناس.
إذا وجد الفاحص أحرفًا غير مرئية، فيمكنه إخبارك ما هي.
ولا يستطيع إخبارك من أدرجها.
ولا يستطيع إثبات سبب إدراجها.
وإذا لم يجد شيئًا، فهذا لا يعني أن الرسالة نفسها جديرة بالثقة.
قد تحتوي جملة تبدو عادية تمامًا على كذبة، أو رابط خبيث، أو تعليمة خطرة.
وبالمثل، قد تكون رسالة تحتوي على حرف غير مرئي غير ضارة تمامًا.
وهناك أيضًا حدود للكشف الآلي عن الأحرف المتشابهة. يستطيع الفاحص فحص الأحرف المتشابهة المعروفة ومجموعات الأحرف المعروفة، لكن لا ينبغي اعتبار أي فحص منفرد ضمانًا بأن كل خداع بصري ممكن قد اكتُشف.
النتيجة تخبرك بما رُصد.
وما زال عليك أن تقرر ما يعنيه النص وما إذا كنت تثق بمصدره.
العادة البسيطة التي تستحق البناء
لا تحتاج إلى الخوف من النسخ واللصق.
فقط تمهّل عندما يكون النص الذي تنسخه على وشك أن يجعل شيئًا ما يحدث.
مساعد ذكاء اصطناعي.
محفظة.
موقع ويب.
سطر أوامر.
حساب.
معاملة مالية.
قطعة شيفرة.
إذا لم تكتب النص بنفسك، فأنت لا تعرف بالضرورة كل ما بداخله.
ولا داعي لأن تخمّن.
افحص الأحرف قبل أن تدعها تتصرف.
يستغرق ذلك ثوانٍ.
وفي كثير من الحالات، يكون الفحص مجانيًا.
هذا المقال لأغراض تعليمية فقط. يشرح كيف يمكن لأحرف Unicode غير المرئية وأحرف التحكم باتجاه النص والأحرف المتشابهة أن تؤثر في النص الرقمي. المثال في هذه الصفحة يحتوي على أحرف غير مرئية أُدرجت عمدًا كي تفحص الآلية بنفسك. النص المخفي غير ضار وموجود لأغراض التوضيح فقط.
الأحرف غير المرئية تصمد أمام النسخ واللصق، لذا يراها الفاحص في كل الأحوال. ولتتجاوز اللصق، استخدم الإشارة المرجعية لفحص النص المحدد.