Opened 5 years ago

Last modified 8 months ago

#12836 new defect

scramblesuit: 'State' object has no attribute 'closingThreshold'

Reported by: asn Owned by:
Priority: Medium Milestone:
Component: Archived/Obfsproxy Version:
Severity: Normal Keywords:
Cc: phw, yawning Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

Got this with on a bridge with obfsproxy-0.2.11:

[ERROR] Unhandled Error
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/python/log.py", line 88, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/python/log.py", line 73, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/python/context.py", line 118, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/python/context.py", line 81, in callWithContext
    return func(*args,**kw)
--- <exception caught here> ---
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/internet/posixbase.py", line 614, in _doReadOrWrite
    why = selectable.doRead()
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/internet/tcp.py", line 215, in doRead
    return self._dataReceived(data)
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/internet/tcp.py", line 221, in _dataReceived
    rval = self.protocol.dataReceived(data)
  File "/usr/local/lib/python2.7/dist-packages/obfsproxy-0.2.11-py2.7.egg/obfsproxy/network/network.py", line 320, in dataReceived
    self.circuit.dataReceived(self.buffer, self)
  File "/usr/local/lib/python2.7/dist-packages/obfsproxy-0.2.11-py2.7.egg/obfsproxy/network/network.py", line 161, in dataReceived
    self.transport.receivedDownstream(data)
  File "/usr/local/lib/python2.7/dist-packages/obfsproxy-0.2.11-py2.7.egg/obfsproxy/transports/scramblesuit/scramblesuit.py", line 495, in receivedDownstream
    if self.drainedHandshake > self.srvState.closingThreshold:
exceptions.AttributeError: 'State' object has no attribute 'closingThreshold'

Child Tickets

Change History (4)

comment:1 Changed 5 years ago by yawning

I believe this is a problem that occurs when a bridge is upgraded. The state object (scramblesuit/state.py) uses pickling and currently does not have code generate the parameter in question when a pre-existing state object is loaded from disk. It is relatively simple to add the appropriate code to load().

FWIW, the exception is triggered after a handshake has no possible hope of succeeding (and this only affects pre-existing bridges that upgrade) so it's probably not a huge priority, though bridges that display this error will be somewhat more vulnerable to active attacks (The point where the bridge gives up being static is a distinguishes of sorts).

comment:2 Changed 23 months ago by teor

Severity: Normal

Set all open tickets without a severity to "Normal"

comment:3 Changed 9 months ago by teor

Owner: asn deleted
Status: newassigned

asn does not need to own any obfuscation tickets any more. Default owners are trouble.

comment:4 Changed 8 months ago by cohosh

Status: assignednew

tickets are unassigned, reverting to 'new'

Note: See TracTickets for help on using tickets.