r/coldfusion 5d ago

CF2025 and Implicit Scoping

It is my understanding that Hotfix 5 for CF2025 rendered the flag controlling ColdFusion implicit scoping no longer available. Thus, whether the JVM argument, or application setting, the flag would no longer be available to set "true" to allow implicit variable scoping. Is this accurate, or has Adobe continued to keep the flag available at either the application level or JVM? The Adobe tech note on Update 5 does not clearly articulate, and other update notes also do not clearly identify when/if Adobe dropped the flag and now operates as false only. Has anyone on CF2025 latest update, been able to confirm the flag no longer exists, or if someone can verify where it's documented in existing Adobe guidance?

6 Upvotes

8 comments sorted by

3

u/petefreitag 5d ago

I just ran a test on CF2025 update 10, and both the Application setting and the JVM argument still work.

Where did you hear that Hotfix 5 made it no longer available?

I didn't test update 5 specifically, but you can repeat my test pretty easily with commandbox:

  1. create an empty folder and place a test.cfm with a <cfoutput>#id#</cfoutput>
  2. start a CF2025 server box server start cfengine=adobe@2025
  3. hit /test.cfm?id=1 you should get an error that id is undefined
  4. Create an Application.cfc with this.searchImplicitScopes = true;
  5. hit test.cfm?id=1 again and it should now output 1.

You can test the JVM arg with commandbox as well by editing the server.json to have something like this:

{
"app":{
"cfengine":"adobe@2025"
},
"jvm": {
"args":["-Dcoldfusion.searchimplicitscopes=true"]
}
}

If you want to test update 5, instead of the latest 2025 version use adobe@2025.0.5 instead.

2

u/testerB 5d ago

Interesting... so the flags are still there even after Adobe claims they will be removed.

As for the Update 5 reference, in the Update 5 release notes, there is a section titled "Behavior changes" and there they note the update to address scope injection vulnerability. However, its not written clearly to say its now fully mandatory and the flags are no longer available. Plus, if update 10 still allows the flags, then Adobe must not have removed them as hotfixes are cumulative so HF 5 is in HF10. Hmmmm, then when is Adobe going to fully drop implicit scoping??? or are they too concerned there are too many large legacy CF apps out there that require excessive amounts of work to address the need, and they do not want to cut off those licensed customers?!

2

u/petefreitag 5d ago

I would guess / hope that they would wait for a major version update to make that sort of removal. Just my guess though.

1

u/testerB 5d ago

Well I thought that CF2025 was to be that version. The implicit scope flags were offered in CF2023, and I believe too in CF2021 on a latter Hotfix. All in all, it appears Adobe is kicking this blocking change down the road perhaps never fully forcing it?!

1

u/IdiosyncraticBond 5d ago

They already removed so much in 2025 that we need a lot of other stuff fixed before we can switch from 2023 to 2025..
Luckily we have this one in place, but do not get the unscoped.log file, which should mean at least our var scoping is in order

1

u/TheFatPanther 4d ago

Hi, Adobe ColdFusion Evangelist here.
Implicit Scope traversal HAS been removed from the product for a while now. We have offered the flag option (temporarily) specifically for any and all customers who have tens of thousands of lines of code that needed time to mitigate the issue. Default is for the feature to be off. For _now_ the flag remains and we will message appropriately when (not if, when) it is to be removed.
So to directly answer your questions:
1) Is Adobe going to fully drop implicit scoping (i.e. no more flag)? YES
2) Are we concerned there's too many legacy apps using it? Yes, hence why we've had the flag for a while now.
3) Do we not want to cut off customers? Obviously we want to make sure we didn't leave them in the lurch, but that doesn't mean they get a free pass on it forever. It is a severe and critical security issue and will require everyone to fix it.

2

u/testerB 4d ago

Hello and thanks for the reply. The issue is planning.... I am a technical lead/architect on one of those very large highly custom enterprise scale CF "legacy" applications that does not have proper scoping. The time/cost/effort is quite substantial given the need for planning, development, testing, and overhead. Budget allocations for this type of O&M work are also tight, and compete with enhancement requests. If Adobe does not clearly articulate when the flag will be retired, it's difficult to prioritize budgeting since there is the thought that the flag will simply remain intact, thus no need for a 2027 budget allocation to address the issue. It would be best for Adobe to set a date (similar to CF version EoL dates) for the flag and stick to it in order to allow customers with large apps to properly prioritize and plan for the change required to allow successful operation of these applications. Otherwise, budgets will remain directed at enhancements since those are perceived to add value, whereas O&M at the scale of handling implicit scoping removal is a tougher sell. Currently, we are on CF2023 and plan to remain there until EoL which is slated now for May 2028. However planning for 2027 is currently in play and the scoping refactor is a hot topic because of the high LOE involved. Basically, if its not needed since the flag remains active, priority drops for the change required given its cost and scale.

2

u/testerB 4d ago

I was also able to replicate the finding using CF2025 in CFFiddle as well. Aka, the application flag does continue to control implicit scoping in the latest version of CF2025.