Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
gha-lab-b1fe4918c0 — 認可されたセキュリティ研究ラボ: CVE-2025-32958 (GHSA-8c7v-vccv-cx4q) の再現 — Adept の remoteBuild.yml (AdeptLanguage/Adept @ 6a64554 のスナップショット) により GITHUB_TOKEN がワークフロー成果物に漏洩 | Kitploit
ツール/GitHubGitHub/pvharmo2/gha-lab-b1fe4918c0
脆弱性分析サプライチェーンセキュリティ学習と教育厳選リソース
GitHubpvharmo2/gha-lab-b1fe4918c0

gha-lab-b1fe4918c0

認可されたセキュリティ研究ラボ: CVE-2025-32958 (GHSA-8c7v-vccv-cx4q) の再現 — Adept の remoteBuild.yml (AdeptLanguage/Adept @ 6a64554 のスナップショット) により GITHUB_TOKEN がワークフロー成果物に漏洩

リポジトリを見る
201ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

自動生成された研究アーティファクト — 上流プロジェクトではありません。

このリポジトリは、ラヴァル大学の修士論文のために、公開されているGitHub Actionsワークフローの脆弱性を再現する目的で、自動化ハーネスによって構築された使い捨てラボです。これは、コミット6a6455463213dabe52d49ceaaebd1f13cfee9018(2025-04-01)時点のAdeptLanguage/Adeptの逐語的なスナップショットであり、そのプロジェクト自身のライセンスの下で再配布されています。そのライセンスファイルは、このスナップショットに変更を加えずに含まれています。

上流プロジェクトは関与しておらず、決して標的にはなりません。ここで研究されている脆弱性はすでに公開されています。このリポジトリ内のすべてのシークレットと変数は、ランダムに生成されたダミー値であり、実際の認証情報は存在しません。アクション参照とランナーイメージは、2025-04-01時点で解決されたものに固定されています。スナップショットに加えられたすべての変更については、ハーネス出力のpinning.mdを参照してください。

質問や異議がある場合: [email protected]


Adept

汎用プログラミングのための驚異的に高速な言語。

Windows用Adept v2.7をダウンロード

MacOS用Adept v2.7をダウンロード

Adept v2.7クロスコンパイル拡張機能をダウンロード

リソース

Adept v2.7ドキュメント

Adept v2.7言語サーバー

Adept v2.7標準ライブラリ

Adept v2.7 国産・外部ライブラリの利用

Adept v2.7 MacOS Homebrew Tap

Adept v2.7 Vimプラグイン

Adept v2.7 Vim最小限構文ハイライト

Adept v2.7 VSCode構文ハイライト

Adept v2.7 VSCode言語サーバー

Adept v2.7 Sublime Text構文ハイライト

Adept v2.7 Geany構文ハイライト

コマンドラインでの使用方法

adept [filename] [options]

  • filename - デフォルトは 'main.adept'
  • options - 二次的なコンパイラオプション

複数のバージョンがインストールされている場合は、adeptの代わりにadept2-7を使用することもできます。

基本機能

Hello World

import basics

func main {
    print("Hello World!")
}

変数

import basics

func main {
    name String = "Alan"
    age int = 36
    height uint = 189
    
    print("Name is " + name)
    print("Age is " + age)
    print("Height is " + height + " cm")
}

関数

import basics

func main {
    greet("Alice")
}

func greet(name String) {
    print("Hello " + name)
}

レコード

import basics

record Person (name String, age int) {
    func print {
        print(this.name + " is " + this.age + " years old")
    }
}

func main {
    Person("John Smith", 36).print()
}

構造体

import basics

struct Configuration (
    filename String,
    numBatteries int,
    numPorts int,
){
    constructor(filename String) {
        this.filename = filename.commit()
        this.numBatteries = 4
        this.numPorts = 10
    }
}

func toString(config Configuration) String {
    return config.filename + ":" + config.numBatteries + ":" + config.numPorts
}

func main {
    print(Configuration("settings.config"))
}

ポインタ

import basics

func main {
    x, y int = 0

    x++
    y++
    addOneTo(&x)

    print("x = " + x)
    print("y = " + y)
}

func addOneTo(pointerToNumber *$T~__number__) {
    (*pointerToNumber)++
}

条件分岐とループ

import basics

