
🕵️♂️ 🔎 🕸️ أعلم أنك قمت بتثبيت إضافات كروم هذه أدناه.
[中文文档]
crx-scouter.js يمكنه كشف إضافات كروم التي نستخدمها بهدوء، ويمكنه أيضًا كشف ما إذا كان الشخص الذي أمام المتصفح مبرمجًا رائعًا أو مبرمجًا متقدمًا 🐱. يمكن استخدامه في أغراض مثل مصائد العسل (honeypots)، التمييز بين الإنسان والآلة، مواجهة حظر الإعلانات، الفحوصات المسبقة لاستغلال الإضافات، وغير ذلك.
يعتمد مبدأ crx-scouter.js على تجربة قمت بها مع evi1m0 في عام 2017. يبدو أن جوجل تريد حل هذه المشكلة، لكن دون نجاح يُذكر. يمكن العثور على التفاصيل في وثيقة المبدأ.
العرض التجريبي على: https://blog.neargle.com/crx-scouter/.
كشف إضافة محددة
const { check_one } = await import('./scouter/scouter')
check_one("aapbdbdomjkkjkaonfhkkikfgjllcleb", console.log)
مخرجات console.log تبدو كالتالي:
{
"extid": "aapbdbdomjkkjkaonfhkkikfgjllcleb",
"url": "https://chrome.google.com/webstore/detail/google-translate/aapbdbdomjkkjkaonfhkkikfgjllcleb",
"name": "Google Translate"
}
بالطبع، هناك أيضًا وظيفة check_all_crx(callback) التي تدعم كشف جميع الإضافات في البصمات.
✨ العرض التجريبي للكشف عبر الإنترنت مبني على هذه الوظيفة، والتأثير كما يلي:

لماذا يمكننا فعل ذلك؟
يجب على مطوري إضافات كروم معرفة أنه في الحزمة ذات الامتداد .crx، يوفر ملف manifest.json معلومات مهمة عن الإضافة. يمكن فك ضغط ملف .crx مباشرة باستخدام unzip. مثال على manifest.json كالتالي:
{
"background": {
"scripts": [ "background.js" ]
},
"content_scripts": [ {
"all_frames": true,
"js": [ "content.js" ],
"matches": [ "http://*/*", "https://*/*", "ftp://*/*", "file:///*" ],
"run_at": "document_end"
} ],
"description": "Validates and makes JSON documents easy to read. Open source.",
"homepage_url": "https://github.com/teocci/JSONView-for-Chrome",
"icons": {
"128": "assets/images/jsonview128.png",
"16": "assets/images/jsonview16.png",
"48": "assets/images/jsonview48.png"
},
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApA/pG/flimvWWAeUelHGaQ+IJajQm01JkfK0EYOJPyfsdTkHLwD3Aw16N3zuFkmwz09DcGDT+ehww7GSpW7RpbX5kHrovsqyHXtwt+a2Sp8bYFFdpRPj3+HG6366kNkwttDHMtsDkwuKaBtrQofQe5Ud9mKu9h1FDPwc2Qql9vNtvOqKFhV+EOD0vD2QlliB6sKCteu4nYBlFEkh6pYWRaXdAYSKYdE1SYIuQzE3dk11+KCaAC1T6GffL3sia8n5brVX7Qd+XtXyBzuM54w5e3STwK7uLMhLGDIzHoTcldzWUUflfwuI86VQIFBxPbvXJKqFFFno+ZHs/S+Ra2SPmQIDAQAB",
"manifest_version": 2,
"minimum_chrome_version": "21",
"name": "JSON Viewer",
"permissions": [ "clipboardWrite", "http://*/", "contextMenus", "https://*/", "ftp://*/" ],
"short_name": "JSONViewer",
"update_url": "https://clients2.google.com/service/update2/crx",
"version": "0.7.0",
"web_accessible_resources": [ "assets/options.html", "assets/csseditor.html", "assets/css/jsonview.css", "assets/css/jsonview-core.css", "assets/css/content_error.css", "assets/images/options.png", "assets/images/close_icon.gif", "assets/images/error.gif" ]
}
إذا احتاج المستخدم إلى الوصول إلى موارد الإضافة في صفحة الويب، فيجب عليه إعلان القائمة في web_accessible_resources، خذ json-view كمثال:
"web_accessible_resources": [ "assets/options.html", "assets/csseditor.html", "assets/css/jsonview.css", "assets/css/jsonview-core.css", "assets/css/content_error.css", "assets/images/options.png", "assets/images/close_icon.gif", "assets/images/error.gif" ]
تنسيق عنوان URL للوصول إلى هذه الموارد يكون كالتالي:
chrome-extension://' + extension id + /assets/options.html
لقد طورت زاحفًا للحصول على بيانات الإضافات من متجر جوجل بأكمله، والفئات كالتالي: 'ext/10-blogging', 'ext/15-by-google', 'ext/12-shopping', 'ext/11-web-development', 'ext/1-communication', 'ext/7-productivity', 'ext/38-search-tools', 'ext/13-sports', 'ext/22-accessibility', 'ext/6-news', 'ext/14-fun', 'ext/28-photos' وغيرها.
ثم حصلنا على جميع بصمات الإضافات التي تحتوي على web_accessible_resources.
بعد خمس سنوات، لا يزال كروم يضيف ميزة أمان للالتفاف على هذه المشكلة. وهي أن web_accessible_resources أضافت ميزة أمان القائمة البيضاء للمطابقة (matches)، ولا يمكن الوصول إلى web_accessible_resources إلا من خلال عناوين URL داخل القائمة البيضاء، مما يتجنب كشف البصمة من الواجهة الأمامية.
لكن... من بين 110,000 إضافة قمت بزحفها هذا العام، أضافت 286 إضافة فقط قائمة المطابقة البيضاء لـ web_accessible_resources؛ ومعظمها مهيأة بقوائم بيضاء غير مجدية مثل *://*/* وقوائم أخرى يمكن تجاوزها بوضوح.
هذا يظهر مدى ضعف ميزة أمان لا يستخدمها أحد أو يستخدمها بطريقة خاطئة.