Rahul Dodhia

63 papers A* 2A 1B 1C 3Journal 46Unranked 10
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Access
Keiller Nogueira, Akram Zaytar, Wanli Ma, Ribana Roscher, Ronny Hänsch, Caleb Robinson, Anthony Ortiz, Simone Fobi, Rahul Dodhia, Juan M. Lavista Ferres, Oktay Karakus, Paul L. Rosin
2026 A* conf
AAAI
Ando Shah, Rajveer Singh, Akram Zaytar, Girmaw Abebe Tadesse, Caleb Robinson, Negar Tafti, Stephen A. Wood, Rahul Dodhia, Juan M. Lavista Ferres
2025 J jnl
CoRR
Keiller Nogueira, Akram Zaytar, Wanli Ma, Ribana Roscher, Ronny Hänsch, Caleb Robinson, Anthony Ortiz, Simone Fobi Nsutezo, Rahul Dodhia, Juan M. Lavista Ferres, Oktay Karakus, Paul L. Rosin
2025 conf
CVPR Workshops
Burak Ekim, Girmaw Abebe Tadesse, Caleb Robinson, Gilles Quentin Hacheme, Michael Schmitt, Rahul Dodhia, Juan M. Lavista Ferres
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Girmaw Abebe Tadesse, Caleb Robinson, Charles Mwangi, Esther Maina, Joshua Nyakundi, Luana Marotti, Gilles Quentin Hacheme, Seyed Hamed Alemohammad, Rahul Dodhia, Juan M. Lavista Ferres
2025 J jnl
CoRR
Isaac Corley, Simone Fobi Nsutezo, Anthony Ortiz, Caleb Robinson, Rahul Dodhia, Juan M. Lavista Ferres, Peyman Najafirad
2025 A* conf
AAAI
Hannah Kerner, Snehal Chaudhari, Aninda Ghosh, Caleb Robinson, Adeel Ahmad, Eddie Choi, Nathan Jacobs, Chris Holmes, Matthias Mohr, Rahul Dodhia, Juan M. Lavista Ferres, Jennifer Marcus
2025 J jnl
CoRR
Gilles Quentin Hacheme, Girmaw Abebe Tadesse, Caleb Robinson, Akram Zaytar, Rahul Dodhia, Juan M. Lavista Ferres
2025 J jnl
CoRR
Caleb Robinson, Anthony Ortiz, Allen Kim, Rahul Dodhia, Andrew Zolli, Shivaprakash K. Nagaraju, James Oakleaf, Joseph Kiesecker, Juan M. Lavista Ferres
2025 conf
WACV (Workshops)
Amrita Gupta, Anthony Ortiz, Simone Fobi Nsutezo, Duncan Kebut, Seema Iyer, Rahul Dodhia, Juan M. Lavista Ferres
2025 conf
TerraBytes
Akram Zaytar, Caleb Robinson, Girmaw Abebe Tadesse, Gilles Quentin Hacheme, Tammy Glazer, Anthony Ortiz, Rahul Dodhia, Juan M. Lavista Ferres
2025 J jnl
CoRR
Akram Zaytar, Caleb Robinson, Girmaw Abebe Tadesse, Tammy Glazer, Gilles Quentin Hacheme, Anthony Ortiz, Rahul Dodhia, Juan M. Lavista Ferres
2025 A conf
WACV
Simone Fobi Nsutezo, Amrita Gupta, Duncan Kebut, Seema Iyer, Luana Marotti, Rahul Dodhia, Juan M. Lavista Ferres, Anthony Ortiz
2025 J jnl
CoRR
Ando Shah, Rajveer Singh, Akram Zaytar, Girmaw Abebe Tadesse, Caleb Robinson, Negar Tafti, Stephen A. Wood, Rahul Dodhia, Juan M. Lavista Ferres
2025 J jnl
CoRR
Tammy Glazer, Gilles Quentin Hacheme, Akram Zaytar, Luana Marotti, Amy Michaels, Girmaw Abebe Tadesse, Kevin White, Rahul Dodhia, Andrew Zolli, Inbal Becker-Reshef, Juan M. Lavista Ferres, Caleb Robinson
2025 J jnl
CoRR
Yixi Xu, Al-Rahim Habib, Graeme Crossland, Hemi Patel, Chris Perry, Kris Bock, Tony Lian, William B. Weeks, Rahul Dodhia, Juan M. Lavista Ferres, Narinder Pal Singh
2025 J jnl
Behav. Inf. Technol.
Kevin T. Greene, Mayana Pereira, Nilima Pisharody, Rahul Dodhia, Juan M. Lavista Ferres, Jacob N. Shapiro
2025 conf
TerraBytes
Caleb Robinson, Kimberly T. Goetz, Christin B. Khan, Meredith Sackett, Kathleen Leonard, Rahul Dodhia, Juan M. Lavista Ferres
2025 J jnl
CoRR
Caleb Robinson, Kimberly T. Goetz, Christin B. Khan, Meredith Sackett, Kathleen Leonard, Rahul Dodhia, Juan M. Lavista Ferres
2024 J jnl
CoRR
Shadab Ahamed, Yixi Xu, Ingrid Bloise, Joo H. O, Carlos F. Uribe, Rahul Dodhia, Juan M. Lavista Ferres, Arman Rahmim
2024 conf
STAI@IJCAI
Girmaw Abebe Tadesse, Caleb Robinson, Gilles Quentin Hacheme, Akram Zaytar, Rahul Dodhia, Tsering Wangyal Shawa, Juan M. Lavista Ferres, Emmanuel H. Kreike
2024 J jnl
CoRR
Girmaw Abebe Tadesse, Caleb Robinson, Gilles Quentin Hacheme, Akram Zaytar, Rahul Dodhia, Tsering Wangyal Shawa, Juan M. Lavista Ferres, Emmanuel H. Kreike
2024 J jnl
CoRR
Akram Zaytar, Caleb Robinson, Gilles Quentin Hacheme, Girmaw Abebe Tadesse, Rahul Dodhia, Juan M. Lavista Ferres, Lacey F. Hughey, Jared A. Stabach, Irene Amoke
2024 J jnl
CoRR
Burak Ekim, Girmaw Abebe Tadesse, Caleb Robinson, Gilles Quentin Hacheme, Michael Schmitt, Rahul Dodhia, Juan M. Lavista Ferres
2024 J jnl
CoRR
Hannah Kerner, Snehal Chaudhari, Aninda Ghosh, Caleb Robinson, Adeel Ahmad, Eddie Choi, Nathan Jacobs, Chris Holmes, Matthias Mohr, Rahul Dodhia, Juan M. Lavista Ferres, Jennifer Marcus
2024 J jnl
CoRR
Girmaw Abebe Tadesse, Caleb Robinson, Charles Mwangi, Esther Maina, Joshua Nyakundi, Luana Marotti, Gilles Quentin Hacheme, Hamed Alemohammad, Rahul Dodhia, Juan M. Lavista Ferres
2024 J jnl
IEEE Trans. Dependable Secur. Comput.
Mayana Pereira, Rahul Dodhia, Hyrum S. Anderson, Richard Brown
2024 J jnl
CoRR
Simone Fobi Nsutezo, Amrita Gupta, Duncan Kebut, Seema Iyer, Luana Marotti, Rahul Dodhia, Juan M. Lavista Ferres, Anthony Ortiz
2024 J jnl
CoRR
Andrés Hernández, Zhongqi Miao, Luisa Vargas, Rahul Dodhia, Juan M. Lavista Ferres
2024 conf
CVPR Workshops
Isaac Corley, Caleb Robinson, Rahul Dodhia, Juan M. Lavista Ferres, Peyman Najafirad
2024 J jnl
CoRR
Caleb Robinson, Isaac Corley, Anthony Ortiz, Rahul Dodhia, Juan M. Lavista Ferres, Peyman Najafirad
2024 J jnl
CoRR
Akram Zaytar, Girmaw Abebe Tadesse, Caleb Robinson, Eduardo G. Bendito, Medha Devare, Meklit Chernet, Gilles Quentin Hacheme, Rahul Dodhia, Juan M. Lavista Ferres
2024 C conf
IGARSS
Gilles Quentin Hacheme, Akram Zaytar, Girmaw Abebe Tadesse, Caleb Robinson, Rahul Dodhia, Juan M. Lavista Ferres, Stephen A. Wood
2024 J jnl
CoRR
Gilles Quentin Hacheme, Akram Zaytar, Girmaw Abebe Tadesse, Caleb Robinson, Rahul Dodhia, Juan M. Lavista Ferres, Stephen A. Wood
2023 B conf
Image Processing
Shadab Ahamed, Yixi Xu, Ingrid Bloise, Joo Hyun O, Carlos F. Uribe, Rahul Dodhia, Juan M. Lavista Ferres, Arman Rahmim
2023 J jnl
CoRR
Mayana Pereira, Meghana Kshirsagar, Sumit Mukherjee, Rahul Dodhia, Juan M. Lavista Ferres, Rafael de Sousa
2023 J jnl
Comput. Biol. Medicine
Yixi Xu, Ivan S. Klyuzhin, Sara Harsini, Anthony Ortiz, Shun Zhang, François Bénard, Rahul Dodhia, Carlos F. Uribe, Arman Rahmim, Juan M. Lavista Ferres
2023 J jnl
CoRR
Shadab Ahamed, Yixi Xu, Claire Gowdy, Joo Hyun O, Ingrid Bloise, Don Wilson, Patrick Martineau, François Bénard, Fereshteh Yousefirizi, Rahul Dodhia, Juan M. Lavista Ferres, William B. Weeks, Carlos F. Uribe, Arman Rahmim
2023 J jnl
CoRR
Zalan Fabian, Zhongqi Miao, Chunyuan Li, Yuanhan Zhang, Ziwei Liu, Andrés Hernández, Andrés Montes-Rojas, Rafael Escucha, Laura Siabatto, Andrés Link, Pablo Arbeláez, Rahul Dodhia, Juan M. Lavista Ferres
2023 J jnl
CoRR
Mayana Pereira, Kevin T. Greene, Nilima Pisharody, Rahul Dodhia, Jacob N. Shapiro, Juan M. Lavista Ferres
2023 C conf
COMPASS
Simone Fobi, Manuel Cardona, Elliott Collins, Caleb Robinson, Anthony Ortiz, Tina Sederholm, Rahul Dodhia, Juan M. Lavista Ferres
2023 J jnl
CoRR
Simone Fobi Nsutezo, Manuel Cardona, Elliott Collins, Caleb Robinson, Anthony Ortiz, Tina Sederholm, Rahul Dodhia, Juan M. Lavista Ferres
2023 conf
ICCV (Workshops)
Caleb Robinson, Simone Fobi Nsutezo, Anthony Ortiz, Tina Sederholm, Rahul Dodhia, Cameron Birge, Kasie Richards, Kris Pitcher, Paulo Duarte, Juan M. Lavista Ferres
2023 J jnl
CoRR
Caleb Robinson, Simone Fobi Nsutezo, Anthony Ortiz, Tina Sederholm, Rahul Dodhia, Cameron Birge, Kasie Richards, Kris Pitcher, Paulo Duarte, Juan M. Lavista Ferres
2023 J jnl
CoRR
Isaac A. Corley, Caleb Robinson, Rahul Dodhia, Juan M. Lavista Ferres, Peyman Najafirad
2022 J jnl
CoRR
Md Nasir, Tina Sederholm, Anshu Sharma, Sundeep Reddy Mallu, Sumedh Ranjan Ghatage, Rahul Dodhia, Juan M. Lavista Ferres
2022 conf
CVPR Workshops
Caleb Robinson, Anthony Ortiz, Hogeun Park, Nancy Lozano-Gracia, Jon Kher Kaw, Tina Sederholm, Rahul Dodhia, Juan M. Lavista Ferres
2022 J jnl
CoRR
Caleb Robinson, Anthony Ortiz, Hogeun Park, Nancy Lozano-Gracia, Jon Kher Kaw, Tina Sederholm, Rahul Dodhia, Juan M. Lavista Ferres
2022 J jnl
Trans. Mach. Learn. Res.
Yixi Xu, Sumit Mukherjee, Xiyang Liu, Shruti Tople, Rahul Dodhia, Juan M. Lavista Ferres
2022 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Anthony Ortiz, Weiyushi Tian, Tenzing Chogyal Sherpa, Finu Shrestha, Mir Matin, Rahul Dodhia, Juan M. Lavista Ferres, Kris Sankaran
2022 conf
ICDM (Workshops)
Shahrzad Gholami, Caleb Robinson, Anthony Ortiz, Siyu Yang, Jacopo Margutti, Cameron Birge, Rahul Dodhia, Juan M. Lavista Ferres
2021 J jnl
Ecol. Informatics
Ming Zhong, Ruth Taylor, Naomi Bates, Damian Christey, Hari Basnet, Jennifer Flippin, Shane Palkovitz, Rahul Dodhia, Juan M. Lavista Ferres
2021 J jnl
CoRR
Mayana Pereira, Meghana Kshirsagar, Sumit Mukherjee, Rahul Dodhia, Juan M. Lavista Ferres
2021 C conf
AIES
Meghana Kshirsagar, Caleb Robinson, Siyu Yang, Shahrzad Gholami, Ivan S. Klyuzhin, Sumit Mukherjee, Md Nasir, Anthony Ortiz, Felipe Oviedo, Darren Tanner, Anusua Trivedi, Yixi Xu, Ming Zhong, Bistra Dilkina, Rahul Dodhia, Juan M. Lavista Ferres
2021 J jnl
CoRR
Meghana Kshirsagar, Caleb Robinson, Siyu Yang, Shahrzad Gholami, Ivan S. Klyuzhin, Sumit Mukherjee, Md Nasir, Anthony Ortiz, Felipe Oviedo, Darren Tanner, Anusua Trivedi, Yixi Xu, Ming Zhong, Bistra Dilkina, Rahul Dodhia, Juan M. Lavista Ferres
2021 J jnl
CoRR
Anusua Trivedi, Alyssa Suhm, Prathamesh Mahankal, Subhiksha Mukuntharaj, Meghana D. Parab, Malvika Mohan, Meredith Berger, Arathi Sethumadhavan, Ashish Jaiman, Rahul Dodhia
2021 conf
EMBC
Anusua Trivedi, Mohit Jain, Nikhil Kumar Gupta, Markus Hinsche, Prashant Singh, Markus Matiaschek, Tristan Behrens, Mirco Militeri, Cameron Birge, Shivangi Kaushik, Archisman Mohapatra, Rita Chatterjee, Rahul Dodhia, Juan M. Lavista Ferres
2021 J jnl
CoRR
Anusua Trivedi, Mohit Jain, Nikhil Kumar Gupta, Markus Hinsche, Prashant Singh, Markus Matiaschek, Tristan Behrens, Mirco Militeri, Cameron Birge, Shivangi Kaushik, Archisman Mohapatra, Rita Chatterjee, Rahul Dodhia, Juan M. Lavista Ferres
2021 J jnl
CoRR
Anusua Trivedi, Jocelyn Desbiens, Ron Gross, Sunil Gupta, Rahul Dodhia, Juan M. Lavista Ferres
2021 J jnl
CoRR
Mayana Pereira, Allen Kim, Joshua Allen, Kevin White, Juan M. Lavista Ferres, Rahul Dodhia
2020 J jnl
Ecol. Informatics
Jack LeBien, Ming Zhong, Marconi Campos-Cerqueira, Julian P. Velev, Rahul Dodhia, Juan M. Lavista Ferres, T. Mitchell Aide
2020 J jnl
CoRR
Anusua Trivedi, Sreya Muppalla, Shreyaan Pathak, Azadeh Mobasher, Pawel Janowski, Rahul Dodhia, Juan M. Lavista Ferres
2020 J jnl
CoRR
Mayana Pereira, Rahul Dodhia, Richard Brown
redb/extractors/js_extractors/js_suspicious_apis.py
← Index redb/extractors/js_extractors/js_suspicious_apis.py python
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.js_extractor import JSExtractor
from redb.extractors.js_extractors.js_patterns import CATEGORIES, PATTERNS


