GNU bug report logs - #51885
Blacksmith - Rowhammer Fuzzer

Previous Next

Package: guix-patches;

Reported by: Raghav Gururajan <rg <at> raghavgururajan.name>

Date: Mon, 15 Nov 2021 23:59:02 UTC

Severity: normal

Done: Nicolas Goaziou <mail <at> nicolasgoaziou.fr>

Bug is archived. No further changes may be made.

Full log


Message #26 received at 51885 <at> debbugs.gnu.org (full text, mbox):

From: Raghav Gururajan <rg <at> raghavgururajan.name>
To: 51885 <at> debbugs.gnu.org
Cc: Raghav Gururajan <rg <at> raghavgururajan.name>
Subject: [PATCH 4/4] gnu: Add blacksmith.
Date: Tue, 30 Nov 2021 23:29:27 -0500
* gnu/packages/cybersecurity.scm (blacksmith): New variable.
---
 gnu/packages/cybersecurity.scm | 78 ++++++++++++++++++++++++++++++++++
 1 file changed, 78 insertions(+)

diff --git a/gnu/packages/cybersecurity.scm b/gnu/packages/cybersecurity.scm
index e4614e908e..e096c41fd6 100644
--- a/gnu/packages/cybersecurity.scm
+++ b/gnu/packages/cybersecurity.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2020 Jakub Kądziołka <kuba <at> kadziolka.net>
 ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2021 c4droid <c4droid <at> foxmail.com>
+;;; Copyright © 2021 Raghav Gururajan <rg <at> raghavgururajan.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,10 +21,14 @@
 
 (define-module (gnu packages cybersecurity)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system python)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages engineering)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages python-crypto)
@@ -32,6 +37,79 @@ (define-module (gnu packages cybersecurity)
   #:use-module (gnu packages bioinformatics)      ;python-intervaltree
   #:use-module (gnu packages emulators))
 
+(define-public blacksmith
+  (let ((commit "c8e65b709a83665f9528efdedcf064abdb04859f")
+        (revision "0"))
+    (package
+      (name "blacksmith")
+      (version
+       (git-version "0.0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/comsec-group/blacksmith")
+           (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0kyp71wndf527dgza5iks5m5vj543mvxp5w7cjd8x0pilmd1xrls"))
+         (modules '((guix build utils)))
+         (snippet
+          `(begin
+             (delete-file-recursively "external")
+             (substitute* "CMakeLists.txt"
+               (("add_subdirectory\\(external\\)") "")
+               (("[ \t]*FetchContent_MakeAvailable\\(asmjit\\)")
+                (string-append "find_package(asmjit)\n"
+                               "find_package(nlohmann_json)")))
+             #t))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:tests? #f                    ;no test-suite
+         #:imported-modules
+         ((guix build copy-build-system)
+          ,@%cmake-build-system-modules)
+         #:modules
+         (((guix build copy-build-system)
+           #:prefix copy:)
+          (guix build cmake-build-system)
+          (guix build utils))
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-build
+             (lambda _
+               (substitute* "CMakeLists.txt"
+                 ;; Use default C++ standard instead.
+                 (("cxx_std_17") "")
+                 ;; This project tries to link argagg library,
+                 ;; which doesn't exist, as argagg project
+                 ;; is a single header file.
+                 (("argagg") ""))))
+           (replace 'install
+             (lambda args
+               (apply (assoc-ref copy:%standard-phases 'install)
+                      #:install-plan
+                      '(("." "bin"
+                         #:include ("blacksmith"))
+                        ("." "lib"
+                         #:include-regexp ("\\.a$")))
+                      args))))))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)))
+      (inputs
+       `(("argagg" ,argagg)
+         ("asmjit" ,asmjit)
+         ("json" ,json)))
+      (home-page "https://comsec.ethz.ch/research/dram/blacksmith")
+      (synopsis "Rowhammer fuzzer with non-uniform and frequency-based patterns")
+      (description "Blacksmith is an implementation of Rowhammer fuzzer that
+crafts novel non-uniform Rowhammer access patterns based on the concepts of
+frequency, phase, and amplitude.  It is able to bypass recent
+@acronym{TRR, Target Row Refresh}in-DRAM mitigations effectively and as such can
+could trigger bit flips.")
+      (license license:expat))))
+
 (define-public ropgadget
   (package
     (name "ropgadget")
-- 
2.34.0





This bug report was last modified 3 years and 128 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.