Check Before Upload - ファイルのミスアップロードを防止

Check Before Upload - ファイルのミスアップロードを防止

ID: glikkfgjidibcccbcennobhhocfnmoee

Extension Info & Metadata

Status
Active
Version
2.8
Size
0.03 MB
Rating
0.0/5
Reviews
0
Users
8,000
Type
Extension
Updated
May 27, 2026
Category
Tools
Price
Free
Featured
No
Visibility
Unlisted
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
appteamc56View Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
1
Active
1
Obsolete
0
Listed
0
Unlisted
1
Total Users
8,000
Screenshot 1

誤操作によるwebサイトへのミスアップロードを防止することを目的に作成されました。

Check Before Uploadは、webサイトへのファイルミスアップロードを防止するための簡易なツールです。 非常にシンプルな機能により、不注意や操作ミスによるファイルのアップロードによるセキュリティリスクの顕在化を未然に防ぐことが可能です。 ✅ Check Before Uploadの主な機能 ▸ ファイルのドラッグアンドドロップを含めた一般的なファイルアップロード操作時に、アップロード先のwebサイトURLや、ファイル名を表示させた確認画面を差し込み確認を促します。 ▸ 一度、許可リストに登録したファイルを再びアップロード操作することにより、アップロードが実行されます。 ▸ 事前にホワイトリストで確認画面を表示させたくないURLを登録しておくことにより、安全が確認されているサイトでの確認画面表示を抑制することができます。 ❓ よくある質問 ▸ Check Before Uploadは無料ですか? はい。Check Before Uploadは無料のツールです。 ▸ Check Before Uploadは全てのwebサイトで動作しますか? いいえ。ドラッグアンドドロップ等によって渡されたファイルがどのような仕組みでwebサイトに送信されるかは、webサイトごとに異なります。一般的なwebサイトでは上手く動くように配慮して作成されていますが、全てのwebサイトでの動作確認はできないことをあらかじめご理解いただいた上で活用ください。 ▸ Check Before Uploadの確認ダイアログにファイルを追加しても、ファイルのアップロードを実行することができません。どうすればよいですか? 対応していないwebサイトである可能性が高いです。ホワイトリストに登録し、Check Before Upload の対象外としてください。 ▸ ホワイトリスト設定画面の出し方が分かりません。 タスクバーにピン留めした後、アイコンをクリックしてください。 ▸ 連絡方法は? 事務局からの案内に従って、適切な問い合わせ先までメールで問い合わせをお願いします。 👷 今後の予定 ▸ 多言語対応。 ▸ 検知力の向上。

Item
Type
Severity
Description
<all_urls>
Host
Critical
Broad host access — the extension can read/modify content on every website.
Broad Host Permissions
Risk Factor
High
This extension has broad host permissions allowing it to access many or all websites.
storage
Permission
Medium
This permission allows storing data locally in the browser. Rated Medium because it can persist sensitive user data, track user activities over time, and potentially store malicious payloads.

Content script (which runs on <all_urls>) installs a full-document MutationObserver, a 1-second setInterval, and monkey-patches history.pushState/replaceState on every page the user visits. These are powerful page-instrumentation primitives that look suspicious in isolation, but here they are used solely to detect SPA URL changes so the per-URL upload-confirmation cache can be cleared. No data is sent off-device. Pattern likely contributed to the ML flag but is benign in context.

content.js (Line 114)
// 2. `MutationObserver` を使用して URL 変更を監視(SPAのページ遷移)const observer = new MutationObserver(clearStorageIfUrlChanged);observer.observe(document.body, {  childList: true,  subtree: true});// 3. `setInterval` で定期チェック(保険)setInterval(clearStorageIfUrlChanged, 1000);// 4. `pushState` / `replaceState` をフック(BoxなどのSPA対策)(function() {  const originalPushState = history.pushState;  const originalReplaceState = history.replaceState;  history.pushState = function(...args) {    originalPushState.apply(this, args);    clearStorageIfUrlChanged();  };  history.replaceState = function(...args) {    originalReplaceState.apply(this, args);    clearStorageIfUrlChanged();  };})();

