Research
Security News
Kill Switch Hidden in npm Packages Typosquatting Chalk and Chokidar
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
A Python package for extracting and detecting malicious JavaScript syntax through atomic and molecule search.
Atomic Search is a Python package for detecting malicious JavaScript syntax through an atomic and molecule search approach. This package is designed to handle obfuscated JavaScript code using techniques like concatenation and syntax splitting, making it effective for detecting target syntax even when the code is heavily obfuscated.
invoke
commands.Ensure you are using Python 3.7 or newer.
Clone the repository:
git clone https://github.com/aflinxh/atomic_search.git
cd atomic_search
Install the package using pip
:
pip install .
For development, install additional dependencies:
pip install .[dev]
Here’s an example of using Atomic Search to detect JavaScript syntax:
from atomic_search import atomic_search
# List of target words to detect
target_words = ["getElementById", "addEventListener"]
# Example search space, which is obfuscated JavaScript code
search_space = "some obfuscated JavaScript code"
# Define minimum atom size and molecule similarity
min_atom_size = 2 # minimum atom size
molecule_similarity = {"getElementById": "90%", "addEventListener": "-2"} # tolerance or similarity level
# Run the atomic search
results = atomic_search(target_words, search_space, min_atom_size, molecule_similarity, logs=True)
# Display the results
print("Search Results:", results)
atomic_search
Function Parameterstarget_words
: List of strings representing the target syntax to detect.search_space
: The JavaScript string to analyze.min_atom_size
: Minimum atom size required for validity.molecule_similarity
: Dictionary setting the similarity or tolerance for each target.logs
: Set to True
to display logs.The project has the following structure:
atomic_search/
├── atomic_search.py # Main function for atom and molecule search
├── extract_atoms.py # Module for atom extraction
├── form_molecule.py # Module to form molecules from atoms
└── __init__.py # Package initializer
tasks.py # Task automation with Invoke
utils/ # Utility scripts for managing logs and datasets
tests/ # Test directory
README.md # This documentation
pyproject.toml # Project metadata
setup.py # Installation configuration
This project uses invoke
to manage development tasks, which are defined in tasks.py
. Here are some commonly used commands:
Clear Logs: Removes all log files from the logs directory.
invoke clear-logs
Clear Datasets: Removes all datasets from the dataset directory.
invoke clear-datasets
Generate Datasets: Generates datasets with an optional num_samples
argument.
invoke generate-datasets --num-samples=100
This project uses pytest
for running tests and invoke
to manage and simplify test execution. Here are the available test commands using invoke
:
Run Atom Tests: Runs tests for extract_atoms.py
located in tests/test_extract_atoms.py
. You can optionally specify a particular file to test and enable logs.
invoke test-atoms --file-name="sample.js" --show-logs
--file-name
: Specifies the JavaScript file to use for testing.--show-logs
: Enables detailed logging during the test.Run Molecule Tests: Runs tests for form_molecule.py
located in tests/test_form_molecule.py
. You can optionally specify a file name and enable logs.
invoke test-molecule --file-name="sample.js" --show-logs
--file-name
: Specifies the JavaScript file to use for testing.--show-logs
: Enables detailed logging during the test.Run Atomic Search Tests: Runs tests for the atomic_search
function located in tests/test_atomic_search.py
. You can specify a file name and enable logs, similar to the other test commands.
invoke test-atomic --file-name="sample.js" --show-logs
--file-name
: Specifies the JavaScript file to use for testing.--show-logs
: Enables detailed logging during the test.To run all tests in the tests/
directory, you can use pytest
directly:
pytest tests/
These invoke
commands allow you to run targeted tests with specific options for more control during development and debugging.
Contributions are welcome! Follow these steps to contribute:
git checkout -b new-feature
).git commit -m 'Add new feature'
).git push origin new-feature
).This project is licensed under the MIT License - see the LICENSE file for details.
FAQs
A Python package for extracting and detecting malicious JavaScript syntax through atomic and molecule search.
We found that atomic-search demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.