Abusing Teams client protocol to bypass Teams security policies
o365blog.com
o365blog.com
Another blog post could be written titled "I wrote my own teams client where I'm allowed to edit messages locally", would that be a security issue?
In other words there is not really anything of note, if I read the post correctly.
Bug bounty programs and flashy brand name vulnerabilities have created this ecosystem where lots of security "researchers" publish long blog posts about so called "vulerabilities" they have discovered, hyping them up to be way more than they are. In hopes of getting bug bounties or hired as contractors I assume.
I had to unsubscribe from reddit's r/netsec and r/blackhat due to the number of borderline false posts like this.
There's like this intense pressure of people in security to network it seems. In the rare times I would post on netsec/blackhat to correct a misconception I'd get reached out to to connect on linkedin and whatnot.
Of course there is still some tremendous security researchers out there, like those at Google ProjectZero, but this industry seems to also attract a lot of borderline grifters.
This is akin to saying fakeroot gives you root capabilities, or claiming to get root by doing "export PS1='# '"
I never said P0 is my threshold, I just used them as an example of good security researchers. I don't doubt there are plenty of randos doing good work. I'm just finding the signal to noise ratio is getting worse.
> While I was working with the previous version (v0.4.4) of AADInternals Teams functions I noticed an interesting thing: I was able to edit and delete chat messages using AADInternals as a guest even when it was not allowed.
I agree however that the rest of the article doesn't really make any attempts to show a server-side issue.
In the unlikely event that someone reading this doesn't understand why server-side sanitation of any user input is always required, xkcd.com/327 provides an amusing take.
The real issue would have been if the user did these actions and there was no backend validations on them. The video does not cover this.
Neither the article nor the video prove that it does anything more than limit the display options client-side though. The source of truth is still the server and nothing here speaks to that...
https://twitter.com/NestoriSyynimaa/status/13211346867149537...
(But hasn't offered any evidence to back this up)
If it does change server data, yea - significant news. But that doesn't seem to be implied, except by omission of a claim that it does not.
The desktop client chat _still_ doesn't have a "reply to message" feature, while the mobile client has had it for, what, more than a year? This is a feature that _should_ cost a competent engineer no more than what, a week? to implement. The team should take a note out of Discord's or Telegram's book to improve the chat experience. It's really very bad.
In the meantime the latest noticeable additions were mostly fluff like extra ways to show webcam stream backgrounds, and a "cinema-like" webcam-view.
It's interesting that the same company can produce both Teams, being pretty bad, and VS Code, being very good.
I think it was simply rushed to production. I remember VS Code not being that amazing at the start (slow etc.), but with time, effort and love put into it, it grew to become a competent IDE.
Teams was horrible when it first came out, but I'm noticing some improvements in performance and stability since then.
Surely this demonstrates the wide variance you get with software and how important professional discipline is?
For example a comment earlier mentioned the chat feature is broken but they rushed out video background changes. This of course is a response to zoom - and it's possible to argue it's a strategic necessity - but it suggest the top level product management is blowing around in internally company winds rather than user needs.
I would argue its a strategic failure. Purely reacting to the competition is something that has led to countless Microsoft disappointments (e.g. Zune, Bing).
Even with Slack I see no reason for a desktop client, which looks to me like just a widget-less browser running slack.com inside. I didn't need an app for that. And with the web client I can inject JS/CSS as I please (e.g. to prevent sending typing indicators).
Discord is another interesting datapoint. You can access that through the browser or natively, but their team has said that the native client means (among other things) better access to audio codecs for better quality audio and things like noise cancellation.
Browsers have had screen sharing for awhile.
https://developer.mozilla.org/en-US/docs/Web/API/Screen_Capt...
It doesn't work well across all OSs (see the Wayland discussion from a few days ago....) but it is there.
My kid's school issued Chromebooks for remote schooling and are using Zoom through the browser. It was so bad that I pulled out an old Macbook instead. The Zoom native client running on a 12 year old Macbook works way, way better than running in updated Chrome on a recent Chromebook.
Then again my 8 year old desktop has 32GB of RAM and it is amazing what throwing 32GB of RAM can do to solve problems.
I've actually used video chat in multiple web apps for years now w/o issue though. In theory almost every aspect of video chat should be offloaded to GPU, the browser should just be a dumb canvas to throw pixels at, if that isn't the case then something has gone wrong somewhere in a particular setup. :(
I think Zoom is doing its own streaming schengens in the browser with JS and not using the native WebRTC framework for video streaming. It's very possible that they made the web client experience deliberately poor so that they could sell you on downloading the native client, and then spy on you.
It is possible:
https://developer.mozilla.org/en-US/docs/Web/API/Screen_Capt...
Google Hangouts allows screen sharing from the browser.
Even if it isn't supported across all browsers, I'd much rather download the latest release of Firefox or Chromium than a proprietary client by Slack.
That's pretty much what it is.
Chat isn’t a product that can stand alone, so it’s always attached to another agenda. Skype was an interoperable phone with chat attached. Teams is a SharePoint client that has chat.
My company at the time had E2E encryption with client certificates on AIM.
It would have been 100x simpler to create a compelling GUI client for IRC (back in the day, they sort of exist now), than to build an entire new protocol, server infrastructure, and GUI client to support a branded and controlled chat. Never mind multiple competing and incompatible versions of same.
Conflicting interests, obviously. But as a technology, "chat" did not improve materially between 1990 and 2010 or so.
But the only thing it managed to extinguish was itself. IRC long outlived comic chat (and thank goodness for that, IMO).
FYI for those who like to reply, you can put a > and a quote box will appear, you can copy and paste the message you wish to quote.
To exit the quote box, type "Alt-Enter" twice
I haven't had the inclination to investigate, but I suspect it's something like a memory leak that eats up all the (16GB) RAM and then swaps the system to death. Maybe if I was patient enough I could get an alternative console prompt and poke around, but when you need to get back into that meeting....
In huge companies like Microsoft teams working on completely different products can be as separate as if they were working for different companies.
It's not inconceivable that the first link between those teams is at executive management level.
The former it develops by itself, the latter has a codebase others are Free to contribute to (as long as they don’t agree to the official binary’s EULA, which isn’t required to use VS Codium).
If it is, I feel so bad for that dev team.
I bet this is a situation where even if required, there’s a Slack channel or even IRC server that’s actually used.
Teams is the Discord of integrated business chat from a usability perspective, at least if you want an integrated experience. Cisco's system last I was aware was a hodgepodge of applications, i.e. we had to have two separate Cisco chat applications running at all times.
Other players, its either one or both of: - a solution less kludgy than Cisco but still a hodgepodge of applications - a system that can't scale on one or more important axes - too specialized for a general use case
Remember, on one hand, Telcom uses erlang a lot. On the other hand THEY USE ERLANG A LOT. The sorts of stuff you see in phone systems is brilliant but archaic. And I bring that up because the voice integration in teams is really freaking nice and honestly the users are happier because its less integration hassle when moving numbers around, and that's a win for both IT and users.
Would I prefer discord had a competitive solution or Teams had a competitive UI? Yes. Or that Avaya would come blow everyone away with something amazing.
But part of me is also asking if teams has gotten so crappy lately because this year has likely resulted in them having to scramble on bugs and scaling issues in a way they didn't expect.
So a buddy of mine and I tried it. The rerouting was done (as far as we could tell) client side and it seemed there was no inherent server side method of detecting such scenario.
Company email for a few thousand folks went down after the two clients took off doing their thing for a short while.
IIRC the client wasn't immediately inclined to forward other forwarded emails (again enforced on the client) but an easily crafted rule would bypass that easily.
At the time I was surprised there wasn't any automatic prevention of such things, as my career has gone on, I just assume such things aren't there ;)
Mail loops in mail servers have always been a thing, and there are various ways to detect and stop them, usually by adding headers to a message and detecting it's the same one that was seen previously.
If there's actually a client side forward (which mail servers can't prevent because running mail through a local program, whether it be procmail, spamassassin, or some other mail categorization and filtering program) is a valid use case with a long history. There's also the case where the mail client is applying it's own complex rules and sending responses automatically. If the message is actually a new one, there's not an easy way to detect the loop.
There's a reason why Gmail for a long time (still?) didn't allow you to forward your mail to another Gmail address. I would argue that for Exchange, where it's generally much easier to track down individuals, erroring on the side of allowing administrators to do what they want to block this (whether that be company policy, exchange policy, or whatever) is the correct design choice.
Was actually quite useful to me since it meant I could script messages to internal todo list mailboxes from the *n?x boxen, though it did give the windows devs a mild heart attack the first time they saw it happen.
https://www.theverge.com/2020/5/10/21253627/microsoft-reply-...
There was this essay about this being an inevitable result, considering that large companies almost never take user feedback into consideration when selecting "enterprise software". Which is the reason most enterprise videoconfering software sucks.
If they can’t or decide not to acquire a company they will slap together a product like teams hoping to kill slack or zoom. It’s still a reactionary approach instead of doing R&D.
It’s the same in the “Fintech” software world where the large players are merging and acquiring small companies to stave off Stipe, Square, and whatever else hasn’t been picked up yet.
So everyone who doesn’t want to be logged out just extracted their key and uses it to stay logged in on their other clients.
(Also, if you run across some tool/bot that needs a Legacy Token you your user-key will work. When Slack stopped letting users generate them it didn't apply to Slack itself.)
This is one of the reasons that responsible disclosure policies exist, and why they are widely adopted in the industry. It is balance of risk and resources.
Deliberately cheapening out on security because security researchers generally hold to a responsible disclosure procedure is not in the users interest.
This is not one of those inevitable bugs. This is an indicator that there maybe security issues littered throughout the system because no one cares.
Once the 3rd-party open-source client, Samba, was written, it emerged that SMB access restrictions were only in the Microsoft SMB client software not the SMB server. Samba users could do whatever they wanted.
SMB server was updated eventually, so that it checked user access rights and didn't rely on the client not to request a file it wasn't allowed to see. SMB1 however continued to be horribly insecure, sending passwords in plain text, for example, which led to SMB2, SMB3 etc.
Did you know that Teams sends a big telemetry dump every few (somewhere between 3 and 15) seconds, if you're on certain views? Well, there's a separate system for each, meaning if you have two open at once it can double-send the telemetry. I wouldn't be surprised if Teams was responsible for the majority of an organisation's network traffic.
Got tangled up somewhere and didn't know where I was the next day. Maybe I'll try it again if Mattermost doesn't do it.
I'll check that out. Thank you.
It’s pretty basic stuff.
I agree that the article is kind of unclear about whether it is only a cosmetic change. The title suggests not but the article is ambiguous.
Then I remembered zoombombing is a thing and can be pretty disruptive.
It could also be an inherited problem from the days when teams was actually Skype for business.
For Microsoft to build such a product without basic security in mind is beyond belief in 2020. There is no level of “technical debt” excuse that can make up for a lazy, anti—user decision like this.
This is 2020. Microsoft is 40 years old. How many times should we repeats the same dumb mistakes over and over again until we collectively learn as an industry. This should have been stopped at the initial design phase. Clearly those in charge can’t make simple design decisions or haven’t learned from decades of mistakes.
Also migrating from client side to server side means an entirely new version of APIs. It means clients being broken and migration issues for customers. New servers with old clients means backwards compatibility, etc. It will take years unless Microsoft kills the old version aggressively which they won’t because they’re Microsoft. This is a problem that will live on for 5 years at least.
Also? Teams is a glorified website running in a (hopefully up-to-date) embedded version of Chrome. If they replace some of the scripts it requests with “redirect to this updated Teams client”, then by golly it'll do that, and server-side API changes won't matter in the slightest.