<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kohei Tamura</title>
    <description>The latest articles on DEV Community by Kohei Tamura (@ktamura).</description>
    <link>https://dev.to/ktamura</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F44152%2F36cb07b9-2837-47d3-99e7-2b26a3420b89.png</url>
      <title>DEV Community: Kohei Tamura</title>
      <link>https://dev.to/ktamura</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ktamura"/>
    <language>en</language>
    <item>
      <title>Memory leak, redirect loop, deadlock, XSS, CSRF, XEE, ..., understanding bugs by using too buggy web application</title>
      <dc:creator>Kohei Tamura</dc:creator>
      <pubDate>Wed, 14 Nov 2018 05:14:12 +0000</pubDate>
      <link>https://dev.to/ktamura/memory-leak-redirect-loop-deadlock-xss-csrf-xee--understanding-bugs-by-using-too-buggy-web-application-2gmn</link>
      <guid>https://dev.to/ktamura/memory-leak-redirect-loop-deadlock-xss-csrf-xee--understanding-bugs-by-using-too-buggy-web-application-2gmn</guid>
      <description>&lt;p&gt;If you start developing a web application, you will probably face many problems. For example, memory leak, redirect loop, deadlock, connection leak and so on. In case unexpected trouble happen, you may need to understand bugs and learn/practice how to troubleshoot them in advance. In addtion, you may also need to learn how to prevent vulnerabilities, for example, XSS, SQL injection, CSRF, XEE and so on.&lt;/p&gt;

&lt;p&gt;So I created &lt;a href="https://github.com/k-tamura/easybuggy" rel="noopener noreferrer"&gt;a too buggy web application&lt;/a&gt; which can intentionally reproduce many problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Troubles&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memory Leak (Java heap space)&lt;/li&gt;
&lt;li&gt;Memory Leak (PermGen space/Metaspace)&lt;/li&gt;
&lt;li&gt;Memory Leak (C heap space)&lt;/li&gt;
&lt;li&gt;Deadlock (Java)&lt;/li&gt;
&lt;li&gt;Deadlock (SQL)&lt;/li&gt;
&lt;li&gt;Endless Waiting Process&lt;/li&gt;
&lt;li&gt;Infinite Loop&lt;/li&gt;
&lt;li&gt;Redirect Loop&lt;/li&gt;
&lt;li&gt;Forward Loop&lt;/li&gt;
&lt;li&gt;JVM Crash&lt;/li&gt;
&lt;li&gt;Network Socket Leak&lt;/li&gt;
&lt;li&gt;Database Connection Leak&lt;/li&gt;
&lt;li&gt;File Descriptor Leak &lt;/li&gt;
&lt;li&gt;Thread Leak &lt;/li&gt;
&lt;li&gt;Mojibake&lt;/li&gt;
&lt;li&gt;Integer Overflow&lt;/li&gt;
&lt;li&gt;Round Off Error&lt;/li&gt;
&lt;li&gt;Truncation Error&lt;/li&gt;
&lt;li&gt;Loss of Trailing Digits&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Vulnerabilities&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;XSS (Cross-Site Scripting)&lt;/li&gt;
&lt;li&gt;SQL Injection&lt;/li&gt;
&lt;li&gt;LDAP Injection&lt;/li&gt;
&lt;li&gt;Code Injection&lt;/li&gt;
&lt;li&gt;OS Command Injection (OGNL Expression Injection)&lt;/li&gt;
&lt;li&gt;Mail Header Injection&lt;/li&gt;
&lt;li&gt;Null Byte Injection&lt;/li&gt;
&lt;li&gt;Extension Unrestricted File Upload&lt;/li&gt;
&lt;li&gt;Size Unrestricted File Upload&lt;/li&gt;
&lt;li&gt;Open Redirect&lt;/li&gt;
&lt;li&gt;Brute-force Attack&lt;/li&gt;
&lt;li&gt;Session Fixation Attacks&lt;/li&gt;
&lt;li&gt;Verbose Login Error Messages&lt;/li&gt;
&lt;li&gt;Dangerous File Inclusion&lt;/li&gt;
&lt;li&gt;Directory Traversal&lt;/li&gt;
&lt;li&gt;Unintended File Disclosure&lt;/li&gt;
&lt;li&gt;CSRF (Cross-Site Request Forgery)&lt;/li&gt;
&lt;li&gt;XEE (XML Entity Expansion)&lt;/li&gt;
&lt;li&gt;XXE (XML eXternal Entity)&lt;/li&gt;
&lt;li&gt;Clickjacking&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Performance Degradation&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slow Regular Expression Parsing&lt;/li&gt;
&lt;li&gt;Delay of creating string due to +(plus) operator&lt;/li&gt;
&lt;li&gt;Delay due to unnecessary object creation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Java Errors&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AssertionError&lt;/li&gt;
&lt;li&gt;ExceptionInInitializerError&lt;/li&gt;
&lt;li&gt;FactoryConfigurationError&lt;/li&gt;
&lt;li&gt;GenericSignatureFormatError&lt;/li&gt;
&lt;li&gt;NoClassDefFoundError&lt;/li&gt;
&lt;li&gt;OutOfMemoryError (Java heap space) &lt;/li&gt;
&lt;li&gt;OutOfMemoryError (Requested array size exceeds VM limit)&lt;/li&gt;
&lt;li&gt;OutOfMemoryError (unable to create new native thread)&lt;/li&gt;
&lt;li&gt;OutOfMemoryError (GC overhead limit exceeded)&lt;/li&gt;
&lt;li&gt;OutOfMemoryError (PermGen space)&lt;/li&gt;
&lt;li&gt;OutOfMemoryError (Direct buffer memory)&lt;/li&gt;
&lt;li&gt;StackOverflowError&lt;/li&gt;
&lt;li&gt;TransformerFactoryConfigurationError&lt;/li&gt;
&lt;li&gt;UnsatisfiedLinkError&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://github.com/k-tamura/easybuggy/releases/latest/" rel="noopener noreferrer"&gt;the latest release page&lt;/a&gt; and download &lt;code&gt;easybuggy.jar&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Run the command: &lt;code&gt;$ java -jar easybuggy.jar&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Access to &lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;This demo shows: &lt;br&gt;
Start up -&amp;gt; Infinite Loop -&amp;gt; LDAP Injection -&amp;gt; UnsatisfiedLinkError -&amp;gt; BufferOverflowException -&amp;gt; Deadlock -&amp;gt; Memory Leak -&amp;gt; JVM Crash (Shut down)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fhtbk1s3lniudreb26dje.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fhtbk1s3lniudreb26dje.gif" alt="demo" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Warning
&lt;/h2&gt;

&lt;p&gt;This application can cause severe memory leaks or increase CPU usage rate and make your computer unstable. So I recommend that you run it on your VM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other versions
&lt;/h2&gt;

&lt;p&gt;EasyBuggy is implemented in Java Servlet 3.0 and old technologies. You can also use other versions you like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/k-tamura/easybuggy4sb" rel="noopener noreferrer"&gt;EasyBuggy Boot&lt;/a&gt;: EasyBuggy clone build on Spring Boot &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/k-tamura/easybuggy4kt" rel="noopener noreferrer"&gt;EasyBuggy Bootlin&lt;/a&gt;: EasyBuggy clone build on Spring Boot and written in Kotlin&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/k-tamura/easybuggy4django" rel="noopener noreferrer"&gt;EasyBuggy Django&lt;/a&gt;: EasyBuggy clone build on Django 2 and written in Python 3&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>security</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
