يستخدم معيار S-100 لأنظمة عرض الخرائط الإلكترونية ومعلوماتها (ECDIS) نصوص Lua لعرض الخرائط الإلكترونية، لكنه يفتقر إلى مواصفات أمنية لتنفيذ النصوص. وتقيّم هذه الورقة أدوات الاختبار الأمني الآلي للتطبيقات الثابتة (SAST) الخبيرة مقابل المراجعة اليدوية الخبيرة للبرمجيات المتوافقة مع S-100. وطُبقت أربعة أدوات SAST إلى جانب مراجعة يدوية خبيرة لبرنامج OpenS100، وهو تطبيق مرجعي للجيل التالي من ECDIS. وعلى الرغم من أن الأدوات الآلية حددت عيوبًا عديدة، إلا أنها فشلت في كشف 83% (19 من 23) من الثغرات التي حددها الخبراء، بما في ذلك ثغرة مفسر Lua غير المقيد بدرجة 9.3 في نظام التقييم المشترك لخطورة الثغرات (CVSS). وتمكّن هذه الثغرة من تنفيذ الشيفرة عن بُعد (RCE) عبر كتالوجات عرض خبيثة، وثُبت ذلك بتطوير إثبات مفهوم (PoC). ويُظهر التحليل أن أدوات SAST مقيدة بمحدودية المعرفة البحرية بالمجال وصعوبات تحليل المخاطر الدلالية العابرة للغات عند واجهة C++–Lua. وتثبت النتائج أن الثغرات المحددة تنبع من فجوات في المواصفات في معيار S-100 وليست مجرد أخطاء ترميز معزولة. وتشير هذه النتائج إلى أن شهادات السلامة الوظيفية تحتاج إلى تكميل لمعالجة مخاطر الأمن على مستوى التصميم. وتدعم الأدلة ضرورة أن تدرج المنظمة الهيدروغرافية الدولية (IHO) ضوابط أمنية — مثل عزل النصوص وقيود المكتبات — في إطار S-100 قبل الموعد الإلزامي للاعتماد في عام 2029.
تطورت الملاحة البحرية من الخرائط الورقية إلى الخرائط الإلكترونية (ENC)، وأدخلت المنظمة الهيدروغرافية الدولية (IHO) معيار S-100 ليحل محل الصيغة القديمة S-57 [1]. ويفصل معيار S-100 البيانات عن التصور عبر محرك عرض يفسر نصوص Lua لعرض أنظمة ECDIS. وعلى الرغم من أن S-100 يتضمن آليات تشفير مثل SECOM (التواصل الآمن بين السفينة والشاطئ) وفق IEC 63173-2 إلى جانب التوقيعات الرقمية في الجزء 15 التي تضمن أن بيانات الخرائط مصدرها مكاتب هيدروغرافية معتمدة، فإن سلامة التشفير تضمن أصالة المصدر لكنها لا تضمن سلامة النصوص [2،3]. فالنصوص الخبيثة من مصادر مخترقة يمكن أن تتلاعب بعرض الخرائط، مما يؤدي إلى مخاطر ملاحية أو تعطيل تشغيلي. وتحمي وسائل حماية أنظمة التشغيل الحديثة مثل منع تنفيذ البيانات (DEP) البرمجيات التي تفسر النصوص لتوافق المعايير، لكن أدوات التحليل الأمني التجاري تكتشف بفعالية عيوب البرمجيات الشائعة مثل تجاوز المخزن المؤقت، بينما تواجه قيودًا عندما تتفاعل لغات البرمجة المختلفة. ويجسد محرك عرض S-100 هذا التحدي، إذ تتدفق منطقية الملاحة الحرجة بين تحليل C++ وتنفيذ Lua.
ولقياس حجم هذه الفجوة، تقارن هذه الدراسة مباشرة أدوات SAST الآلية بالمراجعة اليدوية الخبيرة على التطبيق المرجعي OpenS100. وتتمثل المساهمات في: (1) أول تقييم تجريبي لمنهجية مزدوجة على برمجيات S-100؛ (2) تحديد ثغرة حرجة بدرجة CVSS 9.3 تمكّن من تنفيذ الشيفرة عن بُعد عبر كتالوجات العرض، مع إثبات مفهوم مُتحقق؛ (3) إثبات أن الثغرات تنبع من فجوات في مواصفات المعيار وليست أخطاء ترميز؛ (4) رقعة تخفيف مُتحققة تحافظ على التوافق الوظيفي؛ و(5) توصيات توحيد قياسية لـ IHO قبل الاعتماد الإلزامي الجديد عام 2029. ويُنظم باقي الورقة كالتالي: يستعرض القسم 2 الخلفية والأعمال ذات الصلة، ويصف القسم 3 المنهجية ثلاثية المراحل، ويعرض القسم 4 النتائج، ويحلل القسم 5 دراسة الحالة للثغرة الحرجة، ويناقش القسم 6 القيود والتوحيد القياسي، ويخلص القسم 7 بالتوصيات.
يوفر نموذج البيانات الهيدروغرافية العالمي S-100 الصادر عن IHO الأساس التقني للجيل التالي من ECDIS. وطُوّر S-100 للتغلب على صلابة بنية البيانات وقيود الصيانة في معيار S-57 القديم، وصُمم ليتوافق مع سلسلة معايير المعلومات الجغرافية ISO 19100 [1]. ويتعدى المعيار تعريف صيغ الترميز ليوفر إطارًا مرنًا لتطوير مواصفات منتجات متنوعة متعلقة بالبحرية بناءً على النمذجة كائنية التوجه باستخدام لغة النمذجة الموحدة. ومن منظور تقني، يتمثل التغير المعماري الرئيسي في S-100 في فصل سمات البيانات عن منطق التصور. فعلى عكس الأنظمة القديمة التي اعتمدت على جداول رموز ثابتة وقواعد تصور ثابتة، يحدد S-100 آلية عرض في الجزء 9 (العرض) والجزء 9أ (العرض بلغة Lua) والجزء 13 (البرمجة النصية). وعلى وجه التحديد، ينص معيار S-100 الإصدار 5.2.0 الجزء 9أ القسم 9أ-4.1 على أنه «يجب استخدام إصدار Lua 5.1 لتنفيذ وظائف العرض» [4]. بالإضافة إلى ذلك، يحدد الجزء 13 القسم 13-7.1 إصدار Lua المطلوب [5]. وتتكون كتالوجات العرض (PCs) من ملفات XML تحتوي على قواعد العرض ونصوص Lua لتنفيذها، والتي تحملها الأنظمة ديناميكيًا أثناء التشغيل لعرض الأجسام البحرية على الشاشات.
تُصنف تقنيات تشخيص العيوب الأمنية في البرمجيات عمومًا إلى تحليل ساكن وتحليل ديناميكي. يفحص التحليل الساكن بنية البرنامج وتدفق التحكم دون تنفيذ الشيفرة المصدرية لتحديد نقاط الضعف المحتملة، مما يتيح فحصًا شاملًا لقواعد الشيفرة بأكملها لكنه يحمل احتمال الإيجابيات الكاذبة. وفي المقابل، يراقب التحليل الديناميكي فساد الذاكرة والاستثناءات آنيًا أثناء تنفيذ البرامج، ملتقطًا التهديدات بدقة أثناء التشغيل الفعلي لكنه عاجز عن تشخيص مناطق الشيفرة غير المنفذة. وتُصنف نقاط الضعف وفق إطار تعداد نقاط الضعف المشتركة (CWE) [6]، الذي يفهرس نقاط الضعف الأمنية الشائعة في بنية البرمجيات وتصميمها وشيفرتها، محددًا أنواعًا مثل تجاوز المخزن المؤقت (CWE-120) وحقن الشيفرة (CWE-94). وعندما تتطور نقاط الضعف الأمنية إلى عيوب ملموسة قابلة للاستغلال من المهاجمين تُسمى ثغرات، وتُقيّم خطورتها باستخدام نظام التقييم المشترك لخطورة الثغرات (CVSS) الإصدار 3.1 [7]. ويوفر CVSS مقاييس كمية تتراوح من 0.0 إلى 10.0، مقيّمًا الثغرات بناءً على ثمانية مقاييس أساسية تشمل متجه الهجوم وتعقيد الهجوم والامتيازات المطلوبة وتفاعل المستخدم والنطاق والآثار على السرية والسلامة والتوافر.
نمت أبحاث الأمن السيبراني البحري بشكل كبير بعد قرار IMO رقم MSC.428(98) الذي ألزم بإدارة المخاطر السيبرانية في عام 2021 [8]. وأجرى Li وآخرون مراجعة شاملة للهجمات السيبرانية البحرية [9]، مقدمين تصنيفًا متعدد الأبعاد يغطي ECDIS وAIS وGNSS وVDR وGMDSS، محددين المكونات الطرفية وأنظمة التشغيل القديمة كثغرات ECDIS الرئيسية. غير أن تصنيفهم يركز على هجمات الشبكة ولا يعالج ثغرات معايير بيانات الملاحة التي تتطلب تنفيذ نصوص ديناميكيًا. وحلل Longo وآخرون سيناريوهات هجوم للتلاعب بصور الرادار البحرية عبر بروتوكول ASTERIX، مظهرين ثغرات الشبكات [10]. وأظهرت أبحاث الثغرات التجريبية على ECDIS التشغيلية أوجه قصور أمنية متسقة عبر المصنعين: إذ وجد Svilicic وآخرون أنظمة Windows 7 ببروتوكول SMBv1 الضعيف ما تزال نشطة في عام 2024 [11]، وحلل Jo وآخرون أجهزة JAN-901B وTransNav ووجدوا أنماطًا مماثلة من الأنظمة غير المحدثة والخدمات المكشوفة [12]. ومع ذلك، لا تتناول أي من هذه الدراسات أمن تنفيذ النصوص في طبقة العرض.
يلخص الجدول 1 من الورقة الأصلية الدراسات المراجعة عبر ثلاث فئات بحثية، مبرزًا الغياب المنهجي للعمل عند تقاطع معايير الملاحة البحرية وأمن تنفيذ النصوص المضمنة والكشف عن الثغرات الخاص بالمجال: أمن ECDIS (شبكي فقط دون أمن معيار البيانات)، وأمن معيار S-100 (تغطية محدودة رغم إلزامية 2029)، وأمن بيئة Lua المعزولة (دون تطبيق بحري)، والأنظمة الحرجة للسلامة (دون أطر تنفيذ نصوص)، وقيود SAST (معدلات إخفاق 47–80% للثغرات العامة)، وSAST المعزز بنماذج لغوية (شيفرة عامة دون تطبيق بحري). وتكشف مراجعة الأدبيات عن ثلاث فجوات بحثية: أولًا، أبحاث أمن S-100 محدودة رغم بدء الاعتماد الطوعي في يناير 2026 والإلزام للمنشآت الجديدة اعتبارًا من يناير 2029؛ وثانيًا، لا توجد دراسة تقارن أدوات SAST بالمراجعة الخبيرة على برمجيات S-100؛ وثالثًا، لم تُحلل الآثار الأمنية لتنفيذ Lua غير المعزول في محركات العرض. وتسد هذه الدراسة هذه الفجوات عبر التقييم المزدوج على OpenS100، وتحديد ثغرة حرجة مُتحققة، وتقديم رقعة وتوصيات توحيد قياسية.
تُجري هذه الورقة إجراء تحليل من ثلاث مراحل للتحقق من فعالية الكشف لأدوات التحليل الأمني المستهدفة لبرنامج OpenS100 المتوافق مع معيار S-100، وتحديد النقاط الأمنية العمياء الناتجة عن المنطق الخاص بالمجال. ويوضح الشكل 2 من الورقة الأصلية سير العمل التجريبي الذي يضم ثلاث مراحل متتابعة: تُنشئ المرحلة 1 هدف التحليل وبيئة البناء؛ وتنفذ المرحلة 2 خط التحليل الساكن الآلي حيث تولد أربعة أدوات مشكلات خام تخضع لتصنيف CWE وإزالة التكرار لإنتاج مجموعة عيوب مُنقحة؛ وتُجري المرحلة 3 مراجعة يدوية خبيرة للشيفرة عبر تحديد سطح الهجوم وتدقيق الشيفرة القائم على المخاطر والتقييم الأمني للثغرات المكتشفة.
اختير برنامج OpenS100، وهو مشروع مفتوح المصدر مطور بناءً على عارض S-100 التابع للوكالة الكورية للهيدروغرافيا والأوقيانوغرافيا (KHOA) تحت وزارة المحيطات والمصايد (MOF)، هدفًا للتحليل في هذه الورقة [33]. ويعمل OpenS100 كتطبيق مرجعي مشابه لبيئات اختبار الأبحاث الأمنية البحرية مثل MaCySTe، التي توفر بيئة حاويات لتجريب أنظمة IT/OT البحرية [34]. لكن على عكس بيئات الاختبار العامة، ينفذ OpenS100 تحديدًا توافق معيار S-100، ويُظهر مستودع المشروع 18 fork مما يشير إلى استخدامه كأساس لتطبيقات مشتقة. ويعني هذا النمط الواسع الانتشار أن الثغرات المحددة في OpenS100 ستتكاثر على الأرجح في الأنظمة التابعة ما لم ينفذ المطورون ضوابط أمنية غير محددة في معيار S-100. وبرنامج OpenS100 تطبيق مرجعي قائم على C++ مصمم لاستيعاب مواصفات منتجات S-100 متنوعة تشمل S-101 (معيار الخرائط الإلكترونية للجيل التالي) وS-102 وS-124. ويلتزم النظام بصرامة بمواصفات العرض بلغة Lua في الجزء 9أ ومواصفات PC في الجزء 13.
في التشخيص من المرحلة الأولى، أُنشئ خط آلي يدمج أدوات تحليل ساكن متعددة لتحديد نقاط الضعف الأمنية عبر الشيفرة المصدرية. والأدوات المستخدمة هي: FlawFinder الذي يكشف استدعاءات الدوال المعرضة في شيفرة C/C++ التي قد تسبب تجاوز المخزن المؤقت أو تمكين حقن الأوامر على مقياس مخاطر 1–5؛ وCppCheck الذي يكشف طيفًا واسعًا من أخطاء البرمجة تشمل تسربات الذاكرة وإلغاء مرجعية المؤشرات الفارغة واستخدام المتغيرات غير المهيأة، مصنفًا إياها حسب الخطورة إلى خطأ أو تحذير أو نمط؛ وتحليل شيفرة Microsoft Visual C++ وهو محرك تحليل ساكن مضمن في Visual Studio يكشف تجاوزات المخزن المؤقت وعدم تطابق الأنواع والوصول لذاكرة غير مهيأة؛ وGitHub CodeQL الذي يستخدم تحليلًا دلاليًا قائمًا على الاستعلامات يبني قاعدة بيانات علائقية من الشيفرة المصدرية، مما يتيح كشف أنماط ثغرات معقدة عبر استعلامات تصريحية، مصنفًا المشكلات إلى خطأ أو تحذير أو توصية. وبما أن كل أداة تستخدم اصطلاحات تسمية عيوب ومعايير خطورة مستقلة، لزمت عملية تنقيح للتوحيد. فأُعيد تصنيف جميع العيوب المكتشفة إلى فئات بناءً على الخصائص الأمنية، ويعرض الجدول 2 من الورقة الأصلية تعريفات الفئات الأمنية المستخدمة.
في المرحلة الثانية، أُجريت مراجعة يدوية خبيرة للشيفرة لتحديد النقاط الأمنية العمياء في منطق معيار S-100 الخاص التي فشلت أدوات التحليل الساكن في كشفها. وأجرى المراجعة طالب دكتوراه بخبرة 4 سنوات في أبحاث الثغرات، وحاصل على شهادة OSCP، ومشارك في مسابقات CTF منذ عام 2010، مع 3 سنوات في تطوير البرمجيات البحرية و5 سنوات في برمجة Lua للأنظمة المضمنة. وغطى نطاق المراجعة قاعدة شيفرة OpenS100 عند commit رقم f13cd82، بإجمالي 1291 ملف مصدر و101,129 سطر شيفرة (LOC) دون المكتبات الخارجية. ونظرًا لتعذر المراجعة الشاملة، استُخدم الترتيب القائم على المخاطر عبر تحليل سطح الهجوم الذي يركز على مسارات معالجة البيانات غير الموثوقة. وركزت المراجعة على 842 ملفًا تضم 60,680 سطرًا (60% من قاعدة الشيفرة)، مغطية خط معالجة البيانات الحرجة من تحميل ملفات الخرائط عبر تحليل FC وPC إلى العرض النهائي. وشمل النطاق مكتبة GISLibrary (104 ملفات و21,465 سطرًا لتحليل ISO 8211 وHDF5)، ووحدة PortrayalCatalogue (254 ملفًا و11,665 سطرًا لتكامل Lua)، ووحدة FeatureCatalog (135 ملفًا و7351 سطرًا)، ونواة S100Engine (93 ملفًا و5087 سطرًا).
أكدت نتائج التحليل أن أدوات التحليل الساكن تحقق معدلات كشف عالية للأخطاء الواضحة نحويًا لكن فعاليتها محدودة في كشف العيوب التي تتطلب فهم منطق تشغيل البرنامج العام والثغرات القائمة على تدفقات بيانات معقدة تمتد عبر ملفات متعددة. وحددت الأدوات الآلية 1530 موقع عيوب فريدة، بينما اكتشفت المراجعة الخبيرة 23 ثغرة بتداخل ضئيل: تطابق كامل واحد عند مواقع المصدر ذاتها، وثلاثة تطابقات جزئية لعيوب ذات صلة، و19 اكتشافًا خبيرًا حصريًا تمثل غالبية نتائج المراجعة اليدوية. وتتبنى هذه الورقة استراتيجية إفصاح مرحلي متوافقة مع مبادئ الإفصاح المنسق عن الثغرات: فمن بين الثغرات الـ 23 المحددة، تحققت أربع عيوب عالية الأثر وظيفيًا عبر تطوير PoC، بينما حُددت الـ 19 المتبقية عبر تدقيق الشيفرة. وتُحجب طرق الاستغلال التفصيلية لهذه الثغرات لحين المعالجة، موازنةً بين الشفافية الأكاديمية وحماية البنية التحتية البحرية الحرجة للسلامة. ويلخص الجدول 5 من الورقة الأصلية الثغرات من المراجعة الخبيرة، بما في ذلك تصنيف الخطورة وحالة كشف الأدوات الآلية وحالة التحقق بـ PoC.
وكانت ثغرة مفسر Lua غير المقيد غير قابلة للكشف من جميع الأدوات الآلية الأربعة، بينما اكتُشفت ثغرات تجاوز الأعداد الصحيحة (integer overflow) المؤدية لتعطيل الخدمة عبر فساد الكومة (لكن RCE حُظر بواسطة Windows Segment Heap)، وتجاوز المخزن المؤقت المؤدي لتعطيل الخدمة (لكن RCE حُظر بحماية المترجم /RTC)، واقتطاع الأعداد الصحيحة (integer truncation) الذي تحقق على مستوى الشيفرة ويتطلب استغلاله ملفات تتجاوز 4GB. وتُظهر المصفوفة أن الأدوات الآلية تتفوق في عيوب الذاكرة النحوية بينما تعمى تمامًا عن عيوب منطق المجال، مما يثبت أن التغطية الآلية وحدها تعطي إحساسًا زائفًا بالأمان لبرمجيات الملاحة الحرجة.
يقدم هذا الفصل تحليلًا معمقًا للثغرات التي فشلت أدوات التحليل الساكن الآلي في كشفها. وتحقق من أربع ثغرات عالية الأثر وظيفيًا عبر تطوير PoC على المنصة المختبرة: أولًا، ثغرة مفسر Lua غير المقيد التي مكنت من RCE؛ وثانيًا، تجاوز الأعداد الصحيحة في تحليل البيانات الذي حقق تعطيل الخدمة عبر فساد الكومة لكن RCE حُظر بواسطة Windows Segment Heap؛ وثالثًا، تجاوز المخزن المؤقت الذي حقق تعطيل الخدمة لكن RCE حُظر بحماية المترجم /RTC؛ ورابعًا، الاقتطاع الصحيحي الذي تحقق على مستوى الشيفرة ويتطلب استغلاله ملفات تتجاوز 4GB. واختيرت ثغرة مفسر Lua دراسة الحالة الرئيسية لثلاثة أسباب: (1) أنها تُظهر أعلى خطورة (CVSS 9.3 حرجة) مع قدرة RCE على المنصة المختبرة؛ (2) ويبدو أنها تنبع من فجوة على مستوى التصميم في معيار S-100 نفسه وليست خطأ تنفيذيًا؛ و(3) فشلت جميع أدوات التحليل الساكن الأربعة في كشفها. وحُددت الثغرات الـ 19 المتبقية عبر تدقيق صارم للشيفرة وتتبع منطقيًا الأنماط ذاتها حيث تفشل الأدوات الآلية في التقاط متطلبات الأمن الخاصة بالمجال. ووفق مبادئ الإفصاح المرحلي وأخلاقيات أبحاث الأمن، يعرض هذا الفصل فقط المعلومات اللازمة لإثبات وجود الثغرة وأثرها، محجبًا شيفرة الهجوم المحددة أو التفاصيل الدقيقة.
يُلزم معيار S-100 باستخدام لغة البرمجة Lua (الإصدار 5.1) لتنفيذ PC، كما هو محدد في الجزء 9أ (العرض بلغة Lua) والجزء 13 (البرمجة النصية) من المعيار [4،5]. ويتبع نظام OpenS100 (commit رقم f13cd82) هذه المواصفة باستخدام محرك نصوص Lua لمعالجة PCs. وتتكون PCs من مجموعات نصوص Lua التي تحدد قواعد تصور الخرائط الإلكترونية، محددةً كيفية عرض كل سمة (Feature) في بيانات الخرائط على الشاشات. وأكدت المراجعة الخبيرة أن بيئة تنفيذ نصوص Lua هذه هُيئت دون عزل أمني مناسب. ويكمن جوهر الثغرة في عملية تهيئة مفسر Lua داخل محرك عرض OpenS100: فعند تهيئة حالة تنفيذ Lua، يحمّل النظام جميع مكتبات Lua القياسية دون عزل أو قيود قدرات. ويعرض الإدراج 1 من الورقة الأصلية تسلسل التهيئة الضعيف في تنفيذ محرك عرض OpenS100: lua_State *L = luaL_newstate(); luaL_openlibs(L); // تحميل جميع المكتبات القياسية. وتحمّل تهيئة المفسر دون شرط جميع مكتبات Lua القياسية، بما في ذلك وحدات os وio وdebug وpackage، مما يكشف قدرات خطرة على مستوى النظام لأي نص PC يُحمّل لاحقًا.
يمكن تنفيذ طريقة الهجوم هذه عبر مسارين. يتضمن المسار الأول توزيع PC خبيثة: إذ ينسخ المهاجمون PCs مشروعة ويدسون شيفرة خبيثة في ملفات نصوص Lua، وعند توزيعها متنكرة كتحسينات عرض أو مزايا إضافية، تُنفذ الشيفرة الخبيثة لحظة اختيار المستخدمين للكتالوج وقراءة بيانات الخرائط في إعدادات OpenS100. وبما أن معيار S-100 لا يوفر آلية توقيع رقمي أو تحقق إلزامية لـ PCs، قد تكون لدى المستخدمين وسائل محدودة للتحقق من مصدر الكتالوج وسلامته. أما المسار الثاني فهو هجوم سلسلة التوريد: إذ توفر IHO أو المكاتب الهيدروغرافية الوطنية PCs الرسمية لـ S-100، فإذا اختُرقت أنظمة هذه المنظمات أو تُلاعب بها من الداخل فقد يتأثر عدد كبير من المستخدمين. ونظرًا لخصائص الشحن والبنية التحتية للموانئ حيث تُستخدم الكتالوجات المتطابقة عالميًا على نطاق واسع، قد يؤثر هجوم سلسلة التوريد على منشآت ECDIS متعددة. وعلى عكس الهجمات القائمة على ثغرات الذاكرة، تستغل هذه الثغرة وظيفة المفسر المشروعة عبر التهيئة غير المقيدة، مما يجعل آليات أمن نظام التشغيل مثل التوزيع العشوائي لعناوين مساحة العناوين (ASLR) ومنع تنفيذ البيانات (DEP) والتحكم في تدفق الحماية (CFG) أقل فعالية، إذ تُنفذ مفسرات Lua كمكونات برنامج عادية.
كُتب PoC مصغر ونُفذ للتحقق من الأثر الفعلي للثغرة. ووفق مبادئ الإفصاح المسؤول عن الثغرات، حُجبت تفاصيل التنفيذ من هذه الورقة، وأُجريت التجارب فقط بالمستوى الذي يُظهر وجود الثغرة وأثرها. وبُني PoC بإضافة نص اختبار إلى PC مشروعة لمنتج S-101 للخرائط الملاحية الإلكترونية. وكُتب نص الاختبار لتنفيذ برامج غير مؤذية مثل الآلة الحاسبة والمفكرة دون إلحاق ضرر بالنظام، مؤكدًا قدرة تنفيذ البرامج الخارجية. وتضمن إجراء الهجوم خطوتين: أولًا، اختيار PC الخبيثة في إعدادات OpenS100؛ وثانيًا، فتح ملف خرائط S-101 مشروع. وأظهرت النتائج التجريبية أن البرامج المحددة نُفذت فور فتح ملف الخرائط على Windows 11، مثبتةً قدرة RCE حيث يمكن لـ PCs الخبيثة الموزعة عبر القنوات الرسمية أو اختراق سلسلة التوريد تحقيق تنفيذ الشيفرة على الأنظمة المستهدفة. ويوضح الشكل 5 من الورقة الأصلية تنفيذ الهجوم على تهيئة Windows 11 المختبرة: فعند تحميل ملف خرائط S-101 بعد اختيار الكتالوج المخترق، ينفذ نص Lua المضمن أوامر نظام التشغيل، مشغلًا تطبيق الآلة الحاسبة كما حدد المهاجم. والأهم أن بيانات الخرائط تُعرض بشكل طبيعي أثناء تنفيذ الهجوم كما أثبت PoC، فلا يلاحظ الملاحون أي مؤشر على اختراق المعلومات المعروضة.
قد تكون لهذه الثغرة آثار جسيمة بالنظر إلى خصائص ECDIS المستخدمة في صناعة الشحن. فأجهزة ECDIS أنظمة أساسية لسلامة الملاحة للسفن، وهي إلزامية بموجب اتفاقية سلامة الأرواح في البحر (SOLAS) [35]. وإذا سيطر المهاجمون على ECDIS فقد تتأثر سلامة الملاحة: إذ يمكن التلاعب بمعلومات الخرائط لعرض بيانات غير صحيحة، أو إخفاء معلومات الأخطار، مما قد يؤدي إلى حوادث ملاحية. وبما أن عرض الخرائط يستمر بشكل طبيعي أثناء تنفيذ الهجوم كما أثبت PoC، قد تكون لدى الملاحين مؤشرات محدودة على اختراق المعلومات المعروضة، فيواصلون اتخاذ قرارات ملاحية بناءً على بيانات مُتلاعب بها. وتميز هذه الخاصية الخفية الثغرة عن الهجمات السيبرانية التقليدية التي تولد عادة شذوذًا مرئيًا في النظام. كما تستحق اعتبارات تسرب المعلومات الانتباه: فمعلومات تشغيلية حساسة مثل بيانات مواقع السفن ومساراتها وبيانات الشحن يمكن تسريبها، واستغلالها لأغراض تشمل الاستخبارات التنافسية أو تتبع حركات شحن محددة. وبالنسبة للسفن ذات الأغراض العسكرية أو السفن التي تحمل مواد استراتيجية، تنطبق اعتبارات أمنية إضافية.
للتحقق من جدوى تخفيف الثغرة المحددة، نُفذت تهيئة مفسر Lua آمنة وتحقق منها. وتستخدم الرقعة المطبقة نهج الإزالة بعد التهيئة للحفاظ على التوافق مع تطبيقات PC القائمة مع معالجة الثغرة الأمنية. ويعرض الإدراج 2 من الورقة الأصلية التهيئة الآمنة التي تعطل مكتبات Lua الخطرة بعد التهيئة: luaL_newstate()؛ luaL_openlibs()؛ ثم // [رقعة أمنية] تعطيل المكتبات الخطرة عبر luaL_dostring بضبط os=nil وio=nil وdebug=nil وpackage.loadlib=nil وpackage.cpath='' وloadfile=nil وdofile=nil وload=nil وrawset=nil وloadstring=nil. وتحظر الرقعة تنفيذ أوامر نظام التشغيل، والوصول لنظام الملفات، وقدرات التنقيح، وتحميل المكتبات الأصلية، وتقييم الشيفرة الديناميكي. ويلخص الجدول 8 من الورقة الأصلية القدرات المحظورة والمخاطر المعالجة: فهدف os (execute وexit وremove وrename) محظور، وio (open وpopen وread وwrite) محظور، وdebug (قدرات تجاوز العزل) محظور، وpackage.loadlib (تحميل DLL الأصلية) محظور.
توقيت إزالة المكتبات حاسم للأمان. ومن الشواغل المحتملة للمراجعين محاولات تجاوز rawget() حيث قد تحاول النصوص الخبيثة الوصول إلى المكتبات المزالة عبر عمليات الجداول منخفضة المستوى. ويمنع تصميم الرقعة متجه الهجوم هذا عبر ترتيب تنفيذ صارم: إذ تتبع تهيئة مفسر Lua تسلسلًا حتميًا: (1) يُنشئ luaL_newstate() حالة Lua، (2) يحمّل luaL_openlibs() جميع المكتبات القياسية بما فيها os وio وdebug، (3) ينفذ luaL_dostring() رقعة الأمن مضبطًا مراجع المكتبات إلى nil، و(4) تُحمّل نصوص PC الخارجية عبر load_file(). وبما أن الرقعة تُنفذ قبل تحميل أي نص خارجي، تكون مراجع المكتبات قد أُزيلت من الجدول العام (_G) عندما تحاول النصوص الخبيثة الوصول إليها. وبالتالي تعيد محاولات التجاوز مثل rawget(_G, "os") قيمة nil لأن المرجع أُزيل في الخطوة (3) قبل تنفيذ النص في الخطوة (4). ويجعل ضمان الترتيب هذا الرقعة مقاومة لتقنيات تجاوز rawget/rawset، وتلاعب setfenv/getfenv بالبيئة، واعتراض __index عبر الميتاتيبل.
أكد التحقق التجريبي التخفيف الكامل لـ RCE مع الحفاظ على توافق PC. ويلخص الجدول 9 من الورقة الأصلية نتائج اختبار التحقق من الرقعة: استدعاء os.execute() المباشر يعيد nil دون تنفيذ (ناجح)؛ وتجاوز rawget(_G, "os") يعيد nil ويفشل التجاوز (ناجح)؛ وتحميل PC خبيثة يُحظر فيه RCE مع عرض الخرائط (ناجح)؛ وتحميل PC عادية ينجح عرض الخرائط (ناجح)؛ ومعالجة السمات تنفذ قواعد التصور (ناجح)؛ واستقرار النظام دون أعطال أو أخطاء (ناجح). وتحافظ الرقعة على قدرات Lua الأساسية التي تتطلبها PCs الخاصة بـ S-101، بما في ذلك require لتحميل الوحدات، وrawget للوصول الآمن للجداول عبر الميتاتيبل داخل __index metamethods، والمكتبات القياسية (math وstring وtable وpairs/ipairs) لحسابات قواعد العرض. وحُظرت الدالة rawset استباقيًا كتدبير دفاعي معمق: إذ أكد التحليل الساكن لمرجع S-101 PC عدم وجود أي استدعاء rawset عبر جميع ملفات Lua الـ 256، بينما تمثل قدرتها على تجاوز __index metamethods متجه تجاوز محتمل للعزل. ويحقق نهج الحظر الانتقائي هذا تصليبًا أمنيًا دون كسر وظائف PC المشروعة، وتُدخل رقعة إزالة المكتبات حملًا أدائيًا ضئيلًا عبر استدعاء luaL_dostring() واحد.
من الشواغل المحتملة تعارض تعطيل مكتبات Lua القياسية مع القابلية للتوسع التي يقصدها معيار S-100. ويُظهر تحليل الجزء 9أ أن هذا التعارض لا ينشأ في البنية الحالية: إذ يحدد نموذج عرض الجزء 9أ بيئة تنفيذ مغلقة الحلقة حيث يتم كل تبادل بيانات بين نصوص Lua والنظام المضيف حصريًا عبر دوال رد النداء للمضيف (host callbacks). وتُمرر بيانات السمات ومعلومات الارتباط عبر رد نداء المضيف، وتُعاد تعليمات الرسم إلى المضيف عبر HostPortrayalEmit [4]. وينص القسم 9أ-7 صراحة على أن العرض لا يستخدم مخطط إدخال بيانات، مع تمرير كل البيانات عبر واجهة المضيف في الجزء 13. وتعني هذه البنية أن نصوص Lua لا تحتاج مشروعيًا إلى الوصول المباشر لنظام الملفات (io)، أو تنفيذ أوامر نظام التشغيل (os)، أو الاستبطان أثناء التشغيل (debug)، أو تحميل المكتبات الأصلية الديناميكي (package.loadlib). فالمكتبات المعطلة تقع بالكامل خارج النطاق الوظيفي المحدد في الجزء 9أ. ويؤكد التحليل التجريبي هذه البنية: إذ اختُبرت الرقعة المقترحة مقابل مرجع S-101 PC الموزع مع OpenS100، والذي يضم 256 ملفًا و15,112 سطرًا من شيفرة Lua، ونُفذت جميع وظائف العرض بنجاح مع تعطيل المكتبات الخطرة.
يتناول هذا القسم القيود المنهجية ويحدد اتجاهات البحث المستقبلية لأمن البرمجيات البحرية.
حللت هذه الورقة تطبيقًا مرجعيًا واحدًا، OpenS100 عند commit رقم f13cd82، بدلًا من أنظمة ECDIS تجارية متعددة. وينبع هذا القيد من: (1) الطبيعة الاحتكارية لبرمجيات ECDIS التجارية التي تحد من الوصول للشيفرة المصدرية، (2) قيود الموارد التي تمنع شراء أنظمة مرخصة متعددة وتحليلها، (3) القيود التنظيمية على الهندسة العكسية للمعدات البحرية الحرجة للسلامة. وعلى الرغم من عدم إجراء تجارب مباشرة على منصات ECDIS تجارية بسبب قيود الترخيص الأمني والملكية الفكرية، فإن حجة التعميم تستند إلى الوضع الرسمي لـ OpenS100 ضمن بنية IHO التحتية لـ S-100: فهو مدرج كمكون بنية تحتية مؤقت رسمي لـ S-100 في وثيقة IHO رقم HSSC16-04.5A الملحق 2، واعترفت به مجموعة عمل S-100 «كمكون رئيسي في التحقق من التطبيق العملي لمعايير S-100» في اجتماع S-100WG10 في سبتمبر 2025 [36]. ويصون المشروع مكتب KHOA تحت إشراف IHO ويستخدم مرجع LuaScriptingReference الرسمي لـ IHO لتنفيذ كتالوج العرض. وتشير forks المستودع الـ 18 على GitHub إلى استخدامه الواسع كأساس للأنظمة المشتقة. وبما أن الثغرات المحددة تنبع من فجوات معمارية في مواصفات المعيار وليست أخطاء تنفيذية، فإن أي تطبيق متوافق مع المعايير سيحمل الثغرة ذاتها على الأرجح.
كشف تنفيذ رقعة التخفيف لثغرة مفسر Lua غير المقيد عن فجوة أمنية على مستوى المعايير غير موثقة تجاوزت النطاق الأصلي للدراسة، مما يوضح كيف يمكن لجهود التنفيذ الأمني أن تكشف قضايا مواصفات غير موثقة تتطلب تدخل هيئات المعايير. وحدد التحليل الساكن لمرجع S-101 PC الموزع مع OpenS100 عدد 13 استدعاء rawget() عبر 6 ملفات مصدرية بنمطي استخدام متميزين: إذ كشف التحليل أن 11 من 13 استخدامًا (85%) للراحة وليست ضرورة تقنية، بينما استخدامان (15%) إلزاميان بنيويًا ضمن تنفيذ __index metamethod. وينفذ مرجع S-101 PC الوراثة الكائنية عبر آلية الميتاتيبل في Lua: فداخل __index metamethods، يؤدي الوصول القياسي للجداول إلى استدعاء لا نهائي لأن الوصول لمفتاح غير موجود يطلق الدالة ذاتها، بينما تتجاوز الدالة rawget() استدعاء الميتاميثود، مما يتيح الوصول المباشر لتخزين الجداول دون استدعاء. ويمثل ذلك متطلبًا بنيويًا لنظام الميتاميثود في Lua وليس خيارًا تنفيذيًا. ويكشف تحليل الجزءين 9أ (العرض) و13 (البرمجة النصية) من S-100 الإصدار 5.2.0 — المواصفة المرجعية لمعايير البيانات الجغرافية المكانية البحرية — عن غياب كبير: فلا يحدد أي جزء واجهات Lua المسموح بها أو المحظورة، مما يترك قرارات العزل الحرجة لكل منفذ على حدة.
لنتائج هذه الدراسة مسارات عملية للوصول إلى المنظمات الدولية المسؤولة عن معايير الخرائط الإلكترونية وECDIS. فقد أُسندت للثغرة المحددة معرف الثغرات والتعرضات المشتركة (CVE) عبر برنامج MITRE/CVE، مما أنشأ سجلًا عامًا دائمًا يمكن الوصول إليه لمصنعي ECDIS وهيئات التصنيف والهيئات التنظيمية البحرية عالميًا. ويضمن تسجيل CVE فهرسة الثغرة في قاعدة البيانات الوطنية للثغرات (NVD) ودمجها في سير عمل إدارة الثغرات التجارية التي يستخدمها بائعو المعدات. ووفق مبادئ الإفصاح المنسق عن الثغرات، التقى المؤلفون بالمساهم الرئيسي في مشروع OpenS100 لعرض نتائج الأبحاث والثغرة المحددة، واتفقوا على دمج رقعة الأمن في المستودع الرسمي. ومن المقرر دمج الرقعة في المستودع الرئيسي بعد قبول هذه الورقة وقبل النشر، مما يضمن توفر المعالجة لجميع التطبيقات التابعة قبل الكشف العام عن طرق الاستغلال التفصيلية. ويوازن هذا النهج المنسق بين الشفافية الأكاديمية والحماية المسؤولة للأنظمة البحرية التشغيلية. وتجاوز الكشف العام وتنسيق المطورين، توصي الدراسة بأن تُلزم IHO في مراجعات المعيار المستقبلية: (1) العزل على مستوى العمليات عبر آليات نظام التشغيل، (2) التوقيعات الرقمية الإلزامية والتحقق لـ PCs وFCs بخلاف بيانات الخرائط وحدها، (3) بنية دفاع معمق تضمن طبقات أمنية مستقلة متعددة.
يُوصى باتجاهات البحث التالية: (1) التحقق عبر ECDIS متعددة البائعين: إذ يتطلب التقييم الشامل للنظام البيئي تحليل تطبيقات ECDIS تجارية من بائعين متعددين لتحديد ما إذا كانت الثغرات المحددة تمثل أنماطًا نظامية أم حالات معزولة، وهذا يتطلب تعاون الصناعة ودعمًا تنظيميًا للتغلب على قيود الوصول للشيفرة الاحتكارية، على غرار متطلبات IACS الموحدة E26 وE27 للأمن السيبراني البحري الصادرة في 2022 [37،38]. (2) خط تحقق PC: تطوير بنية تحتية آلية للتحقق الأمني لتوزيع PC عبر قنوات IHO، تشمل تحليلًا ساكنًا يكشف استخدامات API المحظورة، وتنفيذًا معزولًا ديناميكيًا لتحليل السلوك، وتوقيعًا تشفيريًا للتوزيع الموثوق، ومراقبة مستمرة للإفصاح عن الثغرات بعد التوزيع. (3) أدوات أمنية خاصة بالمجال البحري: تطوير أدوات تحليل ساكن واعية بالمجال تدمج نماذج ثقة S-100 ومتطلبات السلامة الوظيفية البحرية؛ فعلى الرغم من أن أدوات عامة مثل CodeQL توفر قدرات تقنية قوية، إلا أنها تفتقر إلى المعرفة البحرية بالمجال اللازمة لكشف ثغرات على مستوى التصميم مثل ثغرة مفسر Lua غير المقيد. (4) شهادة أمن S-100: تكميل شهادات السلامة الوظيفية الحالية بمعايير أمنية تتناول مخاطر التصميم قبل إلزامية 2029.
قيّمت هذه الورقة قدرات كشف الثغرات لأدوات التحليل الساكن الآلي مقابل المراجعة اليدوية الخبيرة مستهدفةً تطبيق OpenS100. وعلى الرغم من أن الأدوات الآلية حددت عيوبًا نحوية عديدة، إلا أنها فشلت في كشف غالبية الثغرات المحددة خبيريًا، بما في ذلك ثغرة مفسر Lua غير المقيد المُتحقق منها بـ PoC والتي تمكّن من RCE على المنصة المختبرة. وتشير هذه النتائج إلى أن أطر شهادات السلامة الوظيفية الحالية تحتاج إلى تكميل لمعالجة مخاطر الأمن السيبراني على مستوى التصميم النابعة من فجوات بنيوية في مواصفات معيار S-100. وبناءً على ذلك، تدعم الأدلة التجريبية ضرورة أن تُلزم IHO بضوابط الأمن التالية في مراجعات المعيار المستقبلية: (1) العزل على مستوى العمليات عبر آليات نظام التشغيل، (2) التوقيعات الرقمية والتحقق الإلزامي لـ PCs وFCs بخلاف بيانات الخرائط وحدها، (3) بنية دفاع معمق تضمن طبقات أمنية مستقلة متعددة. وتتوافق هذه التوصيات مع مبادئ الأمن الراسخة في المجالات الحرجة للسلامة مثل الطيران والسيارات.
ومع تسارع التحول الرقمي البحري، يجب دمج الأمن منذ مرحلة التصميم. وتؤكد هذه الورقة أن الجمع بين الكفاءة الآلية والخبرة الخاصة بالمجال ضروري: فالأدوات الآلية توفر تغطية واسعة للعيوب النحوية، بينما تكشف الخبرة البشرية الخاصة بالمجال عيوب التصميم التي تفوتها الأدوات. وتُظهر دراسة الحالة أن ثغرة واحدة على مستوى المواصفات يمكن أن تعرض أسطول ECDIS العالمي بأكمله للخطر، مما يجعل التدخل على مستوى المعايير — وليس فقط إصلاح التطبيقات الفردية — ضروريًا قبل الموعد الإلزامي لاعتماد S-100 في عام 2029.
وأخيرًا، يفتح هذا العمل عدة اتجاهات: التحقق عبر بائعين متعددين، وخطوط تحقق آلية لكتالوجات العرض، وأدوات SAST واعية بالمجال البحري، وإطار شهادة أمنية لـ S-100. وتُعد مجموعة البيانات (1530 موقع عيوب و23 ثغرة خبيرة) ومواد PoC المحجوبة أصولًا قيمة لأبحاث لاحقة تحت مظلة الإفصاح المسؤول.
قائمة المراجع الكاملة (38 مصدرًا) متاحة في الملف الأصلي للPDF.
The S-100 standard for Electronic Chart Display and Information Systems (ECDIS) uses Lua scripts to render electronic charts, yet lacks security specifications for script execution. This paper evaluates automated Static Application Security Testing (SAST) tools versus expert manual review for S-100-compliant software. Four SAST tools were applied alongside an expert review of OpenS100, a reference implementation for next-generation ECDIS. While automated tools identified numerous defects, they failed to detect 83% (19/23) of expert-identified vulnerabilities, including an unrestricted Lua interpreter flaw with a Common Vulnerability Scoring System (CVSS) score of 9.3. This vulnerability enables Remote Code Execution (RCE) via malicious portrayal catalogues, verified through Proof of Concept (PoC) development. The analysis demonstrates that SAST tools are constrained by limited maritime domain knowledge and challenges in analyzing cross-language semantic risks at the C++–Lua interface. The findings establish that identified vulnerabilities stem from specification gaps in the S-100 standard rather than isolated coding errors. These results indicate that functional safety certifications require supplementation to address design-level security risks. The evidence supports that the International Hydrographic Organization (IHO) incorporate security controls, such as script sandboxing and library restrictions, into the S-100 framework before the 2029 mandatory adoption deadline.
Maritime navigation has evolved from paper nautical charts to Electronic Navigational Charts (ENC), with the International Hydrographic Organization (IHO) introducing the S-100 standard to replace the legacy S-57 format [1]. The S-100 standard separates data from visualization through a portrayal engine that interprets Lua scripts to render Electronic Chart Display and Information Systems (ECDIS). While S-100 includes cryptographic mechanisms such as IEC 63173-2 SECOM (Secure Communication Between Ship and Shore) along with Part 15 digital signatures ensuring chart data originate from authorized hydrographic offices, cryptographic integrity guarantees source authenticity but does not guarantee script safety [2,3]. Malicious portrayal scripts from compromised sources could manipulate chart rendering, leading to navigation hazards or operational disruptions. Modern operating system protections such as Data Execution Prevention (DEP) defend software that interprets scripts for standard compliance. Commercial security analysis tools effectively detect common software defects, such as buffer overflows, but face limitations when different programming languages interact. The S-100 portrayal engine exemplifies this challenge, as navigation-critical logic flows between C++ chart parsing and Lua execution.
To measure this gap, this study directly compares automated SAST tools against expert manual review on the OpenS100 reference implementation. Contributions are: (1) the first dual-methodology empirical evaluation on S-100 software; (2) identification of a CVSS 9.3 critical flaw enabling RCE via portrayal catalogues, with verified PoC; (3) proof that vulnerabilities stem from standard specification gaps rather than coding errors; (4) a validated mitigation patch preserving functional compatibility; and (5) standardization recommendations for the IHO ahead of the 2029 mandatory adoption. The remainder is organized as follows: Section 2 reviews background and related work, Section 3 describes the three-phase methodology, Section 4 presents findings, Section 5 analyzes the critical-flaw case study, Section 6 discusses limitations and standardization, and Section 7 concludes with recommendations.
The IHO S-100 Universal Hydrographic Data Model provides the technical foundation for next-generation ECDIS. S-100 was developed to overcome the rigid data structure and maintenance limitations of the legacy S-57 standard and is designed to align with the ISO 19100 series of geographic information standards [1]. The standard extends beyond defining encoding formats by providing a flexible framework for developing various marine-related data product specifications based on object-oriented modeling using the Unified Modeling Language. From a technical perspective, a key architectural change in S-100 is the separation of data features from portrayal visualization logic. Unlike legacy systems that relied on static symbol tables and hardcoded visualization rules, S-100 defines a portrayal mechanism in Part 9 (Portrayal), Part 9a (Portrayal-Lua), and Part 13 (Scripting). Specifically, S-100 Edition 5.2.0 Part 9a Section 9a-4.1 mandates: "Lua version 5.1 shall be used for implementing portrayal functions" [4]. Additionally, Part 13 Section 13-7.1 specifies the Lua version requirements [5]. PCs consist of XML files containing rendering rules and Lua scripts for their execution, which systems dynamically load at runtime to render maritime objects on displays.
Diagnostic techniques for identifying and managing security defects in software are broadly categorized into static analysis and dynamic analysis. Static analysis examines program syntax and control flow without executing source code to identify potential weaknesses, enabling comprehensive examination of entire codebases but carrying the possibility of false positives. In contrast, dynamic analysis monitors memory corruption and exception occurrences in real time while executing programs, accurately capturing threats during actual operation but unable to diagnose unexecuted code regions. Weaknesses are classified according to the Common Weakness Enumeration (CWE) framework [6], which catalogs commonly occurring security weaknesses in software architecture, design, and code, defining types such as Buffer Overflow (CWE-120) and Code Injection (CWE-94). When security weaknesses develop into concrete attacker-exploitable defects they are termed vulnerabilities, assessed for severity using CVSS version 3.1 [7]. CVSS provides quantitative metrics from 0.0 to 10.0, evaluating vulnerabilities on eight Base metrics including Attack Vector, Attack Complexity, Privileges Required, User Interaction, Scope, and confidentiality, integrity, and availability impacts.
Maritime cybersecurity research has grown substantially following the IMO MSC.428(98) resolution mandating cyber risk management in 2021 [8]. Li et al. conducted a comprehensive review of maritime cyber attacks [9], presenting a multi-dimensional taxonomy covering ECDIS, AIS, GNSS, VDR, and GMDSS, identifying third-party components and outdated operating systems as primary ECDIS vulnerabilities. However, their taxonomy focuses on network-level attacks and does not address vulnerabilities in navigation data standards requiring dynamic script execution. Longo et al. analyzed attack scenarios for manipulating maritime radar images through the ASTERIX protocol, demonstrating network vulnerabilities [10]. Empirical vulnerability research on operational ECDISs documented consistent security deficiencies across manufacturers: Svilicic et al. found Windows 7 systems with vulnerable SMBv1 protocols still active in 2024 [11], and Jo et al. analyzed JAN-901B and TransNav units finding similar patterns of unpatched systems and exposed services [12]. None of these studies, however, addresses script execution security in the portrayal layer.
Table 1 of the original paper summarizes reviewed studies across three research categories, highlighting the systematic absence of work at the intersection of maritime navigation standards, embedded scripting security, and domain-specific vulnerability detection: ECDIS security (network-level only, no data standard security), S-100 standard security (limited coverage despite 2029 mandate), Lua sandbox security (no maritime application), safety-critical systems (no embedded scripting frameworks), SAST limitations (47–80% miss rates for general vulnerabilities), and LLM-assisted SAST (general code, no maritime application). The literature review reveals three research gaps: first, S-100 security research is limited despite voluntary adoption beginning January 2026 and mandatory new installations from January 2029; second, no study compares SAST tools against expert review on S-100 software; third, security implications of unrestricted Lua execution in portrayal engines are unanalyzed. This study closes these gaps through dual evaluation on OpenS100, identification of a verified critical flaw, and a patch plus standardization recommendations.
This paper conducts a three-phase analysis procedure to verify the detection effectiveness of security analysis tools targeting OpenS100, an S-100 standard implementation, and to identify security blind spots arising from domain-specific logic. Figure 2 of the original paper illustrates the experimental workflow comprising three sequential phases. Phase 1 establishes the analysis target and build environment. Phase 2 executes the automated static analysis pipeline where four tools generate raw issues that undergo CWE classification and deduplication to produce a refined defect dataset. Phase 3 conducts expert manual code review through attack surface identification, risk-based code audit, and security assessment of discovered vulnerabilities.
OpenS100, an open-source project developed based on the S-100 viewer of the Korea Hydrographic and Oceanographic Agency (KHOA) under the Ministry of Oceans and Fisheries (MOF), was selected as the analysis target [33]. OpenS100 serves as a reference implementation similar to other maritime security research testbeds such as MaCySTe, which provides a containerized environment for maritime IT/OT system experimentation [34]. Unlike general-purpose testbeds, however, OpenS100 specifically implements S-100 standard compliance, with the project repository showing 18 forks indicating its use as a foundation for derivative implementations. This widespread adoption pattern means vulnerabilities identified in OpenS100 are likely to propagate to dependent systems unless developers independently implement security controls not specified in the S-100 standard. OpenS100 is a C++-based reference implementation designed to accommodate various S-100 product specifications including S-101, the next-generation electronic navigational chart standard, as well as S-102 and S-124. The system strictly follows S-100 Part 9a Portrayal with Lua and Part 13 Scripting specifications for PC implementation.
In the first-phase diagnosis, an automated pipeline integrating multiple static analysis tools was established to identify security weaknesses throughout the source code. The tools employed are: FlawFinder, detecting security-vulnerable function calls in C/C++ source code that can cause buffer overflows or enable command injection on a risk scale of 1 to 5; CppCheck, detecting a broad range of programming errors including memory leaks, null pointer dereferences, and uninitialized variable usage, classifying them by severity as Error, Warning, or Style; Microsoft Visual C++ Code Analysis, a static analysis engine embedded in Visual Studio detecting buffer overruns, type mismatches, and uninitialized memory access; and GitHub CodeQL, employing query-based semantic analysis constructing a relational database from source code, enabling detection of complex vulnerability patterns through declarative queries, classifying issues as Error, Warning, or Recommendation. Since each tool uses independent defect naming conventions and severity criteria, a refinement process was necessary for standardization. All detected defects were reclassified into categories based on security characteristics, with Table 2 of the original paper presenting the security category definitions used.
In the second phase, expert manual code review was conducted to identify security blind spots in S-100 standard-specific logic that static analysis tools failed to detect. The review was performed by a PhD student with 4 years of vulnerability research experience, Offensive Security Certified Professional (OSCP) certification, and Capture The Flag (CTF) competition participation since 2010, combined with 3 years of maritime software development and 5 years of Lua programming in embedded systems. The review scope encompassed the OpenS100 codebase at commit f13cd82, totaling 1291 source files with 101,129 lines of code (LOC) excluding external libraries. Given the infeasibility of exhaustive review, risk-based prioritization was employed through attack surface analysis focusing on untrusted data processing paths. The review concentrated on 842 files comprising 60,680 LOC (60% of the codebase), covering the critical data processing pipeline from chart file loading through FC and PC parsing to final rendering. This scope included GISLibrary (104 files, 21,465 LOC for ISO 8211 and HDF5 parsing), the PortrayalCatalogue module (254 files, 11,665 LOC for Lua integration), the FeatureCatalog module (135 files, 7351 LOC), and the S100Engine core (93 files, 5087 LOC).
Analysis results confirmed that static analysis tools demonstrate high detection rates for syntactically clear errors but show limited effectiveness in detecting defects requiring understanding of overall program operational logic and vulnerabilities based on complex data flows spanning multiple files. Automated tools identified 1530 unique defect locations, while expert review discovered 23 vulnerabilities with minimal overlap: one complete match at identical source locations, three partial matches for related defects, and 19 expert-only findings representing the majority of manual review results. This paper employs a staged disclosure strategy aligned with coordinated vulnerability disclosure principles: among the 23 identified vulnerabilities, four high-impact flaws were verified through functional PoC development, while the remaining 19 were identified through code audit. Detailed exploitation methods for these vulnerabilities are withheld pending remediation, balancing academic transparency with protection of safety-critical maritime infrastructure. Table 5 of the original paper summarizes the expert-review vulnerability summary, including severity classification, automated tool detection status, and PoC verification status.
The Unrestricted Lua Interpreter vulnerability was undetectable by all four automated tools, while integer overflow flaws achieving denial of service via heap corruption (RCE blocked by Windows Segment Heap), buffer overflow achieving denial of service (RCE blocked by /RTC compiler protection), and integer truncation verified at code level requiring files exceeding 4 GB for exploitation were likewise expert-only. The matrix shows automated tools excel at syntactic memory defects yet are entirely blind to domain-logic flaws, proving that automated coverage alone gives a false sense of security for safety-critical navigation software.
This chapter provides in-depth analysis of vulnerabilities that automated static analysis tools failed to detect. Four high-impact vulnerabilities were verified through functional PoC development on the tested platform: first, the Unrestricted Lua Interpreter flaw enabling RCE; second, integer overflow in data parsing achieving DoS via heap corruption though RCE was blocked by Windows Segment Heap; third, buffer overflow achieving DoS though RCE was blocked by /RTC compiler protection; and fourth, integer truncation verified at code level whose exploitation requires files exceeding 4 GB. The Lua interpreter vulnerability was selected as the primary case study for three reasons: (1) it demonstrates the highest severity (CVSS 9.3 Critical) with RCE capability on the tested platform; (2) it appears to originate from a design-level gap in the S-100 standard itself rather than implementation error; and (3) all four automated static analysis tools failed to detect it. The remaining 19 vulnerabilities were identified through rigorous code audit and follow logically similar patterns where automated tools fail to capture domain-specific security requirements. Following staged disclosure principles and security research ethics, this chapter presents only the information necessary to demonstrate the vulnerability's existence and impact, omitting specific attack code or details.
The S-100 standard mandates the use of the Lua programming language (version 5.1) for PC implementation, as specified in Part 9a (Portrayal-Lua) and Part 13 (Scripting) [4,5]. The OpenS100 system (commit f13cd82) follows this specification by employing a Lua script engine to process PCs. PCs consist of Lua script collections defining electronic chart visualization rules, determining how each Feature in chart data is rendered on displays. Expert review confirmed that this Lua script execution environment was configured without appropriate security isolation. The core of the vulnerability lies in the Lua interpreter initialization process within the OpenS100 portrayal engine. When initializing the Lua execution state, the system unconditionally loads all standard Lua libraries without sandboxing or capability restrictions. Listing 1 of the original paper shows the vulnerable initialization sequence in the OpenS100 portrayal engine implementation: lua_State *L = luaL_newstate(); luaL_openlibs(L); // Loads ALL standard libraries. The interpreter initialization unconditionally loads all standard Lua libraries, including os, io, debug, and package modules, exposing dangerous system-level capabilities to any subsequently loaded PC script.
This attack method can be executed through two pathways. The first pathway involves malicious PC distribution. Attackers copy legitimate PCs and insert malicious code into Lua script files. When distributed disguised as improved rendering or additional features, malicious code executes the moment users select the Catalogue and read the chart data in OpenS100 settings. Since the S-100 standard provides no mandatory digital signature or verification mechanism for PCs, users may have limited means to verify Catalogue origin and integrity. The second pathway is supply chain attack. Official S-100 PCs are provided by IHO or national hydrographic offices. If such organization systems are compromised or manipulated by insiders, large numbers of users could be affected. Given shipping and port infrastructure characteristics where identical Catalogues are widely used globally, a supply chain attack could impact multiple ECDIS installations. In contrast to memory vulnerability-based attacks, this vulnerability exploits legitimate interpreter functionality through the unrestricted configuration, rendering operating system security mechanisms such as Address Space Layout Randomization (ASLR), DEP, and Control Flow Guard (CFG) less effective, since Lua interpreters execute as normal program components.
A minimal PoC was written and executed to verify the vulnerability's actual impact. Following responsible disclosure principles, implementation details are omitted from this paper, with experiments conducted only to the level demonstrating vulnerability existence and impact. The PoC was constructed by adding a test script to a legitimate S-101 Electronic Navigational Chart product PC. The test script was written to execute harmless programs such as calculator and notepad causing no system harm, confirming external program execution capability. The attack procedure involved two steps: first, the malicious PC was selected in OpenS100 settings; second, a legitimate S-101 chart file was opened. Experimental results showed that the specified programs executed immediately upon opening the chart file on Windows 11, demonstrating RCE capability where malicious PCs distributed through official channels or supply chain compromise achieve code execution on target systems. Figure 5 of the original paper illustrates the attack execution on the tested Windows 11 configuration: upon loading the S-101 chart file after selecting the compromised Catalogue, the embedded Lua script executes operating system commands, launching the calculator application as specified by the attacker. Critically, chart data renders normally during attack execution as demonstrated by the PoC, so navigators notice no indication of compromised displayed information.
This vulnerability may have substantial impacts given the characteristics of ECDISs used in the shipping industry. ECDIS are core systems for vessel navigation safety, mandatory under the Safety of Life at Sea (SOLAS) convention [35]. If attackers gain control of ECDISs, navigation safety could be affected: chart information could be manipulated to display incorrect data, or hazard information hidden, potentially leading to navigation incidents. Since chart rendering proceeds normally during attack execution as demonstrated in the PoC, navigators may have limited indication that displayed information has been compromised, continuing to make navigation decisions based on altered data. This stealth characteristic distinguishes the vulnerability from traditional cyber attacks that typically generate observable system anomalies. Information leakage implications also warrant consideration: sensitive operational information such as vessel position data, route data, and cargo information could be exfiltrated for purposes including competitive intelligence or tracking specific cargo movements. For military-purpose vessels or vessels carrying strategic materials, additional security considerations apply.
To verify the feasibility of mitigating the identified vulnerability, a secure Lua interpreter configuration was implemented and validated. The implemented patch employs the post-initialization removal approach to maintain compatibility with existing PC implementations while addressing the security vulnerability. Listing 2 of the original paper shows the secure configuration disabling dangerous Lua libraries after initialization: luaL_newstate(); luaL_openlibs(); then // [SECURITY PATCH] disabling dangerous libraries via luaL_dostring setting os=nil, io=nil, debug=nil, package.loadlib=nil, package.cpath='', loadfile=nil, dofile=nil, load=nil, rawset=nil, loadstring=nil. The patch blocks operating system command execution, file system access, debugging capabilities, native library loading, and dynamic code evaluation. Table 8 of the original paper summarizes blocked capabilities and mitigated risks: os target (execute, exit, remove, rename) blocked; io (open, popen, read, write) blocked; debug (sandbox bypass capabilities) blocked; package.loadlib (native DLL loading) blocked.
The library removal timing is critical for security. A potential reviewer concern involves rawget() bypass attempts where malicious scripts might attempt to access removed libraries through low-level table operations. The patch design prevents this attack vector through strict execution ordering. The Lua interpreter initialization follows a deterministic sequence: (1) luaL_newstate() creates the Lua state, (2) luaL_openlibs() loads all standard libraries including os, io, and debug, (3) luaL_dostring() executes the security patch setting library references to nil, and (4) external PC scripts are loaded via load_file(). Because the patch executes before any external script loads, library references are already removed from the global table (_G) when malicious scripts attempt access. Consequently, bypass attempts such as rawget(_G, "os") return nil because the reference was eliminated in step (3) before the script executed in step (4). This ordering guarantee makes the patch resistant to rawget/rawset bypass techniques, setfenv/getfenv environment manipulation, and metatable-based __index interception.
Empirical validation confirmed complete RCE mitigation while preserving PC compatibility. Table 9 of the original paper summarizes the patch validation test results: direct os.execute() returns nil with no execution (pass); rawget(_G, "os") bypass returns nil with bypass failing (pass); malicious PC loading has RCE blocked with charts rendering (pass); normal PC loading renders charts successfully (pass); feature processing executes visualization rules (pass); system stability with no crashes or errors (pass). The patch preserves essential Lua capabilities required by S-101 PCs, including require for module loading, rawget for metatable-safe table access within __index metamethods, and standard libraries (math, string, table, pairs/ipairs) for portrayal rule computation. The rawset function is proactively blocked as a defense-in-depth measure: static analysis of the S-101 reference PC confirmed zero rawset invocations across all 256 Lua source files, while its capability to bypass __newindex metamethods represents a potential sandbox evasion vector. This selective blocking approach achieves security hardening without breaking legitimate PC functionality, and the library removal patch introduces negligible performance overhead through a single luaL_dostring() call.
A potential concern is whether disabling standard Lua libraries conflicts with the extensibility intended by the S-100 standard. Analysis of Part 9a demonstrates that this conflict does not arise under the current architecture. The S-100 Part 9a portrayal model defines a closed-loop execution environment where all data exchange between Lua scripts and the host system occurs exclusively through host callback functions [4]. Feature data and association information pass through host callbacks, returning drawing instructions to the host via HostPortrayalEmit [4]. Section 9a-7 explicitly states that the portrayal does not use a data input schema, with all data passed through the Part 13 host interface. This architecture means Lua scripts have no legitimate requirement for direct file system access (io), operating system command execution (os), runtime introspection (debug), or dynamic native library loading (package.loadlib). The disabled libraries fall entirely outside the functional scope defined by Part 9a. Empirical validation confirms this architecture: the proposed patch was tested against the S-101 reference PC distributed with OpenS100, comprising 256 files and 15,112 lines of Lua code, with all portrayal functions executing successfully with dangerous libraries disabled.
This section addresses methodological constraints and outlines future research directions for maritime software security.
This paper analyzed a single reference implementation, OpenS100 at commit f13cd82, rather than multiple commercial ECDISs. This constraint arises from: (1) proprietary nature of commercial ECDIS software limiting source code access, (2) resource constraints preventing procurement and analysis of multiple licensed systems, and (3) regulatory restrictions on reverse engineering safety-critical maritime equipment. While direct experimentation on commercial ECDIS platforms was not conducted due to security licensing and intellectual property restrictions, the generalization argument rests on OpenS100's official status within the IHO S-100 infrastructure. OpenS100 is listed as an official interim S-100 infrastructure component in IHO document HSSC16-04.5A, Annex 2, and was recognized by the S-100 Working Group as "a key component in validating the practical implementation of S-100 standards" at S-100WG10 in September 2025 [36]. The project is maintained by KHOA under IHO oversight and uses the official IHO LuaScriptingReference for portrayal catalogue implementation. Its 18 repository forks on GitHub indicate widespread use as a foundation for derivative systems. Since the identified vulnerabilities originate from architectural gaps in the standard specification rather than implementation errors, any standards-compliant implementation most likely carries the same flaw.
Implementation of the Unrestricted Lua Interpreter mitigation patch revealed an unanticipated standards-level security gap extending beyond the study's original scope, demonstrating how security implementation efforts can uncover previously undocumented specification issues requiring standards-body intervention. Static analysis of the S-101 reference PC distributed with OpenS100 identified 13 rawget() invocations across 6 source files with two distinct usage patterns: analysis reveals 11 of 13 uses (85%) serve convenience rather than technical necessity, while 2 uses (15%) are structurally mandatory within the metatable __index implementation. The S-101 reference PC implements object inheritance through Lua's metatable mechanism: within __index metamethods, standard table access causes infinite recursion because accessing a nonexistent key triggers the same function, while rawget() bypasses this metamethod invocation, enabling direct table storage access without recursion. This represents a structural requirement of Lua's metamethod system rather than an implementation choice. Analysis of S-100 Edition 5.2.0 Parts 9a (Portrayal) and 13 (Scripting) — the authoritative specification for maritime geospatial data standards — reveals a significant absence: neither part specifies permitted or prohibited Lua interfaces, leaving critical isolation decisions to each implementer.
The findings of this study have practical pathways for reaching international organizations responsible for electronic chart and ECDIS standards. The identified vulnerability has been assigned a Common Vulnerabilities and Exposures (CVE) identifier through the MITRE/CVE program, establishing a permanent public record accessible to ECDIS manufacturers, classification societies, and maritime regulatory bodies worldwide. CVE registration ensures the vulnerability is indexed in the National Vulnerability Database (NVD) and incorporated into commercial vulnerability management workflows used by equipment vendors. In accordance with coordinated vulnerability disclosure principles, the authors met with the main contributor of the OpenS100 project to present the research findings and identified vulnerability and agreed to integrate the security patch into the official repository. The patch is scheduled for upstream commit following acceptance of this paper and prior to publication, ensuring remediation is available to all downstream implementations before public disclosure of detailed exploitation methods. This coordinated approach balances academic transparency with responsible protection of operational maritime systems. Beyond public disclosure and developer coordination, the study recommends that the IHO mandate in future standard revisions: (1) process-level sandboxing through operating system mechanisms, (2) mandatory digital signatures and verification for PCs and FCs beyond chart data alone, and (3) defense-in-depth architecture ensuring multiple independent security layers.
The following research directions are recommended. (1) Multi-Vendor ECDIS Verification: comprehensive ecosystem assessment requires analyzing commercial ECDIS implementations from multiple vendors to determine whether identified vulnerabilities represent systemic patterns or isolated occurrences. Such research requires industry collaboration and regulatory support to overcome proprietary code access constraints, similar to IACS Unified Requirements E26 and E27 for maritime cybersecurity introduced in 2022 [37,38]. (2) PC Vetting Pipeline: development of automated security verification infrastructure for PC distribution through IHO channels, comprising static analysis detecting prohibited API usage, dynamic sandboxed execution for behavioral analysis, cryptographic signing for authenticated distribution, and continuous monitoring for post-distribution vulnerability disclosure. (3) Maritime-Specific Security Tools: development of domain-aware static analysis tools incorporating S-100 trust models and maritime functional safety requirements. While general-purpose tools like CodeQL provide strong technical capabilities, they lack maritime domain knowledge necessary for detecting design-level vulnerabilities like the Unrestricted Lua Interpreter flaw. (4) S-100 Security Certification: supplementing current functional safety certifications with security criteria addressing design risks before the 2029 mandate.
This paper evaluated the vulnerability detection capabilities of automated static analysis tools versus expert manual review targeting the OpenS100 implementation. While automated tools identified numerous syntactic defects, they failed to detect the majority of expert-identified vulnerabilities, including the PoC-verified Unrestricted Lua Interpreter flaw enabling RCE on the tested platform. These results indicate that current functional safety certification frameworks require supplementation to address design-level cyber risks arising from structural gaps in the S-100 standard specification. Accordingly, the experimental evidence supports that IHO mandate the following security controls in future standard revisions: (1) process-level sandboxing through operating system mechanisms, (2) mandatory digital signatures and verification for PCs and FCs beyond chart data alone, and (3) defense-in-depth architecture ensuring multiple independent security layers. These recommendations align with established security principles from safety-critical domains including aviation and automotive.
As maritime digital transformation accelerates, security must be integrated from the design phase. This paper emphasizes that combining automated efficiency with domain-specific expertise is essential: automated tools provide broad syntactic defect coverage, while human domain expertise reveals the design flaws tools miss. The case study shows that a single specification-level flaw can endanger the entire global ECDIS fleet, making standards-level intervention — not just individual application fixes — necessary before the 2029 S-100 mandatory adoption deadline.
Finally, this work opens several directions: multi-vendor verification, automated vetting pipelines for portrayal catalogues, maritime-aware SAST tools, and an S-100 security certification framework. The dataset (1530 defect locations and 23 expert vulnerabilities) and withheld PoC materials are valuable assets for follow-on research under responsible disclosure.
Full reference list (38 sources) available in the original PDF.