{"id":21644552,"url":"https://github.com/samsung/fluff","last_synced_at":"2025-04-11T18:25:26.209Z","repository":{"id":78613538,"uuid":"179000603","full_name":"Samsung/Fluff","owner":"Samsung","description":"A tool designed to synthesise semantically correct JavaScript snippets given arbitrary data.  Useful for fuzzing.","archived":false,"fork":false,"pushed_at":"2023-04-07T10:25:43.000Z","size":90,"stargazers_count":54,"open_issues_count":3,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-11T18:25:20.829Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Samsung.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-04-02T04:46:01.000Z","updated_at":"2024-10-09T14:25:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"9d79cd13-fa60-4a71-a2a0-bf474e4c1aca","html_url":"https://github.com/Samsung/Fluff","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samsung%2FFluff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samsung%2FFluff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samsung%2FFluff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samsung%2FFluff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Samsung","download_url":"https://codeload.github.com/Samsung/Fluff/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248456377,"owners_count":21106607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-25T05:40:54.361Z","updated_at":"2025-04-11T18:25:26.176Z","avatar_url":"https://github.com/Samsung.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fluff\nA tool designed to synthesise semantically correct JavaScript snippets given arbitrary data.\n\nUseful for fuzzing.\n\n# JS Runtimes supported out-of-the-box\n* [jerryscript](https://github.com/pando-project/jerryscript)\n* [njs](https://hg.nginx.org/njs)\n* [duktape](https://duktape.org/download.html)\n* [v8](https://v8.dev/)\n\n# Requirements\n* docker\n* make\n\n# Building\n* (optional) Check if you have access to docker (run ```docker info```)\n* (optional) Specify desired version of JS runtime in ```Makefile.conf```\n* Run ```make (jerryscript | njs | duktape | v8)```\n* If everything builds correctly the process will result in:\n    * build/fluff_* - binary to fuzz\n    * build/fluff_*_dry - binary that will convert Fluff bytecode to JS testcase (stdout)\n    * build/grammars\n        * js_grammar.yaml - es5.1 grammar file\n        * js_grammar_es6.yaml - es6 grammar file\n\n# Usage\nTypical fuzzing setup:\n\n* Create input folder and sample testcase, i.e. ```mkdir in \u0026\u0026 echo \"420\" \u003e\u003e in/testcase```\n* Start fuzzing using `afl-fuzz`, for example: `afl-fuzz -m none -i in -o out ./fluff_njs @@ js_grammar.yaml`\n* (optional) you can use build container to run fuzzing, requires some manual work\n```\ndocker run -it -d -v path/to/fluff/repository/build:/home/build/fluff identifier /bin/bash\ndocker exec -it container_number bash\n# afl-fuzz is preinstalled in /home/build/afl\n```\n\n* Enjoy your cup of tea/coffee and wait for crashes\n\n# Description\nDetailed information about the design of Fluff can be read in the [whitepaper](https://i.blackhat.com/asia-19/Fri-March-29/bh-asia-Dominiak-Efficient-Approach-to-Fuzzing-Interpreters-wp.pdf).\n\n# Contributing\nPatches, additions and other contributions are welcome! If you see a feature which you could implement or a bug which you could fix please send us a message or a pull request. If you have found some interesting bug with this tool, please leave us a message/github issue for the future Hall Of Fame.\n\n# Contact\nIf you want to drop us a message, feel free to send a mail to \u003cm.dominiak@samsung.com\u003e or \u003cw.rauner@samsung.com\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamsung%2Ffluff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamsung%2Ffluff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamsung%2Ffluff/lists"}