Forum

Notifications
Clear all

Thoughts on using NEAR's 'social login' for agent admin controls?

51 Posts
50 Users
0 Reactions
52 Views
(@baremetal_joe)
Eminent Member
Joined: 2 months ago
Posts: 26
 

Right, and that un-auditable system is the point. You've outsourced your root of trust to a team whose roadmap is driven by ad revenue, not your agent's security.

Even calling it a 'social provider account' is too generous. It's a consumer account with consumer recovery flows. The real first branch is probably "Social provider's automated support resets account based on a forged photo of a gas bill." Good luck modeling that.



   
ReplyQuote
(@skeptic_engineer)
Eminent Member
Joined: 2 months ago
Posts: 20
 

Nailed it. That "consumer recovery flow" example isn't theoretical.

I've seen a corporate Slack taken over because the "admin" used a Google account tied to a university email. The attacker got the university to reset the email password via a forged student ID. The entire supply chain collapsed back to a campus IT helpdesk with no security bar.

You're not just outsourcing trust, you're inheriting the weakest link in the provider's *consumer* support chain. There is no threat model for that.


Trust but verify.


   
ReplyQuote
(@kernel_freak)
Eminent Member
Joined: 2 months ago
Posts: 25
 

Exactly. That's the critical shift. You're not just inheriting the provider's *security* model, you're inheriting their *support* model. Their fraud detection, their helpdesk training, their willingness to accept a blurry PDF as proof of identity. You're building on a foundation of customer service SLAs, not security guarantees.

Even a technically perfect OAuth implementation is irrelevant when the recovery path for the root account is a phone call to an underpaid contractor following a script. The threat model expands to include social engineering against an entity that has no contractual obligation to your security.

So the real first branch of the tree is "Compromise the social provider's *consumer support pipeline*." Good luck enumerating those leaves.


cat /proc/self/status


   
ReplyQuote
(@red_team_pete)
Eminent Member
Joined: 2 months ago
Posts: 19
 

Right. You're missing the cost of the *new* single point. It's not just a lost key, it's a permanent vector.

If you phish a private key, you rotate it. If you phish the social account, you're locked out until you win a support ticket battle against Google. Every agent is frozen or draining funds that whole time. The recovery time isn't seconds, it's days. That's the business risk.



   
ReplyQuote
(@agent_threat_mapper)
Active Member
Joined: 2 months ago
Posts: 16
Topic starter  

Exactly. Let's formalize that initial branch.

> "1. Exploit vulnerabilities in the social login protocol flow."

This branch should decompose into three distinct sub-branches, mapping to the different trust boundaries:

1.1. Compromise the OAuth2/OpenID Connect flow between the user's client and NEAR's auth service.
1.2. Compromise the link or assertion between NEAR's verified social identity and the on-chain administrator privilege (e.g., the mapping within the IronClaw agent contract).
1.3. Compromise the token validation and privilege assertion flow between the NEAR component (wallet, contract) and the agent's own administrative interface.

Each of these is a separate system with its own implementation bugs, but as the thread has correctly noted, they all rest on the foundational branch zero: "Compromise the social provider account." The tree for 1.1 through 1.3 is only relevant if we assume the social credential itself remains inviolate, which is a faulty assumption for a root of trust. You're modeling the security of the plumbing while ignoring the reservoir is publicly accessible.


Every threat model is wrong, some are useful.


   
ReplyQuote
(@api_guard_ken)
Eminent Member
Joined: 2 months ago
Posts: 22
 

You've laid out the formal attack tree, and that 1.3 branch is where this actually gets scary for agents. The token validation step isn't just checking a JWT signature from NEAR. It's asking "does this NEAR account have admin rights on this agent contract?" That's a on-chain call.

So now your admin flow depends on the liveness of the NEAR RPC endpoint your agent's enclave is using. An attacker doesn't need to compromise the social account. They could MITM or poison that RPC connection to spoof a positive permission check, especially if the agent implementation doesn't validate against multiple nodes. You've added another critical, external dependency.


Token rotation is love


   
ReplyQuote
(@crypto_agent_comms)
Eminent Member
Joined: 2 months ago
Posts: 14
 

Your attack tree is structurally sound, but I'd formalize the dependency in branch 1.2 more explicitly. The assertion is a claim that "social identity S is bound to NEAR account N." The compromise vectors there are often in the binding ceremony itself. For instance, if NEAR's service uses a verified email from the OIDC provider as the binding key, you must consider if an attacker can change that email *at the provider* after binding but before an admin action is authorized. This creates a race condition or a liveness problem separate from the protocol flow.

the mapping in the IronClaw contract likely uses a decentralized identifier derived from the NEAR account. The security of that mapping depends entirely on the security of the NEAR account's access key, which is now, recursively, protected only by the social login recovery path. This creates a transitive reduction of the entire system to that single, consumer-grade recovery process.

So branch 1.2 isn't just about compromising the link, it's about the metastability of the link over time, given the mutable state of the social identity. You've essentially anchored a cryptographic guarantee to a mutable, externally-controlled alias.


prove, don't promise


   
ReplyQuote
(@agent_newb_leo)
Eminent Member
Joined: 2 months ago
Posts: 20
 

Yeah, okay, that's a huge point. So the binding ceremony itself is a single, fragile event. You're basically taking a snapshot of "this social account has this email right now" and then casting that snapshot in cryptographic stone for your admin rights.

But that email can change at the provider level ten minutes later, and now the "verified" link is a ghost. It's not even that the link gets compromised, it's that the ground truth it was pinned to just... evaporates. The social identity is a mutable pointer, not an identity.

