federicodotta / Brida

The new bridge between Burp Suite and Frida!
MIT License
1.61k stars 206 forks source link

It will cause burpsuite to get stuck. #118

Open p1v07 opened 1 year ago

p1v07 commented 1 year ago

I don't know how to reproduce, but I have used arthas to diagnose and the output is like:

[arthas@23411]$ thread -n 1
"AWT-EventQueue-0" Id=41 cpuUsage=87.38% deltaTime=176ms time=781634ms RUNNABLE
    at java.desktop@19.0.2/java.awt.EventQueue.removeSourceEvents(EventQueue.java:1238)
    at java.desktop@19.0.2/java.awt.Component.removeNotify(Component.java:7160)
    at java.desktop@19.0.2/java.awt.Container.removeNotify(Container.java:2851)
    at java.desktop@19.0.2/javax.swing.JComponent.removeNotify(JComponent.java:4864)
    at java.desktop@19.0.2/javax.swing.text.JTextComponent.removeNotify(JTextComponent.java:1658)
    at java.desktop@19.0.2/java.awt.Container.removeNotify(Container.java:2835)
    at java.desktop@19.0.2/javax.swing.JComponent.removeNotify(JComponent.java:4864)
    at java.desktop@19.0.2/java.awt.Container.removeNotify(Container.java:2835)
    at java.desktop@19.0.2/java.awt.Container.remove(Container.java:1235)
    at java.desktop@19.0.2/java.awt.Container.remove(Container.java:1293)
    at java.desktop@19.0.2/javax.swing.text.ComponentView.setComponentParent(ComponentView.java:314)
    at java.desktop@19.0.2/javax.swing.text.ComponentView.setParent(ComponentView.java:257)
    at java.desktop@19.0.2/javax.swing.text.html.EditableView.setParent(EditableView.java:115)
    at java.desktop@19.0.2/javax.swing.text.CompositeView.replace(CompositeView.java:192)
    at java.desktop@19.0.2/javax.swing.text.View.updateChildren(View.java:1129)
    at java.desktop@19.0.2/javax.swing.text.View.removeUpdate(View.java:749)
    at java.desktop@19.0.2/javax.swing.text.FlowView.removeUpdate(FlowView.java:277)
    at java.desktop@19.0.2/javax.swing.text.View.forwardUpdateToView(View.java:1238)
    at java.desktop@19.0.2/javax.swing.text.View.forwardUpdate(View.java:1171)
    at java.desktop@19.0.2/javax.swing.text.BoxView.forwardUpdate(BoxView.java:241)
    at java.desktop@19.0.2/javax.swing.text.View.removeUpdate(View.java:755)
    at java.desktop@19.0.2/javax.swing.text.View.forwardUpdateToView(View.java:1238)
    at java.desktop@19.0.2/javax.swing.text.View.forwardUpdate(View.java:1171)
    at java.desktop@19.0.2/javax.swing.text.BoxView.forwardUpdate(BoxView.java:241)
    at java.desktop@19.0.2/javax.swing.text.View.removeUpdate(View.java:755)
    at java.desktop@19.0.2/javax.swing.plaf.basic.BasicTextUI$RootView.removeUpdate(BasicTextUI.java:1725)
    at java.desktop@19.0.2/javax.swing.plaf.basic.BasicTextUI$UpdateHandler.removeUpdate(BasicTextUI.java:1993)
    at java.desktop@19.0.2/javax.swing.text.AbstractDocument.fireRemoveUpdate(AbstractDocument.java:285)
    at java.desktop@19.0.2/javax.swing.text.AbstractDocument.handleRemove(AbstractDocument.java:652)
    at java.desktop@19.0.2/javax.swing.text.AbstractDocument.remove(AbstractDocument.java:620)
    at java.desktop@19.0.2/javax.swing.JEditorPane.setText(JEditorPane.java:1475)
    at burp.BurpExtender$47.run(BurpExtender.java:5050)
    at java.desktop@19.0.2/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop@19.0.2/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    at java.desktop@19.0.2/java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.desktop@19.0.2/java.awt.EventQueue$4.run(EventQueue.java:714)
    at java.base@19.0.2/java.security.AccessController.executePrivileged(AccessController.java:776)
    at java.base@19.0.2/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base@19.0.2/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop@19.0.2/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at java.desktop@19.0.2/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop@19.0.2/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop@19.0.2/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop@19.0.2/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop@19.0.2/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop@19.0.2/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

and console output null

p1v07 commented 1 year ago

More details:

java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "line" is null      
        at burp.BurpExtender$15.run(BurpExtender.java:2530)                                       

java.lang.OutOfMemoryError: Java heap space
        at java.desktop/javax.swing.text.GapContent.getPositionsInRange(GapContent.java:755)
        at java.desktop/javax.swing.text.GapContent$RemoveUndo.<init>(GapContent.java:932)
        at java.desktop/javax.swing.text.GapContent.remove(GapContent.java:159)
        at java.desktop/javax.swing.text.AbstractDocument.handleRemove(AbstractDocument.java:645)
        at java.desktop/javax.swing.text.AbstractDocument.remove(AbstractDocument.java:620)
        at java.desktop/javax.swing.JEditorPane.setText(JEditorPane.java:1475)
        at burp.BurpExtender$47.run(BurpExtender.java:5066)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
        at java.base/java.security.AccessController.executePrivileged(AccessController.java:776)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

The pyroServerProcess exit is not handled properly, resulting in the while loop of stderrThread always running setText function, resulting in memory overflow.

federicodotta commented 5 months ago

Hi @p1v07,

There was a bug in the Kill Server button that did not work correctly. I don't know if can be related with your issue but can you try with last pre-release version on Brida published on Github?

Thank you. Federico