Scrapes inline <script> tags to regex out Box.prefetchedData, then issues an authenticated fetch() to a derived Box internal API endpoint to read folder metadata (owner, external-collaborator flags, path). Reading prefetched JS state and calling internal Box APIs from a content script on <all_urls> is unusual and is the kind of pattern ML models associate with reconnaissance/exfiltration. However, the call is gated on the URL containing 'cmic.ent.box.com' (content.js:65) and the response is only used locally to decide whether to show a warning dialog — no data is transmitted off-device.

utils/box.js (Line 43)
// Box.prefechedData から fetch すべき API endpoint URL を取得document.querySelectorAll('script')  .forEach(script => {    if (script.textContent.includes('Box.prefetchedData')) {      try {        const match = script.textContent.match(/Box\.prefetchedData\s*=\s*(\{.*?\});/s);        if (match) {          parsedData = JSON.parse(match[1]);        }      } catch (error) {        console.error("Box.prefetchedData の取得に失敗しました", error);      }    }  });parsedData = parsedData['/app-api/enduserapp/current-user'];apiUrl = parsedData['preview']['appHost'] + 'app-api/enduserapp/folder/' + document.URL.split('/')  .pop();// API endpoint を fetch して JSON 形式で返すreturn await fetch(apiUrl)

Uses innerHTML to inject strings into the confirmation dialog. The strings are sourced from chrome.i18n.getMessage(), which reads from the extension's bundled _locales/ files and cannot be controlled by an attacker, so this is not exploitable; it is, however, the kind of innerHTML usage code-feature ML models often weight as a code-injection signal.

utils/confirmDialog.js (Line 28)
const securityRiskText = chrome.i18n.getMessage("dialog_security_risk");const confirmInstructionText = chrome.i18n.getMessage("dialog_instruction");...const message1 = document.createElement("div");message1.className = "modal-message";// message1.textContent = securityRiskText;message1.innerHTML = securityRiskText;const message2 = document.createElement("div");message2.className = "modal-message";message2.innerHTML = confirmInstructionText;

By severity

Critical0
High0
Medium0
Low3

Versions scanned

Showing 1 of 15 scanned versions with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
2.83

Files with findings

3 distinct paths — top paths by unique finding count:

  • content.js1
  • utils/box.js1
  • utils/confirmDialog.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
low
utils/confirmDialog.js (line 28)Uses innerHTML to inject strings into the confirmation dialog. The strings are sourced from chrome.i18n.getMessage(), which reads from the extension's bundled _locales/ files and cannot be controlled by an attacker, s…
2Tracking
low
content.js (line 114)Content script (which runs on <all_urls>) installs a full-document MutationObserver, a 1-second setInterval, and monkey-patches history.pushState/replaceState on every page the user visits. These are powerful page-ins…
3Unauthorized Data Collection
low
utils/box.js (line 43)Scrapes inline <script> tags to regex out Box.prefetchedData, then issues an authenticated fetch() to a derived Box internal API endpoint to read folder metadata (owner, external-collaborator flags, path). Reading pre…
URLs
2
IPv4
0
IPv6
0

URLs

View the external URLs this extension communicates with to understand its network activity and data interactions.

Gain full insight into all external connections.

Upgrade for full visibility.

internal.example.com-https://internal.example.com
qiita.com/k-yoshiyuki/items/50a5c6b4b2f59d583c22https://qiita.com/k-yoshiyuki/items/50a5c6b4b2f59d583c22

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Showing 1 to 10 of 20 rows
Rows per page:

Code Diff

Compare extension code between any two versions.

0 changed files (scanned top 25 shared text files)

No comparable text files found between these versions.

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.