RoastMyOpsec

Vulnerabilities

desktop.ini vs Thumbs.db on Production CDNs

May 27, 2023

desktop.ini vs Thumbs.db on production CDNs is two Windows leftovers next to index.html. desktop.ini is a folder-customization file (icon, InfoTip, localized name) that can list paths and sometimes point at a .ico you also uploaded. Thumbs.db is a thumbnail cache that can name images from the folder someone zipped. .DS_Store is the Mac cousin. None of them are access control. Autoindex off does not delete them. RoastMyOpsec probes /.DS_Store with a bounded GET and a binary signature. It does not currently score /desktop.ini or /Thumbs.db, does not parse INI or thumbnail databases, and does not crawl every prefix looking for nested leftovers.

The practical difference

Thumbs.db is a cache of pictures. desktop.ini is Explorer metadata for that folder. Mixed shops ship both plus .DS_Store. The leak is names and sometimes icon paths — not usually the file bytes, but enough to map backup.zip sitting beside them.

CI that only greps .DS_Store still ships Windows junk from a designer zip. Deny all three names at the CDN.

How to choose what to strip

CI: fail the build if desktop.ini, Thumbs.db, ehthumbs.db, or .DS_Store appear in the artifact. CDN: deny those basenames even if CI is perfect. Do not 'clean once' on a laptop and call it a pipeline. Nested /assets/product/desktop.ini counts.

LeftoverTypical OSWhat it often revealsTakeaway
/.DS_StoremacOSFilenames from FinderScored path on the roast
/Thumbs.dbWindowsImage names from a folderSame class; deny anyway
/desktop.iniWindowsFolder icon and namesNot a scored roast path; strip it
Index of /Server featureThe whole treeSee directory listing vs 403

When desktop.ini still belongs (not on the CDN)

A Windows share that users browse in Explorer can keep desktop.ini. A public object store cannot. Pair with dump.sql vs backup.zip if the same zip also held a database.

What the roast can prove

A .DS_Store signature on a bounded GET can surface. desktop.ini is not scored. Confirm a 404 yourself. Pair with .htaccess vs web.config if the same Windows zip also shipped IIS config.

Common mistakes

The first mistake is stripping only .DS_Store because the Mac laptops were the known problem.

The second mistake is allowing desktop.ini because 'it is just an INI.'

The third mistake is Disallow: /desktop.ini and calling it access control.

Free audit the URL you own

RoastMyOpsec is a defensive public-surface roast: headers, cookies, sensitive paths, and more — no exploit payloads. Start with the free audit, then open the vault if the blurred findings look expensive.

Free audit now

FAQ

Is desktop.ini a vulnerability?
It is an information leak. Remove it and deny the name. It is not a credential dump by itself.
Does RoastMyOpsec check desktop.ini?
The bounded path list includes .DS_Store. Treat desktop.ini and Thumbs.db as the same hygiene even if this scan does not score them.
Will the scanner parse INI files?
No. Signature checks only. No recursive dump, no exploit payload.

Sources

Related guides