# Backwards-compatible export: `{category: [(raw_pattern_string, api_name), ...]}`
# in canonical PATTERNS insertion order (code_execution, network, filesystem,
# process, registry, crypto_encoding, dom_manipulation). Kept so external
# callers (notably JSDeobfuscationExtractor pre-cleanup) keep working until
# they are migrated to PATTERNS directly.
SUSPICIOUS_APIS: "dict[str, list[tuple[str, str]]]" = {}
for _name, _compiled in PATTERNS.items():
    SUSPICIOUS_APIS.setdefault(CATEGORIES[_name], []).append((_compiled.pattern, _name))


class JSSuspiciousAPIsExtractor(JSExtractor):

    def __init__(
        self, filepath, log, exporters=None, index_prefix=None,
        known_benign=False, known_malicious=False, source=None, context=None,
    ):
        super().__init__(
            filepath, log, exporters, index_prefix,
            known_benign, known_malicious, source, context=context,
        )
        self.api_findings = None
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.JS_SUSPICIOUS_APIS.value

    def _get_context_snippet(self, line, max_len=200):
        """Get a truncated context snippet around a match."""
        line = line.strip()
        if len(line) > max_len:
            return line[:max_len] + "..."
        return line

    def extract(self):
        src = self.js_source
        if not src:
            return None

        # Pass 1: shared per-sample scan over the raw source. The dict contains
        # entries for both PATTERNS and FEATURE_PATTERNS; the loop below only
        # consults PATTERNS keys, so feature-only entries are ignored.
        raw_scan = self._context.scan or {}
        raw_lines = self.lines

        # Pass 2: same patterns over the deobfuscated text, when the
        # deobfuscator produced something meaningfully different. APIs hidden
        # behind one obfuscation layer (Vjw0rm-style array.join + eval,
        # Dean-Edwards packers, jjencode, ...) only surface here. The scan is
        # cached on JSContext so JSDeobfuscationExtractor (which computes the
        # new_apis_found diff) reuses the same result.
        deobf_scan = self._context.scan_deobfuscated
        if deobf_scan:
            deobf_text, _ = self._context.deobfuscated
            deobf_lines = deobf_text.splitlines()
        else:
            deobf_lines = []

        findings = []
        # Iterate PATTERNS in canonical order so output is deterministic and
        # matches the historical category/pattern ordering. For each api_name,
        # raw findings take precedence; if an API is found only in the
        # deobfuscated text, we surface it as a row tagged revealed_by_deobf=1
        # with line numbers / snippets pulled from the deobfuscated source.
        for api_name in PATTERNS:
            raw_info = raw_scan.get(api_name)
            if raw_info:
                line_numbers = raw_info["lines"]
                lines_for_snippets = raw_lines
                revealed_by_deobf = 0
            else:
                deobf_info = deobf_scan.get(api_name)
                if not deobf_info:
                    continue
                line_numbers = deobf_info["lines"]
                lines_for_snippets = deobf_lines
                revealed_by_deobf = 1

            snippets = [
                self._get_context_snippet(lines_for_snippets[ln - 1])
                for ln in line_numbers[:3]
                if 0 < ln <= len(lines_for_snippets)
            ]
            findings.append({
                "api_name": api_name,
                "api_category": CATEGORIES[api_name],
                # Historical semantics: count = number of unique lines with a
                # match, not total in-source match count.
                "call_count": len(line_numbers),
                "line_numbers": line_numbers,
                "context_snippet": " | ".join(snippets),
                "revealed_by_deobf": revealed_by_deobf,
            })

        if not findings:
            return None

        self.api_findings = findings
        return findings

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ClickHouseExporter":
            if not self.api_findings:
                return None

            current_time = datetime.now(timezone.utc)
            data = []
            for f in self.api_findings:
                data.append([
                    self.sha256,
                    f['api_name'],
                    f['api_category'],
                    f['call_count'],
                    f['line_numbers'],
                    f['context_snippet'],
                    f['revealed_by_deobf'],
                    current_time,
                ])

            column_names = [
                "sha256", "api_name", "api_category",
                "call_count", "line_numbers", "context_snippet",
                "revealed_by_deobf",
                "analysis_date",
            ]

            column_type_names = [
                "FixedString(64)", "String", "LowCardinality(String)",
                "UInt32", "Array(UInt32)", "String",
                "UInt8",
                "DateTime64(3, 'UTC')",
            ]

            return (data, column_names, column_type_names)

    def get_clickhouse_table(self) -> str:
        return "redb_js_suspicious_apis"