Go to Top

Arachni Framework v1.5 & WebUI v0.5.11 release

Hello all,

It’s been a while since the last release, mostly because one of the most crucial parts of the system (the HTML parser) has been completely rewritten and the browser has been upgraded to a more recent version. However, the system has now been sufficiently tested by enough people to be released as stable.

As usual, let’s walk though the most important changes.


A new executable is now available, called arachni_reproduce, that let’s you reproduce all issues in a report and then create a new report containing only the issues that still exist.

So, if you’ve got an Arachni report and are working to fix all the identified issues, you can just pass that report to arachni_reproduce and get immediate feedback as to how you’re doing instead of having to rerun a full scan.

For each run, arachni_reproduce will generate a new report that only includes unfixed issues, so, again, you won’t have to waste time testing issues that you’ve already fixed.

In addition to that, you can specify individual issues to be reproduced, based on their digest, if you only care about particular issues rather than the entire report.

Lastly, during the reproduction of each issue, extra HTTP request headers are set that contain information about which issue is being reproduced, thus allowing you to set server-side debugging or instrumentation in order to make fixing it even easier:

  • X-Arachni-Issue-Replay-Id: Unique token for requests pertaining to individual issues.
    • Differs for each run and can be used to group requests for each issue together.
  • X-Arachni-Issue-Seed: Seed payload used to identify the original issue.
    • Initial payload used to identify the vulnerability in the given report.
  • X-Arachni-Issue-Digest: Digest uniquely identifying each issue across scans and reports.

Debugging Rack-based webapps (Ruby-on-Rails, Sinatra etc.)

Followers of this blog may remember an old post showcasing an IAST project I was working on some time ago, called the Arachni Introspector.

Based on the same principles, a subset of that functionality has now been introduced as a new project that let’s you debug Ruby web applications like Ruby-on-Rails, Sinatra and anything else that is based on the Rack framework.

Eventually, I hope to combine the 2 and make available the functionality of the Introspector, which would be pretty cool because last time I checked there are no other IAST systems for Ruby web applications.



  • The target URL no longer accepts any loopback interface due to a browser restriction. This means that localhost and IP addresses starting with 127. won’t work at all. However, if you want to scan a local target you can still use the local hostname of your machine.
  • The --http-cookie-string option has been changed to only accept Set-Cookie style strings.


  • --http-authentication-type —  Previously this was handled automatically by libcurl but in some cases explicit configuration turned out to be necessary
  • --scope-dom-event-limit — Limits the amount of DOM events to be triggered for each DOM depth.
  • --daemon-friendly — Disables status screen to allow the system to be run in the background.


  • Upgraded to the latest (currently v2.1.1) PhantomJS version.
  • Sometimes browser jobs froze due to abruptly closed SSL connections, this issue has been fixed.
  • Support for WebSockets has been added.
  • Support for web applications that set Content-Security-Policy has been added, previously this caused the custom JS environment to not be loaded.
  • Several areas that affect performance have been improved by being rewritten from Ruby to JavaScript in order to be run directly in the browser.
  • Timed-out jobs are now retried rather than be ignored.

New HTML parser

Up until now, Arachni was using the Nokogiri Ruby library to parse pages, which is basically a very nice Ruby interface for libxml — both of which are very good and widely used projects.

However, in my search for a faster and more lightweight alternative I came across an optimized XML/HTML parser called Ox, and the results speak for themselves really.

For a huge page — about 1MB of HTML code:

For a large page — about 43KB of HTML code:

For a medium page — about 10KB of HTML code:

For a small page — about 364B of HTML code:

i/s means iterations per second, and as you can see Ox is hugely faster, thus allowing Arachni to use less resources overall and also allow it to handle huge pages (very rare but it happens) with relative ease.

In addition to the above, Arachni now builds its own document tree using SAX, allowing it to ignore irrelevant HTML elements and only store interesting ones like forms and links, while not wasting valuable resources on junk.

Lastly, I’d like to sincerely thank Peter Ohler (the Ox developer and maintainer) for his assistance and remarkable willingness to accommodate my need for some unusual features.

Session management

Session management has been updated to support clicking a specific form button to perform the login rather than submitting the form.



  • proxybind_address default switched to, breaks SSL interception on MS Windows.
  • metrics
    • Fixed a nil error.
    • Added more HTTP and Browser Cluster metrics.
  • email_notify
    • Added support for non-authenticated SMTP configuration.
    • Default to afr report.
    • Retry on failure.


  • webhook_notify — Sends a webhook payload over HTTP at the end of the scan.
  • rate_limiter — Rate limits HTTP requests.
  • page_dump — Dumps page data to disk as YAML.



  • XSS checks have been updated to only perform checks on HTML content-type responses to avoid FPs.
  • SQL injection checks have been updated with more SQL server error messages.
  • Unvalidated redirect checks have been updated with more payloads.
  • Path traversal has had its payload traversal limit increased.


  • Backup files now ignore media files to avoid FPs.
  • Backup directories adds remarks to issues explaining how the original resource name was manipulated.

That’s all folks, I hope that you’ll enjoy the release and that you’ll forgive the extended delay.


Tasos L.

, , , , , ,

About Tasos Laskos

CEO of Sarosys LLC, founder and lead developer of Arachni.

5 Responses to "Arachni Framework v1.5 & WebUI v0.5.11 release"

  • fabio nigi
    February 1, 2017 - 4:04 pm Reply

    great work! can’t wait to test it out in the next pentest !

    • Tasos Laskos
      February 2, 2017 - 4:30 pm Reply

      The comments section isn’t the right place to ask for support:

  • Sander
    March 9, 2017 - 6:00 pm Reply

    Great work as usual Tasos! and thanks for your quick responses on my case.

    I’ve got 2 questions:
    Is there an estimate on the support with regards to NTLMv2; because one of our internal servers for ADFS only supports v2.

    I’m sticking to my current build with some customizations (which I’m going to diff/local git). Or is there also a major difference between v1.5 of Arachni and the nightlies of the last month?

    • Tasos Laskos
      March 9, 2017 - 6:02 pm Reply

      1. I don’t think there’ll be support for that because libcurl doesn’t support it.
      2. Not really.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.