func main {
    name String = scan("What is your name? ")
    age int = scanInt("How old are you? ")
    
    // If conditional
    if name == "Isaac" {
        print("Hello Isaac :)")
    } else {
        print("Nice to meet you " + name)
    }
    
    // Unless conditional
    unless age > 21 {
        print("You are too young to drink")
    }
    
    // While loops
    while age < 18 {
        print("**birthday**")
        age += 1
    }
    
    print("You are now old enough to smoke")
    
    // Until loops
    until age >= 21 {
        print("**birthday**")
        age += 1
    }
    
    print("You are now old enough to drink")
}

リスト

import basics

record Invitation (to, from String, priority int)

func main {
    invites <Invitation> List
    invites.add(Invitation("Isaac", "Peter", 4))
    invites.add(Invitation("Mr. Smith", "Mrs. Smith", 12))
    invites.add(Invitation("James", "Paul", 3))

    each Invitation in invites {
        printf("invites[%zu] = %S\n", idx, toString(it))
    }
}

func toString(invite Invitation) String {
    return invite.to + " invited " + invite.from + " with priority " + invite.priority
}

所有権

/*
    For values that use ownership-based memory management
    (e.g. String, List, Grid)
    
    we must transfer ownership if we want to keep them
    alive for longer than their owner's scope
*/

import basics

func main {
    everyone <String> List = getEveryoneAttending()
    
    each fullname String in everyone {
        print("=> " + fullname)
    }
}

func getEveryoneAttending() <String> List {
    everyone <String> List

    person1 String = getFullnameReturnImmediately("Alice", "Golden")
    person2 String = getFullnameStoreAndThenLaterReturn("Bob", "Johnson")

    // Commit ownership of strings held by 'person1' and 'person2'
    // to be managed by the list
    everyone.add(person1.commit())
    everyone.add(person2.commit())

    // Commit ownership of the list to the caller
    return everyone.commit()
}

func getFullnameReturnImmediately(firstname, lastname String) String {
    // '.commit()' is not necessary here
    return firstname + " " + lastname
}

func getFullnameStoreAndThenLaterReturn(firstname, lastname String) String {
    fullname String = firstname + " " + lastname
    
    // Ownership of the result is held by 'fullname',
    // so we must transfer ownership to the caller in order
    // to keep it alive after this function returns

    // '.commit()' is necessary here
    return fullname.commit()
}

ループラベル

import basics

func main {
    print(makeNumericSkewer())
    print(makeAlphabetSkewer())
}

func makeNumericSkewer String {
    // Example output: `0-2-4-6-8-10-13-16-19-22-25-28`

    skewer String

    while continue preparing {
        skewer.append(skewer.length)

        if skewer.length < 30 {
            skewer.append("-")
            continue preparing
        }
    }

    return skewer.commit()
}

func makeAlphabetSkewer String {
    // Example output: `a-c-e-g-i-k-m-o-q-s-u-w-y`

    skewer String

    while still_making_skewer : skewer.length < 30 {
        skewer.append('a'ub + skewer.length as ubyte)

        if skewer[skewer.length - 1] == 'y'ub {
            break still_making_skewer
        }

        skewer.append("-")
    }

    return skewer.commit()
}

名前付き式とグローバル変数

import basics

// Will be re-evaluated with each use
define GREETING = "Welcome"
define STRANGER_NAME = "guest"
define WELCOME_MESSAGE = GREETING + " " + STRANGER_NAME + "!"

// Will only be evaluated once when the program starts
ARCH_STRING String = #get __arm64__ ? "arm64" : #get __x86_64__ ? "x86_64" : "other"

func main {
    print(WELCOME_MESSAGE)
    print("You are using architecture: " + ARCH_STRING)
}

低レベル動的割り当て

import 'sys/cstdio.adept'
import 'sys/cstdlib.adept'
import 'sys/cstring.adept'

func main int {
    withMallocAndFree('Will', 'Johnson')
    withNewAndDelete('John', 'Wilson')
    return 0
}

func withMallocAndFree(firstname, lastname *ubyte) void {
    // Manual C-String manipulation using malloc, free, and sprintf
    
    fullname *ubyte = malloc(strlen(firstname) + strlen(lastname) + 2)
    defer free(fullname)

    sprintf(fullname, '%s %s', firstname, lastname)
    printf('Fullname is: %s\n', fullname)
}
ツールをダウンロード