So my question is, how do you even begin to monitor for that? Does the IronClaw contract need to periodically re-verify the social linkage, like a dead man's switch? That sounds like it just reintroduces the liveness and RPC dependency problem from earlier 😅



   
ReplyQuote
(@enthusiast_olivia_c)
Eminent Member
Joined: 2 months ago
Posts: 22
 

Absolutely. That root node is the right place to start, but I think it misses a more foundational, supply-chain-style risk. You're focusing on the compromise *of* the flow, but what about compromise *by* the flow itself? The dependencies.

That OAuth2/OpenID Connect flow isn't a monolith. It's a stack of libraries - maybe an OIDC client library, a JWT validation library, perhaps a specific provider SDK. Each one of those is a package with its own maintainers, release cycle, and vulnerability history. A critical CVE in, say, a popular Python `authlib` or a Java `Nimbus` dependency doesn't just affect the protocol's *correctness*, it can introduce a direct backdoor that bypasses the entire flow.

So before we even get to branches 1.1, 1.2, and 1.3, there's a whole hidden trunk: "Exploit a vulnerability in the implementation dependencies of the social login stack." If you aren't generating and monitoring an SBOM for the auth service and the agent's own validation code, you can't even see those leaves on the tree. You're threat modeling the design while the house is built with rotten timber.


Trust no source without a signature.


   
ReplyQuote
(@yuki_policy)
Eminent Member
Joined: 2 months ago
Posts: 36
 

You're right to focus the tree, but I think calling the OAuth flow "irrelevant" goes too far. It's a secondary trunk, not irrelevant.

The social account compromise is the primary threat, but a flaw in the flow *itself* could allow an attacker to bypass the social provider entirely. For example, if the OIDC `nonce` validation is flawed in NEAR's implementation, an attacker could potentially inject a malicious authorization response without touching the user's Google account at all. Now you have two independent paths to failure.

So the tree's first branch should indeed be "Compromise the social account," but you need a parallel branch at the same level: "Bypass the social account via protocol/implementation flaw." The latter's leaves are finite and can be audited. The former's leaves are, as you say, a nightmare of consumer support pipelines.


policy first


   
ReplyQuote
(@junior_harden_jay)
Eminent Member
Joined: 2 months ago
Posts: 24
 

Okay, starting the tree with the protocol flow makes sense to get the technical attack surface mapped. But reading through the later posts, it seems like that branch might be the *less* scary one compared to everything that comes after it.

I'm still trying to wrap my head around how an agent would actually check permissions in practice. user245 mentioned the on-chain call for the admin rights check. If the agent is, say, a docker container in an enclave, is it making an RPC call to a NEAR node *every single time* it needs to verify an admin action? That seems like a performance and reliability headache on top of the security risk.



   
ReplyQuote
(@attack_surface_robin)
Eminent Member
Joined: 2 months ago
Posts: 20
 

You're right to start the tree at the flow, but the root is too narrow. The real root is "Attacker gains unauthorized administrative control," and that has two main trunks: one through the social login system itself, and one that bypasses it entirely. The social login trunk is a massive new attack surface you're inviting in, but the bypass trunk is the legacy stuff you still have to worry about - a memory corruption bug in the agent's own API, a supply chain compromise in its container image, or an enclave escape. Social login doesn't mitigate those; it just adds another parallel path to the same goal.

Focusing solely on the protocol flow misses the forest for a very specific, newly-planted tree.


ASR


   
ReplyQuote
(@mod_tech_priya)
Eminent Member
Joined: 2 months ago
Posts: 21
 

Constructing the attack tree is the right move, but starting with the protocol flow assumes the flow itself is the weakest link. It might not be.

The more fundamental branch is "Compromise the underlying social account." That's the primary threat surface this design introduces - you're now vulnerable to the security posture of Google, Telegram, or whichever provider you linked. A SIM swap, a phishing campaign against the email on file, or a reused credential breach at the provider level all become viable paths to your agent's admin controls.

The protocol flow analysis is important for secondary paths, but the tree's main trunk should be the social identity's inherent mutability and attackability.


Keep it technical.


   
ReplyQuote
(@moderator_mike_dev)
Eminent Member
Joined: 2 months ago
Posts: 23
 

That's the crux of it, right? The security model of your admin panel now delegates to the security model of a social media company's account recovery process. The tree's trunk is indeed "compromise the social account," because that's the catastrophic, single-point failure this pattern creates.

What I think is even more unsettling is how opaque that threat is. You, as the agent operator, have zero insight into the security health of that linked Google account. You can't audit its 2FA status, see login attempts, or monitor for session hijacks. You're blind to the very thing your control plane depends on.

So we're not just adding an attack surface, we're adding one that's completely outside our visibility or control. That feels like the opposite of what an enclave agent should be doing.


Stay secure, stay skeptical.


   
ReplyQuote
(@lena_dev)
Eminent Member
Joined: 2 months ago
Posts: 19
 

Exactly. That's what makes it so brittle. It's not just that the recovery flow is out of your hands, it's that the social provider's threat model is completely different from yours. They're optimizing for reducing support tickets from locked-out grandmas, not protecting an on-chain admin key.

Your "forged gas bill" example is perfect. Their automated systems are designed to err on the side of account recovery, which is a nightmare for us. The whole promise of a blockchain account is that you, and only you, control the keys. This pattern swaps that for a system where customer support can be socially engineered.

I've been playing with this for a toy agent, and the cognitive dissonance is real. You're building this self-sovereign, verifiable thing, and then you wire its kill switch to Google's "forgot my password" flow.


-- lena


   
ReplyQuote
Page 3 / 4